PILでボールド/イタリックのテキストを描くにはどうすればよいですか? ImageFont.truetype(file、size)には、フォントサイズのみを指定するオプションがあります。太字/斜体のテキストをPILで描画しますか?
9
A
答えて
8
フォントの太字/斜体のバージョンを使用する
4
多くのフォントは太字/斜体のバージョンで異なるTTFファイルを使用しているため、そのファイルを指定するだけで動作すると思います。
1
これは私の最初のコメントです。さあ。
私は手順を明確にしようとします。最初は私がやったことは、この
font = ImageFont.truetype("C:\Windows\Fonts\\Arial Negrita.ttf",25)
のようにフォントの「名前」を使用しただけで、このようないくつかのエラーを得た:その後、私は時々フォントが他の「名前」を持っているか、ということを思い出し
Traceback (most recent call last):
File "C:/Users/555STi/PycharmProjects/PIL/img.py", line 8, in <module>
font = ImageFont.truetype("C:\Windows\Fonts\Arial negrita.ttf",25)
File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 262, in truetype
return FreeTypeFont(font, size, index, encoding)
File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 142, in __init__
self.font = core.getfont(font, size, index, encoding)
IOError: cannot open resource
を"ファイル名"なので、フォントフォルダーに行き、次にnegrita(太字)、cursiva(イタリック)などのすべてのスタイルを表示するArialフォントを開きました。
「negrita "スタイル、選択された"プロパティ "、フォントの"実名 "があります。
私の場合、名前は「ariblk」
最後に、このような名前を使用しました。
私はこの記事が古いと知っていますが、今日は解決策に手伝ってくれました。だから誰も助けてくれることを願っています。 ()何らかの理由でフォントの別の大胆なバージョンを持っていない場合は、フォント太字にする
=)
3
むしろハックソリューションは、わずかなオフセットと同じテキストを複数回印刷することです。ただ、明確にする
andaleMono = ImageFont.truetype(ANDALE_MONO_PATH,16)
text = "hello world"
mainOffset = (50,50)
xoff, yoff = mainOffset
draw.text(mainOffset,text,font=andaleMono,fill='black')
draw.text((xoff+1,yoff+1),text,font=andaleMono,fill='black')
draw.text((xoff-1,yoff-1),text,font=andaleMono,fill='black')
:書体の各バージョンは、例えば、別のファイルに来る:arial.ttfの、ArialBold.ttf、など。 – btk