我有此代码:
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
中使用变量会导致此错误,以及如何解决?
答案 0 :(得分:0)
所以直到现在,我还是花了这么长时间,但是发生此错误的原因并不是因为使用了变量(由于它可以在任何地方使用,它本身看起来很怪异),而是因为我的拼写错误:
我用david.tff
代替了david.ttf