Rubyで二つのGdk::Pixbufを重ねて新しいGdk::Pixbufを作る。

GTKで画像を扱う時に使われるGdk::Pixbufを重ねて新しいGdk::Pixbufを作る方法を書いてみます。
背景画像の上に重なる画像には、背景が透過した画像を使います。
画像は二つとも、一辺が256ピクセルの正方形になっていることを想定して書いたので、256という数字を書き換えればいろいろなサイズに対応できると思います。
今回は「hoge.png」という名前で保存していますが、普通は画面に描画すると思います。
http://lethalman.blogspot.com/2009/04/create-pixbuf-from-cairo-surface.html ここを参考にしました。

require 'gtk2'
require 'cairo'

pict1 = Gdk::Pixbuf.new("背景画像")
pict2 = Gdk::Pixbuf.new("上に重ねる画像")

pixmap = Gdk::Pixmap.new(nil, 256, 256, 24)
ctx = pixmap.create_cairo_context
ctx.set_source_pixbuf(pict1)
ctx.paint
ctx.set_source_pixbuf(pict2)
ctx.paint

pixbuf = Gdk::Pixbuf.from_drawable(Gdk::Colormap.system, pixmap, 0, 0, 256, 256)

pixbuf.save("hoge.png", "png")