#python #pandas #python-imaging-library
Вопрос:
Я запускаю скрипт на python для создания сертификатов. Однако я получаю эту ошибку:
Initializing Script! Traceback (most recent call last): File "Generate_certificates.py", line 31, in lt;modulegt; main() File "Generate_certificates.py", line 12, in main font = ImageFont.truetype(r".Dancing_ScriptDancingScript-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_ScriptDancingScript-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 gt;= 2: font_size = 130 width = ((W-w)/2) 75 height = ((H-h)/2)-10 font = ImageFont.truetype(r".Dancing_ScriptDancingScript-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()
Я хочу использовать пользовательский шрифт для имени, поэтому я использую шрифт сценария танца. Я проверил, нет ли где-нибудь опечаток, но все равно не могу устранить неполадки.
Комментарии:
1. попробуйте использовать абсолютный путь или
/
вместо
2. @alex Это сработало!
Ответ №1:
С помощью комментария @alex
Я изменился:
font = ImageFont.truetype(r".Dancing_ScriptDancingScript-VariableFont_wght.ttf", 150) font = ImageFont.truetype(r".Dancing_ScriptDancingScript-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)
и это сработало!