2008年8月13日
RMagickを使ってみた
こんにちは。小川です。
今回はRubyでImageMagickを扱うライブラリである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を使えば簡単に画像の加工ができます。上にリファレンスへのリンクを書きましたが、たくさんのメソッドが用意されてますのでぜひ色々と試してみてください。