我一直在努力应对这一挑战,我已经设法利用以前的帖子和其他资源获得了一个好点.
我正在尝试将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通道,而在Qt图像中,alpha通道是第一个(RGBA与ARGB).可能存在排列乐队的方法,但最简单的方法似乎是使用ImageQt类.
from PIL.ImageQt import ImageQt qim = ImageQt(im) pix = QtGui.QPixmap.fromImage(qim)