アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

RMagickを使ってみた

こんにちは。小川です。

今回はRubyImageMagickを扱うライブラリであるRMagickで遊んでみました。

まずはインストールです。手順はImageMagickをインストールして、RMagickをRubyGemsでインストールします。Ubuntu(Hardy Heron)の場合は以下の通りにやればインストールできるかと思います。



$ sudo apt-get install imagemagick
$ sudo apt-get install libmagick++9-dev
$ sudo gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.5.2


それでは早速使ってみましょう。以下はimage.pngを320x240にリサイズして、image_320x240.pngという名前で保存するスクリプトです。



# ライブラリをロード
require 'rubygems'
require 'RMagick'

# 画像オブジェクトを取得
img = Magick::ImageList.new("image.png")

# サイズを変更する
new_img = img.resize(320, 240)

# 保存
new_img.write("image_320x240.png")


画像をオブジェクトとして扱えるのでとても簡単です。User's Guide and Referenceをみてたら色々あるようなので、コマンドラインで色々変換してくれるスクリプトを書いてみました。



require 'rubygems'
require 'RMagick'

if $0 == __FILE__
  original = ARGV[0]

  unless original
    puts "Usage: ruby #{File.basename(__FILE__)} imagepath"
    exit
  end

  unless FileTest.exists?(original)
    puts "File [%s] not exists" % original
    exit
  end

  # ファイルの読み込み
  img = Magick::ImageList.new(original)
  ext = File.extname(original)

  # 保存用のディレクトリを作成&ディレクトリに移動
  name = File.basename(original, '.*')
  Dir.mkdir(name) unless FileTest.directory?(name)
  Dir.chdir(name)

  # サイズを倍にする
  img.resize(img.columns * 2, img.rows * 2).write("double#{ext}")

  # 色々やってみる
  methods = %w(sepiatone shade sketch vignette flip flop)
  methods.each { |m| img.__send__(m).write("#{m}#{ext}") }
end


これをrmagick.rbとして保存します。では、らーめん大のらーめん野菜増しで実験しましょう。



$ ruby rmagick.rb dai.png


これで完了するとdaiディレクトリができ、その中に色々変換処理をかけられたファイルが入ってると思います。今回は無事成功したので、いくつか紹介したいと思います。







このようにRMagickを使えば簡単に画像の加工ができます。上にリファレンスへのリンクを書きましたが、たくさんのメソッドが用意されてますのでぜひ色々と試してみてください。