例として、0.png ~ 9.pngまでの透過pngが用意されていて、それを重ねて1枚の画像に出力する。
require 'RMagick' image = nil 10.times do |num| # 画像データを読み込む tmp_image = Magick::Image.from_blob(File.read("/path/to/#{num}.png")).first # imageがnilの場合はimageに代入 # imageにすでにobjectが代入されている場合はcompositeを呼び出し画像を重ねる if (image.nil?) image = tmp_image else image = image.composite(tmp_image, 0, 0, Magick::OverCompositeOp) end end # 画像を書き出す image.write('/path/to/result.png')
Magick::OverCompositeOpをオプションとして設定しないと透過されないので注意。