Monday, March 02, 2009

RMagickで画像を角丸四角に切り取って立体的にする

RMagickで画像を角丸四角に切り取って立体的にするには、以下のコードを実行します。

require 'RMagick'
include Magick

# 余白
padx = 10
pady = 10
# 角丸
rx = 20
ry = 20

images = ImageList.new("sf.jpg")
images.alpha = ActivateAlphaChannel

images2 = ImageList.new
images2.new_image(images.columns, images.rows){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "white"
dr.roundrectangle(padx,pady,
images.columns-1-padx, images.rows-1-pady, rx, ry)
dr.draw(images2);
# 描画した角丸四角で切り取り
img = images.composite(images2, 0, 0, DstInCompositeOp);

# 角丸四角図形を立体的にする
img2 = images2.shade(true,135,23)
img2 = img2.blur_channel(0, 3, ChannelType::AllChannels).normalize().contrast(true).contrast(true)

# overlayで重ね合わせ
img.composite(img2, 0, 0, OverlayCompositeOp).write("sample894a.png")
exit

元画像(sf.jpg)


出力画像(sample894a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickで画像を高低差のあるタイルに貼り付けたように加工する
RMagickで画像を立体的なタイル風に変換する

No comments: