この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
はじめまして、kbmjでruby on railsの開発をしている中平です。
今回私は、RMagickというrubyで画像処理を行うライブラリの使い方を説明いたします。
まず、RMagickについて。
RMagickとはその名のとおり、ImageMagickをrubyで扱えるようにしたものです。
ですのでRMagickを使う場合は、
ruby本体,ImageMagick,RMagickの3つが必要です。
今回はインストール方法は省きまして、インストール後の使い方とか機能について紹介します。
ImageMagickでできることはたいていRMagickでも出来ますので、rubyだと簡単にできることを知っていただければと・・・・
■rmagickの使い方
説明するよりも実際に試したほうがわかりやすいと思いますので、
rubyとrmagickを使って画像処理をするサンプルコードを記載します。
これを適当に保存して、画像を一枚用意していただき、実行すると
画像処理され保存されていきますので、試してみてください。
サンプルだと、画像名はhogehoge.jpgを使っています。
————————————-
require “RMagick” #RMagickを使えるように
#hogehoge.jpg画像を別名で保存
img = Magick::ImageList.new(“hogehoge.jpg”)
img.write(“orig.jpg”)
#画像を反転し保存
img = Magick::ImageList.new(“orig.jpg”)
img_flop= img.flop #左右反転
img_flip= img.flip #上下反転
img_flop.write(“flop.jpg”)
img_flip.write(“flip.jpg”)
#2枚の画像をくっつける
#同じサイズの画像じゃないとおかしなことに・・・・
img_append = Magick::ImageList.new(“orig.jpg”,”flop.jpg”)
img_append = img_append.append(false) #trueだと上下、falseだと左右にくっつける
img_append.write(“append.jpg”)
#画像に文字を挿入
img_string = Magick::ImageList.new(“orig.jpg”)
md = Magick::Draw.new
md.annotate(img_string, 0, 0, 0, 0, “hogehoge”) do
md.gravity = Magick::NorthGravity #表示位置
#NorthWestGravity ( 左上 )
#NorthGravity ( 上 )
#NorthEastGravity ( 右上 )
#WestGravity ( 左 )
#CenterGravity ( 真中 )
#EastGravity ( 右 )
#SouthWestGravity ( 左下 )
#SouthGravity ( 下 )
#SouthEastGravity ( 右下 )
md.pointsize = 30 #フォントサイズ
md.fill = “blue” #文字色
md.stroke = “yellow” #文字の縁取り色
end
img_string.write(“string.jpg”)
#波紋
img = Magick::ImageList.new(“orig.jpg”)
img_string=img_string.wave(amplitude=10.0, wavelength=100.0)
img_string.write(“wave.jpg”)
#画像をぼかす
img = Magick::ImageList.new(“orig.jpg”)
motion_blur=img.blur_image(radius=10.0, sigma=10.0)
motion_blur.write(“blur.jpg”)
#画像の回転
img = Magick::ImageList.new(“orig.jpg”)
#右に90度回転
rotate=img.rotate(90)
#左回りの場合は-90
#rotate=img.rotate(-90)
rotate.write(“rotate.jpg”)
#画像をねじる?
img = Magick::ImageList.new(“orig.jpg”)
swirl=img.swirl(360)
swirl.write(‘swirl.jpg’)
#画像をねじる(gif動画)
img = Magick::ImageList.new(“orig.jpg”)
animation = Magick::ImageList.new
animation << img.first.copy
30.step(360,45) { |degrees| animation << img.swirl(degrees) }
animation.delay = 20
animation.iterations = 10000
animation.write(‘swirl.gif’)
——
他にもいろいろ画像処理機能があり、紹介しきれないのですが、また
面白い画像処理機能があったら紹介しようと思います。