You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python中PIL的ImageFont无法加载印尼字体的原因排查

解决PIL加载印尼车牌字体时的"OSError: cannot open resource"错误

遇到这个错误大概率是字体文件的路径、完整性或者权限出了问题,我整理了几个常见的排查方向和解决办法:

  • 路径问题是最常见的元凶
    很多时候我们以为路径写对了,但程序的工作目录和我们想的不一样。比如你把字体放在脚本同文件夹的fonts目录下,直接写"Indonesia License Plate.ttf"肯定找不到。建议用绝对路径来避免这个问题,比如用Python的os模块拼接路径:

    import os
    from PIL import ImageFont
    
    script_dir = os.path.dirname(os.path.abspath(__file__))
    fontpath = os.path.join(script_dir, "Indonesia License Plate.ttf")
    font = ImageFont.truetype(fontpath, int(fontsize))
    

    另外还要仔细检查文件名的拼写——别小看空格、大小写的问题!比如在Linux/macOS系统里文件名是区分大小写的,如果字体文件实际叫indonesia license plate.ttf,你写成大写开头就会报错。

  • 字体文件可能损坏或格式不对
    要是路径没问题,那先试试用系统自带的字体查看器打开这个.ttf文件,如果打不开,说明文件本身损坏了,得重新下载一份完整的。还有一种情况:有些文件后缀标了.ttf,但实际是OTF或者其他不被PIL的truetype方法支持的格式,你可以用FontForge这类工具检查一下字体的实际格式。

  • 权限问题也可能导致无法读取
    在Linux或者macOS系统里,如果字体文件没有读取权限,PIL也会报这个错。你可以在终端里给文件加读取权限:

    chmod +r "Indonesia License Plate.ttf"
    

    Windows系统如果字体放在Program Files这类受保护的文件夹里,可能需要以管理员身份运行你的Python脚本才能读取。

  • 试试升级Pillow版本
    旧版本的Pillow对某些字体的兼容性可能不太好,升级到最新版本说不定能解决问题:

    pip install --upgrade pillow
    

内容的提问来源于stack exchange,提问作者batuman

火山引擎 最新活动