繁体   English   中英

Python PIL 问题 | OSError:无法打开资源

[英]Python PIL issue | OSError: cannot open resource

我正在运行一个 python 脚本来生成证书。 但是我收到这个错误:

Initializing Script!
Traceback (most recent call last):
  File "Generate_certificates.py", line 31, in <module>
    main() 
  File "Generate_certificates.py", line 12, in main
    font = ImageFont.truetype(r".\Dancing_Script\DancingScript-VariableFont_wght.ttf", 150)
  File "/home/rohit07/.local/lib/python3.8/site-packages/PIL/ImageFont.py", line 855, in truetype
    return freetype(font)
  File "/home/rohit07/.local/lib/python3.8/site-packages/PIL/ImageFont.py", line 852, in freetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
  File "/home/rohit07/.local/lib/python3.8/site-packages/PIL/ImageFont.py", line 211, in __init__
    self.font = core.getfont(
OSError: cannot open resource 

文件夹内的文件结构为:

在此处输入图片说明

剧本:

from PIL import Image, ImageFont, ImageDraw
import pandas as pd

def main():
    print("Initializing Script!")
    names = pd.read_csv('dummy_names.csv')
    for i,row in names.iterrows():
        name = str(row['FName']) + ' ' + str(row['LName'])
        name = name.title()
        empty_img = Image.open("empty-cert.png")
        font_size = 150
        font = ImageFont.truetype(r".\Dancing_Script\DancingScript-VariableFont_wght.ttf", 150)
        W,H = empty_img.size 
        w, h = font.getsize(name)
        width = ((W-w)/2)
        height = ((H-h)/2)-50
        if W%w >= 2:
            font_size = 130
            width = ((W-w)/2) +75
            height = ((H-h)/2)-10

        font = ImageFont.truetype(r".\Dancing_Script\DancingScript-VariableFont_wght.ttf", font_size)
        image_editable = ImageDraw.Draw(empty_img)
        image_editable.multiline_text((width,height), name, (35, 57, 75), font=font)
        empty_img.save("{}.jpg".format(name.replace(" ", "_")))
        if i % 50 == 0: 
            print('Processed {} Rows'.format(i))
    print("Process Complete!")

if __name__ == "__main__":
    main() 

我想使用自定义字体作为名称,所以我使用的是Dancing Script字体。 我检查了某处是否有任何拼写错误,但仍然无法排除故障。

在@alex 评论的帮助下

我变了:

font = ImageFont.truetype(r".\Dancing_Script\DancingScript-VariableFont_wght.ttf", 150)

font = ImageFont.truetype(r".\Dancing_Script\DancingScript-VariableFont_wght.ttf", font_size)

到:

font = ImageFont.truetype(r"./Dancing_Script/DancingScript-VariableFont_wght.ttf", 150)
font = ImageFont.truetype(r"./Dancing_Script/DancingScript-VariableFont_wght.ttf", font_size)

它奏效了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM