我意识到这样的具体问题不是很好,但我花了几天时间试图解决这个问题。希望有人可以提供帮助。
使用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
。
答案 0 :(得分:0)
尝试在QPixmap而不是QImage上绘制。
Qt偶尔会导致段错误,我通常只是围绕它们进行编码。 也许你可以在Gimp中光栅化这个SVG并加载它。
答案 1 :(得分: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')