使用变量的PIL ImageFont.truetype导致错误:OSError:无法打开资源

时间:2020-03-17 13:53:21

标签: python python-imaging-library

我有此代码:

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')

它工作正常。

但是我想做的是做一个循环,如果更改此行,则在每次迭代中使用不同的字体:

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

与此:

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

(甚至不在循环中)

我收到该错误:

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 :(得分:0)

所以直到现在,我还是花了这么长时间,但是发生此错误的原因并不是因为使用了变量(由于它可以在任何地方使用,它本身看起来很怪异),而是因为我的拼写错误:

我用david.tff代替了david.ttf