我想使用QWebView進行SVG縮略圖作業,因爲它支持過濾器(與僅支持SVG Tiny 1.2的QSvgRender不同)。它似乎工作得很好,除了字體渲染,但可以使用fontconfig包進行調整。問題在於它似乎是使用過濾器對元素進行欠採樣。沒有過濾器的元件看起來不錯而尖銳,而帶過濾器的元件像素化且模糊。QWebView欠採樣SVG渲染
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文件看起來不錯。
你應該張貼您的例子SVG文件進行測試。 – abbot 2011-05-17 17:31:04
和out.svg文件的網址。 – linjunhalida 2011-09-16 08:02:13