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)を非常に便利に使わせてもらってます。
感謝!アリガト!(´▽`)!