python

Pillowで描画する文字に枠線をつける方法

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()

複数行の結果

-python

© 2022 ヂまるBlog