Thursday, December 18, 2008

RMagickでマスクした部分を白黒にする

RMagickでマスクした部分を白黒にするには、以下のコードを実行します。

require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images2 = ImageList.new("mask.bmp")
# 白黒マスクから透過反転マスクを作成
images2.alpha = ActivateAlphaChannel
img = images2.fx("1-r", Magick::AlphaChannel)

# マスク画像で切り取り
img3 = img.composite(images[0], 0, 0, SrcInCompositeOp)
# グレースケール画像に変換
images[0].colorspace = ColorspaceType::GRAYColorspace
# 切り取った画像とグレースケール画像を重ね合わせ
img4 = images[0].composite(img3, CenterGravity, 0, 0, OverCompositeOp)
img4.write("sample716a.png")

exit

元画像(sf.jpg)


マスク画像(mask.bmp)


出力画像(sample716a.png)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

関連項目
ImageMagickで、マスクした部分を白黒に変換する (Convertコマンドで同様の処理)

No comments: