如何使用PyQT4快速缩略300张图片?
我正在开发一个书籍装订应用程序,为了让它看起来更好,我在每一页上添加了一个缩略图。当你拖入页面时,这个功能运行得很好,但有一个问题,就是当我一次拖入整本书(比如说400张图片)时,程序会完全卡住,直到处理完所有的图片。
这是我简单的拖放代码:
def fileDropped(self, file):
f = str(file[-1])
if os.path.splitext(f)[1][1:] != 'tif':
reply = QtGui.QMessageBox.question(self, 'Message', 'All files must be TIF images. Would you like me to convert a copy of your file to the TIF format?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
if not os.path.exists('./djvu_backup/'): os.mkdir('./djvu_backup/')
if f not in self.getChildren(self.ui.pageList): # It's a custom method. It does what it looks like it does.
icon = QtGui.QIcon(f)
pixmap = icon.pixmap(72, 72)
icon = QtGui.QIcon(pixmap)
item = QtGui.QListWidgetItem(f, self.ui.pageList)
item.setIcon(icon)
item.setStatusTip(f)
return True
另外,作为一个附带的问题,正如你在代码中看到的,f = str(file[-1])
。每次调用这个方法时,我都需要从我拖入的文件数组中选择最后一个元素,因为这个方法会对每个拖入的文件都调用,即使它们是一次性拖入的。有没有什么原因或者解决办法呢?
谢谢!
2 个回答
0
我知道这个问题很简单,但你有没有想过用一个进度条,让用户看到程序在处理的时候,即使看起来好像卡住了?
5
你可以尝试让缩略图生成得更快,但这样做只是会增加你在发现问题之前可以放入书籍的大小。解决办法有两个:要么只在页面显示的时候生成缩略图,要么把缩略图生成的工作放到后台线程中,等每个缩略图生成完再更新显示。