Sha256: a649a29af004cdd475c352db26ec6939ad245fef96bf0fbadf43aeea0b9d8e0a
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
require 'json' require "fix_iphone_picture_orientation/version" require "fix_iphone_picture_orientation/cmd_runner" require 'methadone' module FixIphonePictureOrientation extend Methadone::CLILogging def self.run(dir) rotate_pictures(dir,build_work_list(dir)).empty? end def self.build_work_list(dir) Dir.chdir(dir) do |dir| o, e, st = CmdRunner.run("exiftool -j -ORIENTATION #{file_list(dir).join(" ")}") raise "exiftool failed: #{st.exitstatus} #{e}" unless st.success? list = ::JSON.parse(o) list.map!{|i| ::OpenStruct.new(i)} list.reject!{|i| i.Orientation == "Horizontal (normal)"} end end def self.rotate_pictures(dir,list) Dir.chdir(dir) do |dir| list.each do |image| rotate = 0 case image.Orientation when /90 CW/ rotate = 90 when /180/ rotate = 180 when /270 CW/ rotate = -90 end info "Converting #{image.SourceFile}" o,e,st = CmdRunner.run("mogrify -verbose -rotate '#{rotate}' '#{image.SourceFile}'") raise "mogrify failed: #{st.exitstatus} #{e}" unless st.success? o,e,st = CmdRunner.run("exiftool -ORIENTATION=\"Horizontal (normal)\" '#{image.SourceFile}'") raise "exiftool failed: #{st.exitstatus} #{e}" unless st.success? end build_work_list(dir) end end def self.file_list(dir=Dir.pwd) Dir.chdir(dir) do |dir| Dir["*.JPG","*.jpg","*.PNG","*.png","*.JEPG","*.jpeg"] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fix_iphone_picture_orientation-0.0.1 | lib/fix_iphone_picture_orientation.rb |