web-dev-qa-db-ja.com

PILの問題、OSError:リソースを開けません

画像にテキストを配置するプログラムを作成しようとしていますが、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
8

PIL 5.3.0を搭載したWindows 10 Proでもこの問題に遭遇しました。

私のマシンでは、このエラーは非ASCIIフォントファイル名が原因です。 ASCII文字のみを含むようにフォント名を変更すると、エラーなしでフォントを開くことができます。

編集(2019-07-29):これは確かに ImageFont.truetype()メソッドのバグ そしてそれ このプルリクエスト で修正されました。

6
jdhao
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フォントです。

4
Kartik

PILは指定されたフォントを見つけることができません。存在していること、および大文字と小文字がまったく同じ名前であることを確認してください。プロジェクトフォルダーに直接コピーすることもできます。

0
blackbox

フォントがインストールされていなかったため、私にとってはうまくいきませんでした。ここで与えられた答えのおかげで、今では動作します。インストールを行うことができます こちら

0
Kim Noël