OSError: cannot open resource(pillow錯誤處理)


https://www.jianshu.com/p/c64ae3e9b196

pillow使用備忘之OSError: cannot open resource錯誤處理

在使用pillow過程中,Python程序出現了:OSError: cannot open resource提示。

 
pillow出錯提示
  File "E:\06_python\python_demo\MyBlog\web\views\account.py", line 89, in test2
    img, code = create_validate_code()
  File "E:\06_python\python_demo\MyBlog\utils\check_code.py", line 92, in create_validate_code
    strs = create_strs()
  File "E:\06_python\python_demo\MyBlog\utils\check_code.py", line 80, in create_strs
    font = ImageFont.truetype(font_type, font_size)
  File "C:\Users\ic\AppData\Local\Programs\Python\Python35\lib\site-packages\PIL\ImageFont.py", line 280, in truetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
  File "C:\Users\ic\AppData\Local\Programs\Python\Python35\lib\site-packages\PIL\ImageFont.py", line 145, in __init__
    layout_engine=layout_engine)
OSError: cannot open resource
[11/May/2019 15:07:57] "GET /test2.html HTTP/1.1" 500 92941
Performing system checks...

 

經查此類是常見的字體問題。
在Windows環境,字體一般位於C:\WINDOWS\Fonts文件夾下。用戶可以到此文件夾中查看Python程序中指定的字體是否存在。

 
Windows的字體文件夾

 

實踐出真知:
字體名稱英文大小寫要一致;
字體名稱是英文的,不是中文。
如簡體黑體常規程序中對應的字體名稱為simhei.ttf,而簡體仿宋常規對應的字體名為simfang.ttf
Python程序中直接寫類似華文行楷.ttf、微軟簡粗黑.TTF等中文名稱的字體會出錯。

查看對應字體英文名稱的方法很簡單,我們可以選中相應字體,右擊屬性項即可找到。

 
查看字體的英文名稱

從此圖可以看出,簡體華文新魏字體對應的英文名稱為: STXINWEI.TTF,這個英文名用於Python程序才正確。
還有另一種情況:
Python程序沒有提示出錯,但中文文字無法正常顯示(中文輸出顯示成空白方框),則需要更換支持中文的字體。

 

以上是我實踐的結論,可以供臨時解決上述出錯問題。
但出錯背后的機制,我仍未掌握,歡迎高手交流指正。


免責聲明!

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



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