rubyで角丸画像作成
超車輪ながら、とりあえず。
# 画像を角丸にする require 'RMagick' class TbKakumaru # class method def TbKakumaru.toKakumaru_from_blob(blob) mimage = Magick::Image.from_blob(blob).pop wakuColor = 'white' # とりあえず白 wakuSize = 1 wakuMaru = 24 mDraw = Magick::Draw.new # 枠分の大きさだけ大きいImageを作成 mWaku = Magick::Image.new(mimage.columns + wakuMaru,mimage.rows + wakuMaru){self.background_color = wakuColor} # 枠Imageへ元絵をコピー mWaku.composite!(mimage,Magick::NorthWestGravity,Magick::OverCompositeOp) mDraw.fill = 'transparent' #中は透過で、枠が指定色の角丸長方形を作成 mDraw.stroke = wakuColor mDraw.stroke_width(wakuMaru) mDraw.roundrectangle(wakuSize,wakuSize,mimage.columns - wakuSize- 1, mimage.rows - wakuSize - 1,wakuMaru,wakuMaru) # 枠で指定Pixだけ切り取り mDraw.draw(mWaku) # 角丸長方形を枠Imageへ書き込み mimage = mWaku.crop(wakuMaru/2,wakuMaru/2,mimage.columns - wakuMaru,mimage.rows - wakuMaru,true) mimage.format = 'JPG' mimage.to_blob end end
呼び出し元で、角丸にしたいjpg画像をopen.readした値をTbKakumaru.toKakumaru_from_blobに引数に渡してやると
角丸イメージのバイナリデータが来るので、それをwriteしてやると角丸画像になります。
ちょっとやり方がスマートじゃないかなと思いつつ。
Rmagickに関しては、id:secondlifeさんのhtmlhelp(http://b.hatena.ne.jp/entry/3841299)を非常に便利に使わせてもらってます。
感謝!アリガト!(´▽`)!