Saturday, April 25, 2009

pycairooで画像をグレースケールに変換する

pycairooで画像をグレースケールに変換するには、以下のコードを実行します。


# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
img = cairo.ImageSurface.create_from_png("sf.png")
ctx = cairo.Context(surface)

ctx.set_source_surface(img, 0, 0)
ctx.paint()

ia = surface.get_data()
for ip in range(0, surface.get_stride() *
surface.get_height(), 4):
ia[ip+0] = ia[ip+1] = ia[ip+2] = \
chr((ord(ia[ip+0]) + ord(ia[ip+1]) + ord(ia[ip+2]))/3)

surface.write_to_png('sample1032a.png')


元画像(sf.png)


出力画像(sample1032a.png)
pycairoでグレースケールに変換した画像

動作環境
Python2.6.1, GTK+2.16.0, pycairo1.4.12-2

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

No comments: