ホーム DoRuby RMagickの使い方

RMagickの使い方

この記事はアピリッツの技術ブログ「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’)

——


他にもいろいろ画像処理機能があり、紹介しきれないのですが、また

面白い画像処理機能があったら紹介しようと思います。

記事を共有

最近人気な記事