色とかイメージのプログラミング

画像ファイル関係 (PIL)

Pythonware.comで配布している画像を扱うためのライブラリ。ドキュメントは ここ
Vineだとrpmがあったので、
# apt-get install Imaging
でインストール。 (しかしPIL用のフォントは自動では入らない…)
PILはいくつかのライブラリに分かれている。 僕はピクセル操作とかお絵かきがしたかったので、ImageとImageDrawをimport。 ImageDrawには長方形とか線とか丸とかを書けるメソッドが備わってる。詳しくは ここ参照。
import Image
import ImageDraw

im = Image.new("RGB", (300, 300), (255,255,255))
# 最後の255 255 255は色深度を示す。普通はrgbそれぞれ256階調(00-ff)なので、255。
draw=ImageDraw.Draw(im)
draw.rectangle(( 50,150)+(150,250), fill=(127,127,255))
draw.rectangle((150, 50, 250,150),  fill=(255,255,127))
im.save("a.png", "PNG")
とかやって、まずはa.pngを保存してみました。
CGIで画像を出力するときは、いったん保存するのではなく、画像データをそのままブラウザに送ったほうがいい。 これ、Imageのtostringを使って実現しようとしたけどうまくいかず… 結局、sys.saveを用いて
im = Image.new("RGB", (300, 300), (255,255,255))
...
print "Content-Type: image/png\n"
im.save(sys.stdout, "PNG")
とするとうまくいった。 例えばこんなのが出力できる。

PILいろいろ