Saturday, May 09, 2009

RMagickで画像を立体的なタイル風に変換する

RMagickで画像を立体的なタイル風に変換するには、以下のコードを実行します。


require 'RMagick'
include Magick

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

# 角丸四角を描画
images2 = ImageList.new
images2.new_image(40, 40){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "white"
dr.roundrectangle(2,2, 37,37, 4,4)
dr.draw(images2)

# タイル上に配置
images3 = ImageList.new
images3.new_image(images.columns, images.rows,
TextureFill.new(images2))
images3.alpha = ActivateAlphaChannel

# 切り取り
img = images.composite(images3, 0, 0,
DstInCompositeOp).modulate(1.4)
img.colorspace = GRAYColorspace
img = img.colorize(0.5, 0.5, 0.5, "#fad759")

# 立体的にする
img2 = images3.shade(true, 135, 23).
blur_channel(0,2,AllChannels).normalize()

img4 = img2.composite(img, 0, 0,
OverlayCompositeOp)
img4.write("sample997a.png")

exit


元画像(sf2.jpg)


出力画像(sample997a.png)
RMagickで立体的なタイル風に変換した画像

動作環境
ruby1.8.6, rmagick2.9.0

関連項目
ImageMagickで画像から立体的なタイル画像に変換する (convertコマンドによる同様の処理)
RMagickで画像を角丸四角に切り取って立体的にする

No comments: