PIL Image模塊 show函數無法正常顯示圖片


環境: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM