Ruby
Latest commit 99ce8ed Jul 28, 2016 @remvee Release 1.2.5
Failed to load latest commit information.
bin Release 1.2.0 Sep 30, 2014
lib Do not have stringified methods on or Jul 18, 2016
tests Missing assert Jul 27, 2016
.gitignore Move site to gh-pages Sep 30, 2014
CHANGELOG Release 1.2.5 Jul 28, 2016
MIT-LICENSE Release 1.2.1 Mar 2, 2015
README.rdoc Release 1.2.1 Mar 2, 2015
Rakefile Improve test and rdoc process Sep 30, 2014
circle.yml Add circleci configuration Nov 22, 2015
exifr.gemspec Release 1.2.5 Jul 28, 2016

README.rdoc

EXIF Reader

EXIF Reader is a module to read metadata from JPEG and TIFF images.

Examples

EXIFR::JPEG.new('IMG_6841.JPG').width               # => 2272
EXIFR::JPEG.new('IMG_6841.JPG').height              # => 1704
EXIFR::JPEG.new('IMG_6841.JPG').exif?               # => true
EXIFR::JPEG.new('IMG_6841.JPG').model               # => "Canon PowerShot G3"
EXIFR::JPEG.new('IMG_6841.JPG').date_time           # => Fri Feb 09 16:48:54 +0100 2007
EXIFR::JPEG.new('IMG_6841.JPG').exposure_time.to_s  # => "1/15"
EXIFR::JPEG.new('IMG_6841.JPG').f_number.to_f       # => 2.0

EXIFR::TIFF.new('DSC_0218.TIF').width               # => 3008
EXIFR::TIFF.new('DSC_0218.TIF')[1].width            # => 160
EXIFR::TIFF.new('DSC_0218.TIF').model               # => "NIKON D1X"
EXIFR::TIFF.new('DSC_0218.TIF').date_time           # => Tue May 23 19:15:32 +0200 2006
EXIFR::TIFF.new('DSC_0218.TIF').exposure_time.to_s  # => "1/100"
EXIFR::TIFF.new('DSC_0218.TIF').f_number.to_f       # => 5.0

EXIFR::JPEG.new('enkhuizen.jpg').gps.latitude       # => 52.7197888888889
EXIFR::JPEG.new('enkhuizen.jpg').gps.longitude      # => 5.28397777777778

Logging warnings

When EXIF information is malformed, a warning is logged to STDERR with the standard Ruby logger. Log to some other location by supplying an alternative implementation:

EXIFR.logger = SyslogLogger.new

Time zone support

EXIF does not support time zones so this code does not support time zones. All time stamps are created in the local time zone with:

Time.local(..)

It is possible to change this behavior by supplying an alternative implementation. For those who prefer UTC:

EXIFR::TIFF.mktime_proc = proc{|*args| Time.utc(*args)}

Or when the application depends on ActiveSupport for time zone handling:

EXIFR::TIFF.mktime_proc = proc{|*args| Time.zone.local(*args)}

XMP data access

If you need to access XMP data you can use the xmp gem. More info and examples at github.com/amberbit/xmp

Author

R.W. van 't Veer

Copyright

Copyright © 2006-2015 - R.W. van 't Veer