Pillowで描画した文字に枠線をつけるには、ImageDraw.text()の引数にstroke_widthとstroke_fillを指定します。
サンプルプログラム
白い文字+黒い枠線のサンプルです。
実行してみる場合は、フォントファイルのパスをMacOSとWindowsで適切に切り替えて下さい。
from PIL import Image, ImageDraw, ImageFont
# 幅300x100のRGB画像を作成
im = Image.new('RGB', (300, 100), 'white')
# 描画準備
draw = ImageDraw.Draw(im)
# フォント取得(Windows OSの場合)
font = ImageFont.truetype(
'C:/Windows/Fonts/UDDigiKyokashoN-B.ttc',
40)
# フォント取得(Mac OSの場合)
#font = ImageFont.truetype(
# '/System/Library/Fonts/ヒラギノ明朝 ProN.ttc',
# 40)
# stroke_widthとstroke_fillを指定すると
# 縁取りされた文字が描画される
draw.text(
(10, 10),
'dimaru.blog',
font=font,
fill='white',
stroke_width=4,
stroke_fill='black')
# 画像を表示
im.show()
結果
複数行テキストでも同じです
from PIL import Image, ImageDraw, ImageFont
# 幅300x100のRGB画像を作成
im = Image.new('RGB', (300, 100), 'white')
# 描画準備
draw = ImageDraw.Draw(im)
# フォント取得(Mac OSの場合)
font = ImageFont.truetype(
'/System/Library/Fonts/ヒラギノ明朝 ProN.ttc',
40)
# フォント取得(Windows OSの場合)
# stroke_widthとstroke_fillを指定すると
# 縁取りされた文字が描画される
draw.multiline_text(
(10, 10),
'dimaru.blogを\nよろしく',
font=font,
fill='white',
stroke_width=4,
stroke_fill='black')
# 画像を表示
im.show()