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:
Post a Comment