== name == EXIF info == category == Digital Photography == author == Kevin Layer (mailto(layer@franz.com)), based on Matthias Wandel's href(jhead,http://www.sentex.net/~mwandel/jhead). Based on, in the sense that reading italic(jhead) was easier than reading the href(EXIF specs,http://www.exif.org/specifications.html). == author-image == == short-description == A Lisp program to read href(EXIF,http://www.exif.org) (Exchangeable Image File Format) 2.2 information from files produced by digital still cameras. == long-description == When a digital camera stores a photographic image onto removable media it stores along with the image data some meta data such as exposure, ISO rating, whether or not the flash was used, the image width and length, and the date on which the image was created. It is useful to be able to read this meta data. For example, it allows the easy creation of a program to rename digital camera files to file names containing the date the photo was originally taken. The files produced by digital cameras are usually EXIF format files. The utility presented here allows a Common Lisp program to extract the meta data about a photograph from an EXIF format file. == examples == The function italic(parse-exif-data) returns a structure containing all the meta information about the image file: cl-user(10): (describe (parse-exif-data "c:/pictures/_TMP/20041128-1515-1200-S1IS.JPG")) # is a structure of type exif-info. It has these slots: file "c:/pictures/_TMP/20041128-1515-1200-S1IS.JPG" make "Canon" model "Canon PowerShot S1 IS" date "2004:11:28 15:15:12" comment "" exposure 0.00125 f-number 4.5 iso-rating nil exposure-bias-value 0.0 subject-distance nil flash t focal-length 48.578 image-width 2048 image-length 1536 cl-user(11): == instructions == All the below symbols are defined in the italic(util.exif) package. italic(parse-exif-data) takes a single argument, a file name, and returns a structure, the slots of which can be accessed with the following accessors: * make-exif-info * exif-info-file * exif-info-make * exif-info-model * exif-info-date * exif-info-comment * exif-info-exposure * exif-info-f-number * exif-info-iso-rating * exif-info-exposure-bias-value * exif-info-subject-distance * exif-info-flash * exif-info-focal-length * exif-info-image-width * exif-info-image-length == tutorial == Getting started: cl-user(12): :cf exifinfo ;;; Compiling file exifinfo.cl ;;; Writing fasl file exifinfo.fasl ;;; Fasl write complete cl-user(14): :ld exifinfo ; Fast loading c:\src\exif-utils\exifinfo.fasl cl-user(15): (use-package :util.exif) t cl-user(16): Now, you're ready to do some real work: cl-user(16): (setq exif (parse-exif-data "c:/pictures/_TMP/20041128-1515-1200-S1IS.JPG")) #S(exif-info :file "c:/pictures/_TMP/20041128-1515-1200-S1IS.JPG" :make "Canon" :model "Canon PowerShot S1 IS" :date "2004:11:28 15:15:12" :comment ...) cl-user(17): (exif-info-make exif) "Canon" cl-user(18): (exif-info-model exif) "Canon PowerShot S1 IS" cl-user(19): (exif-info-date exif) "2004:11:28 15:15:12" cl-user(20): == home-url == == doc-url == http://www.exif.org == license == The code referenced here is in the public domain. == book == == references == href(http://www.exif.org,http://www.exif.org) contains information about the EXIF file format. href(ISO/IEC 10918-1:1994,http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=18902&ICS1=35) document. href(jhead,http://www.sentex.net/~mwandel/jhead), which the author of this utility used to understand EXIF. == source-fooball == href(exifinfo.cl,/source/exifinfo.cl) == release-date == 1/5/2005 == release-version == 1.6 == status == Stable. I have tried reading the files from a variety of cameras, but that's no guarantee that it will work on all EXIF files. == history == * December 31, 2000: initial version * December 26, 2002: fix problem dealing with Photoshop 7 written images. * May 17, 2004: fix traveral of directories, being able to read Thumbs Plus manipulated files. == acl-dependencies == None. == other-dependencies == None. == platform == Should work on ACL version 6.0 or later. == ad ==