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
おぉ、いい感じに変換ができる。