Python Pillow - 画像に重ねて文字を描く

ブログやサムネイル作成など、画像に文字を重ねたいことがあります。

GIMPやペイントなどのグラフィックスソフトを使い、手作業で文字を入れることもできますが、コピーライトなど同じ文字を何度も入れたい場合は自動化すると便利です。

今回はPillowというライブラリを使って画像にテキストを追加する処理を自動化していきます。

インストール

まずは、Pillowをインストールします。
1
pip install pillow

コーディング

Pythonで下記のようにコーディングし、実行します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from PIL import Image, ImageDraw, ImageFont

text = 'Sample' # 画像に追加する文字列を指定
img = Image.open('owl.png') # 入力ファイルを指定

imagesize = img.size # img.size[0]は幅、img.size[1]は高さを表す
draw = ImageDraw.Draw(img) # ImageDrawオブジェクトを作成

font = ImageFont.truetype("arial.ttf", 64) # フォントを指定、64はサイズでピクセル単位
size = font.getsize(text)

# 画像右下に'Sampleと表示' #FFFは文字色(白)
draw.text((imagesize[0] - size[0], imagesize[1] - size[1]), text, font=font, fill='#FFF')
# ファイルを保存
img.save('out.png', 'PNG', quality=100, optimize=True)
入力に指定した画像ファイルは下記となります。

入力画像

出力画像

正常に処理ができると次のように文字が追加された画像ファイルが出力されます。

出力画像