[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
メソッドで実現できました。
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 を使うとか。