Sha256: 02335b7bae255a2b475a4f1ef7733e07d6ab68e407072a747ab6e471a17e5be7

Contents?: true

Size: 1.32 KB

Versions: 9

Compression:

Stored size: 1.32 KB

Contents

require 'exifr'
include EXIFR

def pp_jpeg(fname)
  jpeg = JPEG.new(fname)
  ks = %w(width height comment bits)
  ks += jpeg.exif.to_hash.keys.map{|a|a.to_s}.sort{|a,b|a<=>b} if jpeg.exif?

  l = []
  ks[0..3].each do |k|
    v = jpeg.send(k)
    l << [k, v.inspect] if v
  end
  ks[4..-1].each do |k|
    v = jpeg.exif.to_hash[k.to_sym]
    l << [k, v.inspect] if v
  end
  pp(fname, l)
end

def pp_tiff(fname)
  tiff = TIFF.new(fname)
  tiff.each_with_index do |img,index|
    l = []
    l << ['width', img.width] << ['height', img.height]
    img.to_hash.keys.map{|a|a.to_s}.sort{|a,b|a<=>b}.each do |key|
      l << [key, img.to_hash[key.to_sym].inspect]
    end
    pp(tiff.size == 1 ? fname : "#{fname}[#{index}]", l)
  end
end

def pp(fname, l)
  puts "#{fname}:"
  f = "  %#{l.sort{|a,b|a[0].size <=> b[0].size}.last[0].size}s = %s\n"
  l.each{|k,v|puts f  % [k, [v].flatten.map{|t|t.to_s}.join(', ')]}
end

if ARGV.size == 0
  STDERR.puts "Usage: #{$0} FILE .."
elsif ARGV[0] == "--dump-exif"
  ARGV[1..-1].each do |fname|
    STDOUT.write JPEG.new(fname).exif_data
  end
elsif ARGV[0] == "--dump-thumbnail"
  ARGV[1..-1].each do |fname|
    STDOUT.write JPEG.new(fname).thumbnail
  end
else
  ARGV.each do |fname|
    case fname
    when /\.(jpg|jpeg)$/i; pp_jpeg fname
    when /\.(tif|tiff)$/i; pp_tiff fname
    end
    puts
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
exifr-1.1.3 bin/exifr
exifr-1.1.2 bin/exifr
exifr-1.1.1 bin/exifr
exifr-1.0.6 bin/exifr
exifr-1.0.5 bin/exifr
exifr-1.0.4 bin/exifr
exifr-1.0.3 bin/exifr
exifr-1.0.2 bin/exifr
exifr-1.0.1 bin/exifr