Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Ruby
Failed to load latest commit information.
bin Release 1.2.0
lib Release 1.2.1
tests Release 1.2.1
.gitignore Move site to gh-pages
CHANGELOG Release 1.2.1
MIT-LICENSE Release 1.2.1
README.rdoc Release 1.2.1
Rakefile Improve test and rdoc process
exifr.gemspec Release 1.2.1

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

Something went wrong with that request. Please try again.