2011-12-12 29 views
0

我在使用PIL將某些Qimages轉換爲縮略圖時遇到了問題。 到列表中的小部件使用,檢查以下
無法將PIL縮略圖轉換爲PYQt4圖標


enter image description here
圖像在圖像看起來應該像: enter image description here

請注意,我用橫流項目的文本一個空文本 還有一件事:這隻發生在我把多於一張圖片時

for i in listOfImages: 
    picture = Image.open(i) 

    picture.thumbnail((50,50), Image.ANTIALIAS) 
    qimage = QtGui.QImage(ImageQt.ImageQt(picture)) 
    icon = QtGui.QIcon(QtGui.QPixmap.fromImage(qimage)) 





    item = QtGui.QListWidgetItem(str(path)) 

    item.setIcon(icon) 

    self.listWidget.addItem(item) 

任何想法是怎麼回事?爲什麼圖像被pixlated ..任何更好的解決方案

編輯:?使用

pix = QtGui.QPixmap(path) 
pix = pix.scaled(50,50,QtCore.Qt.KeepAspectRatio) 
icon = QtGui.QIcon(pix) 

將是非常有問題的(需要10秒至運行),而上面的代碼需要1秒。

謝謝

+0

這是否得到解決?我有同樣的問題。謝謝 –

回答

0

我還沒有使用PIL與PyQt。你有沒有試過使用QImageReader

item = QListWidgetItem(image_path) 

    imageReader = QImageReader() 
    imageReader.setFileName(image_path) 
    size = imageReader.size() 
    size.scale(50, 50, Qt.KeepAspectRatio) 
    imageReader.setScaledSize(size) 
    image = imageReader.read() 

    pix = QPixmap.fromImage(image) 
    icon = QIcon(pix) 
    item.setIcon(icon) 
    self.listWidget.addItem(item) 
+0

太慢了。需要11秒才能運行(使用30張圖像)。我需要它能夠處理10倍以上。 –

1
從IO進口

BytesIO

圖片...

QImage的= QtGui.QImage()
FP = BytesIO()
picture.save(FP, 「BMP」)
qimage.loadFromData(fp.getvalue(), 「BMP」)

圖標...

我曾嘗試ImageQt,但表現並不好。 我參考http://doloopwhile.hatenablog.com/entry/20100305/1267782841
因爲我使用Python 3.3,cStringIO被替換爲BytesIO