その他
    ホーム 技術発信 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’)

    ——


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

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