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

How to get better image quality on QPixmaps even after KeepAspectRatio and SmoothTransition

我正在使用 Qt 的 PySide2 实现制作桌面应用程序。这个应用程序需要做的是向用户显示高质量的图像,但是当我使用 QPixmap class 时,图像的质量总是明显低于它们来自的 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。有什么办法可以获得更高的图像质量?如果没有,如果我需要向用户呈现更高质量的图像,您还有什么建议我做的吗?

根据要求,这是输入图像与其像素图表示的示例。

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


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

如果您改为使用 QPixmap 对其进行缩放,由于下采样/上采样,您将引入更多错误,除了平滑之外,它还会增加更多错误。