環境:Win7+python 2.7.6
import Image im=Image.open('3.png') im.show()
顯示結果:
一直顯示正在加載,無法打開,或者顯示內容不存在等。
直接雙擊圖片則可正常顯示
解決辦法:(X: 為python安裝路徑,默認C盤)
X:\Python26\lib\site-packages\PIL\ImageShow.py, 第99行(附近)替換為:
return "start /wait %s && PING 127.0.0.1 -n 5 > NUL && del /f %s" % (file, file)
具體原因:(個人對參考資料翻譯結果,僅供參考,英語水平較差,可能錯誤較多,英文原版見下文參考鏈接)
在Windows XP上默認的圖像查看器能夠在阻塞工作模式-這意味着命令將一直等到圖像窗口將被關閉才執行。
因為這種行為,他們(python)創建一個命令行用來在圖像被顯示后刪除臨時文件。(見ImageShow.py 99行附近)
而Windows Vista則不一樣,一旦命令被執行它就立即返回。
因此,臨時文件會被立即刪除,圖片查看器無法擁有足夠的時間來加載這個已經被刪除的圖片。
於是,在原命令中添加一條沒用的命令(PING 127.0.0.1 -n 5 > NUL)為圖像加載爭取時間,問題解決。
參考:http://www.velocityreviews.com/forums/t707158-python-pil-and-vista-windows-7-show-not-working.html