WindowsでPILを使う

画面に表示する画像を作るのにPILを使うことにする。
落とす。
http://www.pythonware.com/products/pil/
http://effbot.org/downloads/PIL-1.1.6.win32-py2.5.exe
基本環境はpyserialを入れたのと同じ。
インストールはインストーラーがあるので楽。
IDLE起動。

>>> import Image
>>> im = Image.new("1", (122, 32), 1)
>>> im.show()

枠を作る。

>>> import ImageDraw, ImageFont
>>> draw = ImageDraw.Draw(im)
>>> font = ImageFont.truetype("C:\\Windows\\Fonts\\msgothic.ttc", 16)
>>> text = u"てすと"
>>> draw.text((0,0), text, font=font, fill=0)
>>> im.show()

あちゃ、化けている。u取っても同じ。
英語なら表示できている。
Windowsなので、フォントまわりはSJISなのかな?
0,0から書くと左が1ドット欠けているようだ。
あとは、ペーストする文字側のパレットのせいか、ビューアーのせいか、表示が2値になっていない。
# これはXPHomeのビューアーのせいだった。Win2kだとペイントで2値になっている。

>>> font = ImageFont.truetype("C:\\Windows\\Fonts\\msgothic.ttc", 16, index=0, encoding="unic")

indexは、複数フォントが入っているので、0はMSゴで、1はMSPゴだそうな。だとすると2はUIゴかな。
endordingではunicでunicodeを指定。省略しても問題なさそう。

>>> import Image, ImageDraw, ImageFont
>>> im = Image.new("1", (122, 32), 1)
>>> draw = ImageDraw.Draw(im)
>>> font = ImageFont.truetype("C:\WINNT\Fonts\msgothic.ttc", 16, index=0, encoding="unic")
>>> text = unicode('てすと', 'shift_jis')
>>> draw.text((0,0), text,  font=font, fill=0)
>>> im.show()

フォントパスは、環境をWin2kにしたので変更。このへんも互換性的にはやなところだ。
IDLEからなのでSJISで入力されているのだろうと想定したが、その通りだった。
これでちゃんと表示できた。ドット欠けもない。
フォントサイズを14にして、表示位置を少し調整すると、9文字は表示できた。

>>> text = unicode('愛しあってるかい!', 'shift_jis')
>>> draw.text((1,1), text,  font=font, fill=0)