RMagickをはじめてみる

RMagickというライブラリを使うと容易に画像を読み込んで編集して保存することができるようです。
JRubyでやりたいなと思っていろいろ調べてよさそうな方法をメモします。

JRubyにRMagickをインストール

WindowsJRubyにRMagickを入れようとすると、なんかよくわからないがうまく入りません。
おそらくnative extensionということでいろいろ外部ライブラリが必要なんだと思います。
で、gem searchしてみると見つかりました!"rmagick4j"なるものが!
早速入れていました。

% jruby gem -S install rmagick4j

よし、問題なくインストールできました。

JRubyでRMagckを使ってみる

rmagick4jはJRuby特有のライブラリなので、可能ならばRuby環境に移行した時も使えるようにしたい。
そこで、以下のように環境がJRubyかどうかを判別して読み込むライブラリを変更するようにします。

#require 'rubygems'
gem RUBY_PLATFORM == 'java' ? 'rmagick4j' : 'rmagick'
require 'RMagick'

おそらく、1.9以上のRubyならばrequire rubygemsは無くても問題ないと思います。
RUBY_PLATFORMという組み込み変数を使うとJRubyで動作させた時"java"が返されるようなのでこれを使って判別します。

簡単なサンプル

以下は画像ファイルを読み込んで、縮小して、別ファイル名で保存する、簡単なサンプルです。

#require 'rubygems'
gem RUBY_PLATFORM == 'java' ? 'rmagick4j' : 'rmagick'
require 'RMagick'

scale = 0.3

image = Magick::ImageList.new('baboon.png')

puts "kind   : #{image.format}"
puts "height : #{image.rows}px"
puts "width  : #{image.columns}px"

#
image.resize!(scale)
image.write('baboon_resize.png')

うむ、できた!

まとめ

'rmagick4j'を使えば、外部ライブラリを必要としないのでいろいろインストールしなくてすむのでクリーンにRMagickを使えることがわかりました。
いやはや便利なものです。


ドキュメントはこちら
http://www.imagemagick.org/RMagick/doc/