即使在KeepAspectRatio和SmoothTransition之后,如何在QPixmap上获得更好的图像质量

时间:2019-09-13 18:23:05

标签: python pyside2 qpixmap qicon

我正在使用Qt的PySide2实现制作桌面应用程序。该应用程序需要做的就是向用户显示高质量的图像,但是当我使用QPixmap类时,图像的质量始终比来自其的JPEG文件低得多。

我通过使用QtCore.Qt.KeepAspectRatio和QtCore.Qt.SmoothTransformation标记遵循了其他人的建议,虽然确实有所帮助,但是图像的质量仍然很差,并且图像中的任何小文本都难以辨认

我正在使用此代码向用户显示图像。

pixmap = QtGui.QPixmap(os.path.join(self.imageFolder,
    imageSplit[0] + '_' + str(self.currentPageNum) + '_' + '0'))
pixmap = pixmap.scaled(self.imageWidth, self.imageHeight,
    QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
icon = QtGui.QIcon(pixmap)
self.imageIcon.setIcon(icon)

但是,如上所述,图像的质量明显低于输入的JPEG。有什么办法可以获得更高的图像质量?如果没有,如果我需要呈现给用户的更高质量的图像,您还有其他建议吗?

根据要求,这是输入图像与像素图表示形式的示例。 Input Image

After used in Pixmap

1 个答案:

答案 0 :(得分:1)

TL; DR; 使用该路径将图像上传到QIcon


QIcon可以在不使用QPixmap的情况下加载图像,并且使用paint()方法绘制图像时,它将使用该元素的几何属性对其进行缩放。

如果相反使用QPixmap对其进行缩放,则由于下采样/上采样会引入更多错误,除了对其进行平滑处理还会增加更多错误。