Saturday, February 14, 2009

RMagickで画像を黄色っぽくして端を暗くする

RMagickで画像を黄色っぽくして端を暗くするには、以下のコードを実行します。

require 'RMagick'
include Magick

images1 = ImageList.new("sf.jpg")
img1 = images1.contrast(true)
# 端が暗い画像を作成
images2 = ImageList.new
images2.new_image(200, 200){
self.background_color = "none"
}
images2.alpha = ActivateAlphaChannel
images2.virtual_pixel_method = Magick::BlackVirtualPixelMethod
img2 = images2.blur_channel(0, 10, ChannelType::AllChannels)
# 元画像と重ね合わせ
img3 = img1.composite(img2, CenterGravity, 0, 0, OverCompositeOp);
# かすかにぼかしのかかった半透明の緑っぽい画像を作成
images3 = ImageList.new("sf.jpg")
images3.alpha = ActivateAlphaChannel
img = images3.fx("0.5", AlphaChannel)
img.rows.times { |py|
line = img.get_pixels(0, py, img.columns, 1)
line.size().times { |px|
line[px].red = line[px].red*209/255;
line[px].green = line[px].green*221/255;
line[px].blue = line[px].blue*48/255;
}
img.store_pixels(0, py, img.columns, 1, line)
}
img4 = img.blur_channel(0, 1, ChannelType::AllChannels)
img5 = img4.modulate(1.2, 1, 1);
# 端が暗くなった元画像と重ね合わせ
img6 = img3.composite(img5, CenterGravity, 0, 0, OverCompositeOp);

img6.write("sample775a.png")

exit

元画像(sf.jpg)


出力画像(sample775a.png)
RMagickで黄色っぽく、端を暗く処理した画像

動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、写真を黄色っぽく着色して端を暗くする (convertコマンドでの同様の処理)

No comments: