Wednesday, June 25, 2008

RMagickを使用して画像の指定の角丸四角の領域以外を暗くする

RMagickを使用して指定の角丸四角の領域以外を暗くするには、以下のコードを実行します。

require 'RMagick'
include Magick

# 暗くしない部分を切り取り
img1 = ImageList.new("sf2.jpg")
img2 = Image.new(img1.columns, img1.rows){
self.background_color = "none"
}
img1.alpha = ActivateAlphaChannel
dr = Draw.new
dr.fill = "white"
dr.roundrectangle(10,10,209,209, 20, 20)
dr.draw(img2);
img3 = img1.composite(img2, 0, 0, DstInCompositeOp);

# 暗くする部分を作成
img4 = ImageList.new("sf2.jpg")
img5 = img4.modulate(0.3, 1.0, 1.0)

# 重ね合わせ
img6 = img5.composite(img3, NorthWestGravity, 0, 0, OverCompositeOp);
img6.write("sample470a.jpg")

exit

元画像(sf2.jpg)


出力画像(sample470a.jpg)



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

関連項目
ImageMagickで、任意の矩形領域、角丸四角、円以外の領域を暗くする (Convertコマンドで同様の処理)

No comments: