我的应用加载一张图片并在上面打印一些文本。然后我想将打印的图像用作按钮图标上的标签。
问题是我无法将“图像”传递给 QIcon 或任何 PyQt 类。我在网上找到了一种方法,该方法建议将文件作为原始字符串发送到 Qt 的解析器,并从中重建图像。
效果非常好,只是图片是蓝色的。在阅读了一些关于图像处理的内容后,我了解到要修复它,我需要移动和反转所有位,所以
data = im.convert('RGBA').tostring()
data = ''.join([''.join(i) for i in zip(data[2::4],data[1::4],data[0::4],data[3::4])])
qim = QtGui.QImage(data, im.size[0], im.size[1],
QtGui.QImage.Format_ARGB32)
pix = QtGui.QPixmap.fromImage(qim)
我的小 join/zip 魔法似乎有点不合适,我不明白为什么有必要。有一个更好的方法吗?我知道吐出 RGBA 并将其解析为 ARGB 存在一个明显的问题,但我探索了 PIL 和 PyQt 文档无济于事。
最佳答案
PIL
(1.6 及更高版本)有一个模块 ImageQt
,这使得将 Image
转换为 QImage
变得非常容易,至少对于 PyQt4
来说是这样。如果你还需要它与 PySide 一起工作,它应该是对 source 的简单更改。
关于pyqt - 从 PIL 到 PySide QImage 的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13302908/