Monday, March 09, 2009

RMagickでへこんだ影つき円を描画する

RMagickでへこんだ影つき円を描画するには、以下のコードを実行します。

require 'RMagick'
include Magick

#円の中心
cx=100
cy=100
#半径
rx=90
ry=90

# 凹んだ影付き円を描画する
images = ImageList.new("sf.jpg")
images2 = ImageList.new
images2.new_image(images.columns, images.rows){
self.background_color = "black"
}
images2.alpha = ActivateAlphaChannel
dr = Draw.new
dr.fill = "white"
dr.ellipse(cx,cy,rx,ry,0,360)
dr.draw(images2);
images2[0] = images2.negate(true)
images2[0] = images2.fx("r", AlphaChannel)
images2[0] = images2.fx("#F0F0FF", DefaultChannels)
images2[0].background_color = "black"
shadowimg = images2[0].shadow(3, 3, 3, 0.4)
img = images.composite(shadowimg, 0, 0, OverCompositeOp);
img.composite(images2, 0, 0, OverCompositeOp).write("sample902a.png")

exit

元画像(sf.jpg)


出力画像(sample902a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、凹んだ影つき円を描画する (convertコマンドによる似た処理)

No comments: