Cairo

グラフィックライブラリの Cairo を少しいじってみている。

pythonから普通に使えるが、どちらかというとベクタのレンダリング用のような構成で、ピクセル単位での操作はできない。特定の座標の色を見る方法もない。

get pixel やバケツ塗りつぶし(Flood Fill)とかで検索しても、「ないよ」みたいなそっけない答えしか見つからないし…。

で、ようやく以下のページを見つけた。
http://code.activestate.com/recipes/498278-access-cairo-surface-from-numpy-and-pygame/

numpyという計算ライブラリから、surfaceの情報を配列として参照できるらしい。

以下のようにすればいいらしい。

buf = surface.get_data()
a = numpy.frombuffer(buf, numpy.uint8)
a.shape = (w, h, 4)
a[:,:,2] = 255

これで行けるのではなかろうか…