Windows上的Python图像库show()

Windows上的Python图像库show(),python,python-imaging-library,Python,Python Imaging Library,我正在编写一个脚本,从web下载各种图像文件,然后使用PIL对它们进行处理。该脚本使用urlRetrieve将图像转储到临时文件中,现在我正试图使用PIL image.show()方法在查看器中打开它们。以下是代码的相关部分: def main(): link_queue = Queue.Queue() image_queue = Queue.Queue() links = get_image_links('test_search') for link in links: link

我正在编写一个脚本,从web下载各种图像文件,然后使用PIL对它们进行处理。该脚本使用urlRetrieve将图像转储到临时文件中,现在我正试图使用PIL image.show()方法在查看器中打开它们。以下是代码的相关部分:

def main():

link_queue = Queue.Queue()
image_queue = Queue.Queue()

links = get_image_links('test_search')

for link in links:
    link_queue.put(link)

for image in xrange(len(links)):
    #create image downloading threads
    t = ImageDownloadingThread(link_queue, image_queue)
    t.setDaemon(True)
    t.start()

link_queue.join()

image_data = image_queue.get()
image_file, image_url = image_data[0][0], image_data[1][0] 
#get the first image downloaded and take a look
image = Image.open(image_file)
image.show()
不幸的是,虽然临时文件似乎加载正常(Image.open不返回任何错误),但调用Image.show()时,我在查看器中什么也没有得到:

我还尝试打开本地的非临时文件,以防这是问题的一部分,并得到相同的结果。操作系统是Windows Vista 32位SP2。对可能出现的问题有何看法?

show()
尝试在临时图像文件上使用
start/wait
命令执行默认图像查看器。
/wait
参数应等待查看器退出,以便删除文件。不幸的是,Vista和Windows 7下的默认查看器没有正确响应
/wait
,甚至在打开文件之前也没有返回;文件在显示之前被删除

通常的修复方法是在PIL包中编辑ImageShow.py,并添加一个额外的命令,以便在删除文件之前等待几秒钟。这是一个难题,但它在大多数情况下都有效。详情请参阅和


另一种修复方法是将
.bmp
文件格式与在返回前正确等待的程序相关联,例如mspaint.exe。

这是一个已知的问题,我正在尝试查找详细信息。请不仅仅从Windows尝试修复-其他操作系统上的图像查看器可能也有同样的问题。这可能是解决办法。