从PIL到PySide QImage的更好方法?

时间:2012-11-09 05:59:16

标签: pyqt pyqt4 python-imaging-library pyside

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

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

1 个答案:

答案 0 :(得分:6)

PIL(1.6及更高版本)有一个模块ImageQt,可以很容易地将Image转换为QImage,至少为PyQt4 }。如果您还需要它与PySide一起使用,则应该对source

进行简单的更改