Pythonで画像に文字列を書き込む

まぁよくあるサンプルなんですけど、意外と面倒と言うか、スキっと書けなかったのでメモ。PILを使います。

# coding: utf-8

import Image
import ImageDraw
import ImageFont

def main():

_bg = Image.open(“base.png”)
_draw = ImageDraw.Draw(_bg)
_font = ImageFont.truetype(“/Library/Fonts/Arial Unicode.ttf”,22, encoding=’utf-8′)
_draw.text((0,0), u”禅”, font=_font)
_bg.save(“text.png”)

if __name__ == “__main__”:

main()

これだけなんですけど、「# coding: utf-8」って書かないとエラーになってしまうところでつまずいてました。たまたま手元の環境がそうだったのかもしれませんが、「# -*- coding: utf-8 -*-」じゃダメでした。

フォントへのパスは適宜書き換えて使ってください。

Python2.7、PILは1.1.7でした。