1. ホーム
  2. python

[解決済み] PILでテキストを中央揃え/中揃えにする?

2023-01-27 09:06:19

質問

PILを使用する際、テキストの中央揃え(および中縦揃え)はどのように行うのでしょうか?

どのように解決するのですか?

使用方法 Draw.textsize メソッド を使用して、テキストサイズを計算し、それに応じて位置を再計算します。

以下はその例です。

from PIL import Image, ImageDraw

W, H = (300,200)
msg = "hello"

im = Image.new("RGBA",(W,H),"yellow")
draw = ImageDraw.Draw(im)
w, h = draw.textsize(msg)
draw.text(((W-w)/2,(H-h)/2), msg, fill="black")

im.save("hello.png", "PNG")

となり、その結果

フォントサイズが異なる場合は、このようにフォントを入れてください。

myFont = ImageFont.truetype("my-font.ttf", 16)
draw.textsize(msg, font=myFont)