Python Image Library (PIL)で文字を書く
PythonのモジュールであるPython Image Library (PIL)で画像にテキストを出力する方法.
PILはnumpyのarrayから画像を生成してくれるので重宝していたのだが, 欲を出してテキストを付加することにした. これも非常に簡単にできる.
以下に文字を画像のちょうど中心にくるように出力するプログラムをメモしておく.
import numpy import PIL.Image import PIL.ImageDraw import PIL.ImageFont def draw_text_at_center(img, text): draw = PIL.ImageDraw.Draw(img) draw.font = PIL.ImageFont.truetype( "/usr/share/fonts/truetype/freefont/FreeMono.ttf", 20) img_size = numpy.array(img.size) txt_size = numpy.array(draw.font.getsize(text)) pos = (img_size - txt_size) / 2 draw.text(pos, text, (255, 255, 255)) img = PIL.Image.new("RGBA", (400, 300)) text = "Hello, world!" draw_text_at_center(img, text) img.show() # img.save(filename)
特に説明は不要と思うが, PIL.ImageFont.truetypeの2番目の引数がフォントサイズです. フォントを書き出す座標(pos)はテキストを囲む四角形のちょうど左上になっている.
http://nadiana.com/pil-tutorial-basic-advanced-drawing#Drawing_Text
http://www.pythonware.com/library/pil/handbook/imagedraw.htm