QSvgRenderer分段错误

时间:2010-06-29 20:11:14

标签: python qt pyqt segmentation-fault pyqt4

我意识到这样的具体问题不是很好,但我花了几天时间试图解决这个问题。希望有人可以提供帮助。

使用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处的错误点(QPainterQImage中的错误点。)

svg.isValid()返回Trueqim.isNull()返回False

2 个答案:

答案 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')