QWebView欠采样SVG渲染

时间:2011-05-14 15:00:22

标签: python qt webkit svg pyqt

我想使用QWebView进行SVG缩略图作业,因为它支持过滤器(不同于仅支持SVG Tiny 1.2的QSvgRender)。它似乎工作得很好,除了字体渲染,但可以使用fontconfig包调整。问题是它似乎是过滤器的欠采样元素。没有滤镜的元素看起来很好而且很锐利,而那些带滤镜的元素则像素化并且模糊不清。

from  PyQt4.QtGui import *
from  PyQt4.QtCore import *
from PyQt4.QtSvg import *
from PyQt4.QtWebKit import *
import sys
import time

if __name__ == '__main__':

    app = QApplication(sys.argv)

    data = open('/home/xxx/workspace/yyy/zzz/out.svg').read()

    # svg = QSvgRenderer(QByteArray(data))
    qim = QImage(int(1024), int(768), QImage.Format_ARGB32)                                                                                                                                                                                 
    web = QWebView()
    web.setRenderHint(QPainter.SmoothPixmapTransform)
    web.setRenderHint(QPainter.Antialiasing)
    web.setRenderHint(QPainter.TextAntialiasing)
    painter = QPainter()

    def load_finished(ok):
        web.resize(1024,768)
        painter.begin(qim)
        # svg.render(painter)
        web.render(painter)
        painter.end()

        print "null:", qim.isNull()
        qim.save('test2.png')
        sys.exit()

    web.connect(web, SIGNAL('loadFinished(bool)'), load_finished)
    web.load(QUrl('file:///home/xxx/workspace/yyy/zzz/out.svg'))
    sys.exit(app.exec_())

Qt 4.7。使用Inkscape,rsvg或在Chrome,Firefox中呈现时,相同的SVG文件看起来没问题。

result

1 个答案:

答案 0 :(得分:1)

尝试使用QWebPage(非GUI渲染器)进行渲染,看看是否有帮助。我看不到任何会影响渲染的设置。

代码将是这样的(未选中):

QWebPage page
QWebFrame frame = page.mainFrame()
frame.load(url)
frame.render(painter)
相关问题