到目前为止,我一直在努力应对这一挑战,利用以前的帖子和其他资源,我设法取得了一个不错的成绩。

我正在尝试将PIL.Image转换为QPixmap,以便可以在PyQT GUI上使用QgraphicsScene进行显示。但是,当显示图片时,颜色已经改变了?有没有人遇到过这个问题?

我为此使用的代码如下。

self.graphicsScene.clear()
im = Image.open('Penguins.jpg')
im = im.convert("RGBA")
data = im.tobytes("raw","RGBA")
qim = QtGui.QImage(data, im.size[0], im.size[1], QtGui.QImage.Format_ARGB32)
pix = QtGui.QPixmap.fromImage(qim)
self.graphicsScene.addPixmap(pix)
self.graphicsView.fitInView(QtCore.QRectF(0,0,im.size[0], im.size[1]), QtCore.Qt.KeepAspectRatio)
self.graphicsScene.update()

我在Windows 7 64bit上,使用python 3.4,PyQt4和枕头3.1.0。我得到的结果可以在下面看到。

原始图片

图形显示在GUI中

提前致谢 :)。

最佳答案

在您的PIL图像中,最后一个波段是Alpha channel ,而在Qt图像中,阿尔法 channel 是第一个波段(RGBA与ARGB)。可能有一些排列频段的方法,但是最简单的方法似乎是使用ImageQt类。

from PIL.ImageQt import ImageQt
qim = ImageQt(im)
pix = QtGui.QPixmap.fromImage(qim)

关于python - PIL图像到QPixmap转换问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34697559/

10-12 18:27