PIL ImageFont.truetype с использованием переменной приводит к ошибке: OSError: не удается открыть ресурс - PullRequest
0 голосов
/ 17 марта 2020

У меня есть этот код:

img = Image.new('L', (26, 17), color=255)
fnt = ImageFont.truetype('/assets/david.ttf', 23)
d = ImageDraw.Draw(img)
d.text((0, -1), "hi", font=fnt, fill=100)
img.save('newimg.png')

, и он прекрасно работает.

, но я пытаюсь сделать al oop и в каждой итерации выполнить используйте другой шрифт, если я изменю эту строку:

fnt = ImageFont.truetype('/assets/david.ttf', 23)

с этим:

font_name = 'david.tff'
fnt = ImageFont.truetype('/assets/' + font_name, 23)

(даже не в al oop)

Я получаю эту ошибку :

Traceback (most recent call last):
  File ".../create_dataset.py", line 30, in <module>
    fnt = ImageFont.truetype('/assets/' + font_name, 23)
  File "...\venv\lib\site-packages\PIL\ImageFont.py", line 642, in truetype
    return freetype(font)
  File "...\venv\lib\site-packages\PIL\ImageFont.py", line 639, in freetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
  File "...\venv\lib\site-packages\PIL\ImageFont.py", line 188, in __init__
    font, size, index, encoding, layout_engine=layout_engine
OSError: cannot open resource

Почему использование переменной внутри ImageFont.truetype делает эту ошибку и как ее можно решить?

1 Ответ

0 голосов
/ 17 марта 2020

Таким образом, это заняло у меня до сих пор, но эта ошибка произошла не из-за использования переменной (которая сама по себе выглядит странно, поскольку ее можно использовать где угодно), а из-за моей ошибки:

Я использовал david.tff вместо david.ttf

...