[Ruby] Mac で rmagick から imagemagick をつかう

Mac の ruby から imagemagick を扱います。

インストール

% ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]

imagemagick は homebrew でインストールしました。

% brew info imagemagick
imagemagick: stable 6.8.9-5 (bottled), HEAD
http://www.imagemagick.org
/usr/local/Cellar/imagemagick/6.8.9-5 (1432 files, 22M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/imagemagick.rb
    :

imagemagick のラッパー rmagick をインストールします。

% gem install rmagick
Fetching: rmagick-2.13.3.gem (100%)
    :

つかいかた

今回はこんな画像処理をしたい。

  • 正方形の画像を作成
  • 縦横比を保ったまま短辺を指定した長さにリサイズ
  • はみ出した部分をクロップ

ズバリそのものの resize_to_fill メソッドで実現できました。

resize_to_fill.rb
require 'rubygems'
require 'rmagick'
src    = 'src'
dest   = 'dest'
width  = 200
height = 200
src_dir    = File.join(src, '*')
dest_dir   = File.join(dest)
src_images = Dir[src_dir]
src_images.each { |file|
  image = Magick::Image.read(file).first
  image.resize_to_fill!(width, height)
  output_filename = File.join(dest_dir, File.basename(file))
  image.write(output_filename)
}

src/ ディレクトリ以下に画像をおいて一括処理。

補遺

この他にもいろいろな処理ができますね。

imagemagick は重いので Imlib2 を使うとか。