ディレクトリ内の画像の一括反転

imgflip.rb

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# 画像を回転させて上書きする
require 'rubygems'
require 'fileutils'
require 'RMagick'
include Magick

if ARGV.size < 3
  puts 'pathと保存先と反転の向きが必要です'
  puts ' e.g. ruby imgflip.rb ~/tmp/picture/*.png ~/tmp/result/ flop'
  puts 'flip(上下) / flop(左右)'
  exit(1) 
end

method = ARGV.pop
dest = ARGV.pop # 保存先
path = ARGV

FileUtils.mkpath(dest) if !File.exists? dest

path.each{|file|
  destFile = "#{dest}/#{file.split(/\//).last}"
  puts "#{file} => #{destFile}"
  img = Image.from_blob(File.read(file)).shift
  img.flip! if "flip" =~ /#{method}/ # 上下
  img.flop! if "flop" =~ /#{method}/ # 左右
  img.write(destFile)
  fDisabled = GC.enable
  GC.start
  GC.disable if fDisabled
}


左右反転する場合

ruby imgflip.rb ~/tmp/picture/*.png ~/tmp/result/ flop


上下反転する場合

ruby imgflip.rb ~/tmp/picture/*.png ~/tmp/result/ flip


上下左右反転する場合

ruby imgflip.rb ~/tmp/picture/*.png ~/tmp/result/ "flip|flop"