Sunday, April 19, 2009

pycairoを使用して半透明放射グラデーションで画像を切り取る

pycairoを使用して半透明放射グラデーションで画像を切り取るには、以下のコードを実行します。

# 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)

x1 = x2 = 100
r1 = 0
y1 = y2 = 100
r2 = 100

rg = cairo.RadialGradient(x1, y1, r1, x2, y2, r2)
rg.add_color_stop_rgba(0.00, 1, 1, 1, 1)
rg.add_color_stop_rgba(0.75, 1, 1, 1, 0.9)
rg.add_color_stop_rgba(1.00, 1, 1, 1, 0)

psp = cairo.SurfacePattern(img)

ctx.set_source(psp)
ctx.mask(rg)

surface.write_to_png('sample1025a.png')

元画像(sf.png)


出力画像(sample1025a.png)
pycairoで半透明円に切り取った画像

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

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

pycairoで放射グラデーションを描画する

No comments: