gpt4 book ai didi

python - QWebView 欠采样 SVG 渲染

转载 作者:IT老高 更新时间:2023-10-28 20:56:07 26 4
gpt4 key购买 nike

我想将 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

最佳答案

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

代码将是这样的(未检查):

QWebPage page
QWebFrame frame = page.mainFrame()
frame.load(url)
frame.render(painter)

关于python - QWebView 欠采样 SVG 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6002621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com