我的应用程序加载图像并在其上打印一些文本。然后我想将打印的图像用作按钮图标上的标签。
问题是我无法将“图像”传递给 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)
我的小加入/压缩魔术似乎有些不合时宜,我不明白为什么它是必要的。有一个更好的方法吗?我知道吐出 RGBA 并将其解析为 ARGB 存在明显的问题,但我探索了 PIL 和 PyQt 文档无济于事。