QSvgRenderer 分段错误
我知道像这样具体的问题可能不太好,但我已经花了好几天在琢磨这个问题。希望这里有人能帮我。
这段使用PyQt4的Python代码导致了一个段错误:
data = """<?xml version="1.0" ?>
<svg height="1000" width="2000">
<text>blah</text>
</svg>"""
svg = QSvgRenderer(QByteArray(data))
qim = QImage(int(width), int(height), QImage.Format_ARGB32)
painter = QPainter()
painter.begin(qim)
svg.render(painter)
painter.end()
qim.save('test2.png')
导致错误的那一行是 svg.render(painter)
。
错误指向了 libQtGui.so
(也就是说可能是 QPainter
或 QImage
里面的问题)。
svg.isValid()
返回 True
,而 qim.isNull()
返回 False
。
2 个回答
0
试着在QPixmap上绘图,而不是在QImage上。
Qt有时候会出现程序崩溃的情况,我通常会想办法绕过这些问题。也许你可以在Gimp里把这个SVG文件转换成图像,然后直接加载那个图像。
0
只需要稍微改动一下(定义宽度和高度),它就能正常运行了。需要注意的是,我看不到任何文字,但如果我把数据换成我知道是有效的内容,它就能完美运行。下面是我的完整代码:
#!/usr/bin/env python
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtSvg import *
import sys
if __name__ == '__main__':
app = QApplication(sys.argv)
data = """... (my valid svg) ..."""
svg = QSvgRenderer(QByteArray(data))
qim = QImage(int(2000), int(1000), QImage.Format_ARGB32)
painter = QPainter()
painter.begin(qim)
svg.render(painter)
painter.end()
print "null:", qim.isNull()
qim.save('test2.png')