Ошибка сегментации QSvgRenderer - PullRequest
0 голосов
/ 30 июня 2010

Я понимаю, что конкретные вопросы вроде этого не очень хороши, но я потратил несколько дней, пытаясь разобраться в этом. Надеюсь, кто-то здесь может помочь.

Этот код Python, использующий PyQt4, вызывает ошибку сегментации:

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 голосов
/ 30 июня 2010

С небольшим изменением для запуска (определение ширины и высоты) это работает для меня. Обратите внимание, что я не вижу никакого текста, но если я обмениваю данные на что-то, что, я знаю, действительно, это работает отлично. Вот мой полный код:

#!/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')
0 голосов
/ 30 июня 2010

Попробуйте нарисовать его на QPixmap вместо QImage.

Qt иногда вызывает segfaults, я обычно просто кодирую их. Возможно, вы могли бы растеризовать этот SVG в Gimp и просто загрузить его.

...