Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
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


EXIF Reader

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

Examples'IMG_6841.JPG').width               # => 2272'IMG_6841.JPG').height              # => 1704'IMG_6841.JPG').exif?               # => true'IMG_6841.JPG').model               # => "Canon PowerShot G3"'IMG_6841.JPG').date_time           # => Fri Feb 09 16:48:54 +0100 2007'IMG_6841.JPG').exposure_time.to_s  # => "1/15"'IMG_6841.JPG').f_number.to_f       # => 2.0'DSC_0218.TIF').width               # => 3008'DSC_0218.TIF')[1].width            # => 160'DSC_0218.TIF').model               # => "NIKON D1X"'DSC_0218.TIF').date_time           # => Tue May 23 19:15:32 +0200 2006'DSC_0218.TIF').exposure_time.to_s  # => "1/100"'DSC_0218.TIF').f_number.to_f       # => 5.0'enkhuizen.jpg').gps.latitude       # => 52.7197888888889'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 =

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:


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|*args)}

XMP data access

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


R.W. van 't Veer


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

Something went wrong with that request. Please try again.