Friday, March 06, 2009

RMagickで横方向に擦れたような半透明画像に変換する

RMagickで横方向に擦れたような半透明画像に変換するには、以下のコードを実行します。

require 'RMagick'
include Magick

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

images = ImageList.new("sf2.jpg")
images.alpha = ActivateAlphaChannel
images2 = ImageList.new
# 元画像と同じ大きさの透明なイメージを作成
images2[0] = Image.new(images.columns, images.rows){
self.background_color = "black"
}
images2[0].alpha = ActivateAlphaChannel
dr = Draw.new
# 描画色
dr.fill = "white"
# 角丸四角
dr.roundrectangle(padx,pady,
images.columns-1-padx, images.rows-1-pady, rx, ry)
dr.draw(images2);

# 横ストライプ&半透明
images2[0] = images2.fx("(j%4<3&&r!=0)?p*0.7:p*0.3")
# spreadでばらして、モーションブラー
images2[0] = images2.spread(5).motion_blur(0,10,0).motion_blur(0,10,180)
images2[0] = images2.fx("r", AlphaChannel)

images.composite(images2, 0, 0, DstInCompositeOp).write("sample900a.png")
exit


元画像(sf2.jpg)


出力画像(sample900a.pn)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで横方向に擦れたような半透明画像に変換する (convertコマンドによる同様の処理)

No comments: