Hatena::ブログ(Diary)

bettamodokiのメモ このページをアンテナに追加 RSSフィード

"betta" means Siamese fighting fish (Betta splendens)
and "modoki" means resemblance or imitation in Japanese. So what?

2013-04-17

Python Image Library (PIL)で文字を書く

15:01 |  Python Image Library (PIL)で文字を書くを含むブックマーク  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

トラックバック - http://d.hatena.ne.jp/bettamodoki/20130417/1366178461
リンク元
Connection: close