今天我一直在努力应对这个挑战,我已经成功地利用以前的帖子和其他资源得到了一个很好的观点。
我正在尝试将 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 64 位上,使用 python 3.4 与 PyQt4 和 pillow 3.1.0。我得到的结果如下所示。
原图
GUI中显示的图片
提前致谢:)。
最佳答案
在您的 PIL 图像中,最后一个波段是 alpha channel ,而在 Qt 图像中,alpha 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/