2012-01-19 61 views
6

我正在從腳本中下載各種圖像文件,然後使用PIL對它們進行一些處理。該腳本使用urlretreive將圖像轉儲到臨時文件,現在我只是試圖在使用PIL image.show()方法的查看器中打開它們。這裏是代碼的相關部分:在Windows上的Python圖像庫顯示()

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() 

不幸的是,在臨時文件似乎加載OK(Image.open不返回任何錯誤)我什麼也得不到的瀏覽器時image.show()是所謂:

enter image description here

我還試圖打開本地非臨時文件中,這是問題的一部分,並得到同樣的結果情況。操作系統是Windows Vista 32位SP2。任何想法可能會出錯?

+0

這是一個已知的問題,我試圖找到細節。 –

+1

嘗試從http://stackoverflow.com/questions/4607633/image-format-to-save-in-python – cgohlke

回答

7

show()嘗試使用臨時映像文件上的start /wait命令執行默認圖像查看器。參數/wait應該等待直到查看器退出,以便可以刪除該文件。不幸的是,Vista和Windows 7下的默認瀏覽器不能正確響應/wait,甚至在它們打開文件之前就會返回;該文件在被顯示之前被刪除。

通常的修復方法是在PIL軟件包中編輯ImageShow.py,並在刪除文件之前添加一個額外的命令以等待幾秒鐘。這是一個混亂,但它大部分時間工作。詳情請見velocityreviews.comhere at StackOverflow

解決該問題的另一種方法是將.bmp文件格式與返回前正確等待的程序相關聯,例如mspaint.exe。

+0

修復很好,謝謝! – Bitrex

+0

不僅僅是Windows - 其他操作系統上的圖像查看器可能會遇到同樣的問題。這可能是修復。 –