Zipファイルから写真を取り出して縮小とかする

require 'rubygems'
require 'rmagick'
require 'zip/zip'

MIN_SIZE = 800
THUMB_SIZE = 150
IMAGE_DIR = './img/'
THUMBS_DIR = './img/thumbs/'
AVALABLE_EXT = ['jpg','jpeg','JPG','png','gif','PNG','GIF']

zipfile = ARGV.shift

Dir.mkdir(IMAGE_DIR) if !FileTest.directory?(IMAGE_DIR)
Dir.mkdir(THUMBS_DIR) if !FileTest.directory?(THUMBS_DIR)

Zip::ZipInputStream::open(zipfile) do |io|
	while(entry = io.get_next_entry) do
		next if !entry.name.to_s.match(/\.(#{AVALABLE_EXT.join('|')})$/)
		filename = entry.name.to_s.match(/[^\/]+$/).to_a[0]
		image = Magick::Image.from_blob(io.read)[0]
		print "Processing ", filename, " ..."
		origin_width = image.columns
		origin_height = image.rows
		new_width = new_height = nil
		if origin_width > origin_height then
			new_width = MIN_SIZE
			new_height = (origin_height * ( MIN_SIZE.to_f / origin_width)).to_i
		else
			new_height = MIN_SIZE
			new_width = (origin_width * ( MIN_SIZE.to_f / origin_height)).to_i
		end
		image.resize!(new_width, new_height)
		image.write(IMAGE_DIR + filename)
		print '...'
		image.crop_resized!(THUMB_SIZE,THUMB_SIZE)
		image.write(THUMBS_DIR + filename)
		print " done.\n"
	end
end

rubyzipがJavaっぽいインタフェースで使いづらいなあ。
ImageMagickはいろいろできてすばらしすぎると思った。