Tuesday, April 07, 2009

RMagickを使用して、正多角形で画像を切り取る

RMagickを使用して、正多角形で画像を切り取るには、以下のコードを実行します。

require 'RMagick'
include Magick

# 正多角形で画像を切り取る
# 出力画像サイズ
width=200
height=200
# 頂点数
np = 6

images = ImageList.new
images.new_image(width, height){
self.background_color = "none"
}

cx = width/2
cy = height/2
rx = width/2
ry = height/2
sr = 360/np
ia = 270
points = []
np.times { |rc|
points << cx + Math.cos(Math::PI*(ia+sr*rc)/180)*rx
points << cy + Math.sin(Math::PI*(ia+sr*rc)/180)*ry
}
dr = Draw.new
dr.fill = "white"
dr.polygon(*points)
dr.draw(images)

images2 = ImageList.new("sf.jpg")
images2.alpha = ActivateAlphaChannel
images2.composite(images, 0, 0, DstInCompositeOp).
write("sample930a.png")

exit

元画像(sf.jpg)


出力画像(sample930a.png)



動作環境
ruby1.8.6, rmagick2.7.1

No comments: