画像にテキストを配置するプログラムを作成しようとしていますが、PILを回避しようとしてエラーが発生しました:OSError:リソースを開けません。これは私の最初のpythonプログラムなので、エラーが明らかな場合はおaび申し上げます。
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
im = Image.open("example.jpg")
font_type = ImageFont.truetype("Arial.ttf", 18)
draw = ImageDraw.Draw(im)
draw.text(xy=(50, 50), text= "Text One", fill =(255,69,0), font = font_type)
im.show()
エラーが表示されます:
Traceback (most recent call last):
File "C:\Users\laurence.maskell\Desktop\attempt.py", line 7, in <module>
font_type = ImageFont.truetype("Arial.ttf", 18)
File "C:\Python34\lib\site-packages\PIL\ImageFont.py", line 259, in truetype
return FreeTypeFont(font, size, index, encoding, layout_engine)
File "C:\Python34\lib\site-packages\PIL\ImageFont.py", line 143, in __init__
self.font = core.getfont(font, size, index, encoding,
layout_engine=layout_engine)
OSError: cannot open resource
PIL 5.3.0を搭載したWindows 10 Proでもこの問題に遭遇しました。
私のマシンでは、このエラーは非ASCIIフォントファイル名が原因です。 ASCII文字のみを含むようにフォント名を変更すると、エラーなしでフォントを開くことができます。
編集(2019-07-29):これは確かに ImageFont.truetype()
メソッドのバグ そしてそれ このプルリクエスト で修正されました。
from PIL import Image,ImageDraw,ImageFontim = Image.open("mak.png")
font_type = ImageFont.truetype("arial.ttf", 18)
draw = ImageDraw.Draw(im)
draw.text(xy=(120, 120), text= "download the font that you wanna use", fill =(255,69,0), font = font_type)
im.show()
その「arial.ttf」ではなく「Arial.ttf」
ダウンロードへのリンク arial.ttfフォントです。
PILは指定されたフォントを見つけることができません。存在していること、および大文字と小文字がまったく同じ名前であることを確認してください。プロジェクトフォルダーに直接コピーすることもできます。
フォントがインストールされていなかったため、私にとってはうまくいきませんでした。ここで与えられた答えのおかげで、今では動作します。インストールを行うことができます こちら