iPhoneで撮影した写真をリサイズするミニツール(Ruby)

2014/04/13

iPhone 5sで撮影した写真は3264x2448pxの解像度でサイズが2MB程度になりますが、ここまで高解像度でなくてもWebで使うだけなら例えば1280x960pxに縮小すればサイズを4分の1程度に小さくでき、特にDropboxなどのクラウドストレージを使っている場合には容量を節約できます。

このリサイズを手作業でやるのは面倒なのでRubyで簡単なツール(rsz)を作りました。

ツールの使い方は簡単で、リサイズしたいファイルを標準入力からツールに渡すだけです。

% ls *.jpg | rsz

ツールのソースを公開しますので画像のリサイズが面倒だと思っているかたは参考にしてみて下さい。

ポイントは縦、横ともにサイズを1280pxにしておきresize_to_fitメソッドで縦横比を固定すること。こうすることで横長の写真は1280x960pxになり、縦長の写真は960x1280pxになります。

#!/usr/bin/ruby

require 'rubygems'
require 'RMagick'

width  = 1280
height = 1280

# 標準入力から取り込んだファイル数分処理
while org = STDIN.gets
  org.chomp!

  # ファイル名分解(ファイル + 拡張子)
  file_ext  = File.extname(org)                 
  file_base = File.basename(org, file_ext)      

  # 中間ファイル名指定
  tmp = "#{file_base}_tmp#{file_ext}"

  # リサイズ指定(resize_to_fitで縦横比を固定)
  from = Magick::Image.read(org).first
  file_resize = from.resize_to_fit(width, height)

  # 中間ファイルに書き出し
  puts "#{org} ..."
  file_resize.write(tmp)

  # 中間ファイルをオリジナルに戻す
  File.rename(tmp, org)
end

尚、ツール内ではRMagickを使うのでインストールされていない場合は使っているプラットフォームに合わせた方法でインストールして下さい。

僕はUbuntuを使っているので以下の手順でインストールしました。

% sudo apt-get install librmagick-ruby