Saturday, March 07, 2009

RMagickで画像に光が差し込んだような効果をつける

RMagickで画像に光が差し込んだような効果をつけるには、以下のコードを実行します。

require 'RMagick'
include Magick

# 画像に光が差し込んだような効果をつける
images = ImageList.new("sf.jpg")
images2 = ImageList.new
sx = images.columns*Math.cos(Math::PI*10/180)
images2.read("plasma:fractal"){
self.size = (images.columns+sx).to_s() + "x" + images.rows.to_s()
}
images2.alpha = ActivateAlphaChannel
# 画面の上1/3まで光が差し込む
images2[0] = images2.fx("h/3>j?p*(h/3-j)/(h/3):0", DefaultChannels)
images2[0].colorspace = GRAYColorspace
images2[0] = images2.motion_blur(70,50,270)
# 光を傾けて、元画像の大きさで切り取り
images2[0] = images2.shear(10, 0).crop(EastGravity, sx, 0,
images.columns, images.rows).normalize()
images2[0] = images2.fx("r*0.4", AlphaChannel)

images.composite(images2, 0, 0, PlusCompositeOp).write("sample901a.png")
exit

元画像(sf.jpg)


出力画像(sample901a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、写真に光が差し込んだような効果をつける (convertコマンドによる同様の処理)

No comments: