3

我的应用程序加载图像并在其上打印一些文本。然后我想将打印的图像用作按钮图标上的标签。

问题是我无法将“图像”传递给 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 文档无济于事。

4

1 回答 1

6

PIL(1.6 及更高版本)有一个模块,这使得将 an 转换为 aImageQt非常容易,至少对于. 如果您还需要它与 PySide 一起使用,它应该是对源代码的简单更改ImageQImagePyQt4

于 2012-11-14T17:39:25.273 回答