使用PIL将一些Qimages转换为缩略图时出现问题。 要在列表小部件中使用,请检查下面的图像
图片应如下所示:
请注意我使用水平流程,项目文本是空文本 还有一件事:这只发生在我放置超过1张图片
时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)
知道发生了什么事吗?为什么图像是像素化的?..任何更好的解决方案
编辑:使用
pix = QtGui.QPixmap(path)
pix = pix.scaled(50,50,QtCore.Qt.KeepAspectRatio)
icon = QtGui.QIcon(pix)
将是非常有问题的(运行需要10秒),而上面的代码需要1秒。
谢谢
答案 0 :(得分:1)
from io import 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替换
答案 1 :(得分: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)