JPEGの縮小画像を一括で生成する。

piklってのを使うとラクらしい。
まずはpiklをgemでインストール

gem install pikl

で、
http://pools.jp/2008/09/27/pikl-resize-batch-jpg/
スクリプトをコピペしてみる。
なんか動くっぽいので少し改造。

require "fileutils"
require "pikl"
require "ropt"

def usage
 STDERR.puts("\
Usage: #{File.basename($0)} [OPTION]...
Options
  -h:	show this usage
  -i:	input dir
  -o:	output dir
  -l:	file name header label
")
  exit 1
end

opt = ROpt.parse(ARGV, "hi:o:l:") || usage

usage if opt[:h]
usage unless opt[:o] && opt[:i]

outdir = opt[:o]
indir = opt[:i]
opt[:l] ? header = opt[:l] : header = "picture_"

setting = {
 :standard=> [640,480],
}

count = 1
FileUtils.mkdir_p(outdir)
Dir.glob(["#{indir}/*.jpg") do |jpg|
 Pikl::Image.open(jpg) do |img|
   setting.each do |label, size|
     path = %Q|#{outdir}/#{header}#{sprintf("%03d", count)}.jpg|
     img.fit(*size).save(path,:jpg)
     count += 1
   end
 end
end

おぉ、いい感じに変換ができる。