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はいろいろできてすばらしすぎると思った。