有同樣的問題,然後發現,這ImageQt對象不是QImages,但可以簡單地鑄造這些
#!/usr/bin/python
# -*- coding: utf-8 -*-
#written by Sebastian Stetter in 2010
import sys
from PIL import Image
from PIL.ImageQt import ImageQt
from PyQt4.QtGui import *
from PyQt4.QtCore import *
def PILimageToQImage(pilimage):
"""converts a PIL image to QImage"""
imageq = ImageQt(pilimage) #convert PIL image to a PIL.ImageQt object
qimage = QImage(imageq) #cast PIL.ImageQt object to QImage object -that´s the trick!!!
return qimage
if __name__ == "__main__":
#Testcode
app = QApplication(sys.argv)
pim = Image.open(unicode(QFileDialog().getOpenFileName()))
pim.show() #show pil image
qim = PILimageToQImage(pim)
pm = QPixmap(qim)
lbl = QLabel()
lbl.setPixmap(pm)
lbl.show() #show label with qim image
sys.exit(app.exec_())
是的,但我的計劃不應該使用像這樣的黑客,因爲PIL ImageQt.ImageQt正確地(?)將圖像轉換爲QImage,我應該能夠直接顯示它!我不知道它爲什麼顯示爲 作爲白色矩形。 – oulipo 2010-06-15 09:26:57
'loadFromData'返回一個bool指示成功或失敗,並允許您指定圖像格式。因此,它可以讓你進一步瞭解它失敗的原因。如果圖像正確加載,則沒有正確的理由在一種情況下顯示,但在另一種情況下不能顯示。理想的'ImageQt'會給你一個有效的'QImage'。 – 2010-06-15 14:30:23