Bit*_*rex 7 python python-imaging-library
我正在编写一个脚本,从Web下载各种图像文件,然后使用PIL对它们进行一些处理.该脚本使用urlretreive将图像转储到临时文件,现在我只是尝试使用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()
Run Code Online (Sandbox Code Playgroud)
不幸的是,虽然临时文件似乎加载正常(Image.open没有返回任何错误),但是当调用image.show()时,我在查看器中什么也得不到:

我也尝试打开本地非临时文件,以防出现问题,并获得相同的结果.操作系统是Windows Vista 32位SP2.关于可能出错的任何想法?
show()尝试start /wait使用临时图像文件上的命令执行默认图像查看器.该/wait参数应该等到查看器退出,以便可以删除该文件.不幸的是,Vista和Windows 7下的默认查看器/wait甚至在打开文件之前就没有正确响应和返回; 文件在显示之前被删除.
通常的解决方法是在PIL包中编辑ImageShow.py并添加一个额外的命令,等待几秒钟才能删除文件.这是一个kludge,但它大部分时间都有效.详情请查看velocityreviews.com和StackOverflow.
另一种解决方法是将.bmp文件格式与在返回之前正确等待的程序相关联,例如mspaint.exe.
| 归档时间: |
|
| 查看次数: |
7048 次 |
| 最近记录: |