Exifprobe examines and reports the contents  and structure of JPEG and TIFF
image files.  It will recognize  all standard JPEG markers  (including APPn
markers) and will  report the contents of any properly  structured TIFF IFD
encountered,  even when  entry  tags are  not  recognized. Recognized  TIFF
and  TIFF/EP  tags are  expanded,  including  EXIF2.2 sections  and  camera
MakerNotes  which are  found to  be  in TIFF  IFD format.  GPS and  GeoTIFF
tags  are  recognized and  entries  printed  in  "raw"  form, but  are  not
expanded.  Location, size, and format of image data is reported.

The program name suggests it's genesis as a tool for examination of digital
camera-generated images; it may be  useful, however, for examination of any
image which begins with a valid TIFF header or JPEG SOI marker.

Output of  the program is  controlled by a  number of options  which select
what  to print  and/or  how to  print it.  These  options are  individually
selectable, permitting  a large number  of combinations of  output formats.
Three "prefabricated" option formats are provided for convenience.

The "structural"  output format  provides a description  of the  image file
which mimics as closely as possible the layout and structure of the data in
the  image file,  including file  offsets of  headers, section  and segment
markers, fully described TIFF IFD entries, and the location of actual image
and/or thumbnail data.  The contents of each section  are indented relative
to the  beginning of  the section,  and "offset" values  for TIFF  IFDs are
reported at the  offsets where they are found (usually  following the entry
list. This format attempts to show everything in the file and is useful for
software developers, for debugging problem images, and for the inordinately
curious.  It can also be an aid to understanding the layout features of the
TIFF, TIFFEP, JPEG, and  Exif specifications,  or for  "reverse-engineering
unknown MakerNote data.

The "report"  format shows the "logical"  structure of the image  file, but
eliminates  addresses,  offsets, IFD  value  types  and counts,  etc.,  and
prints "offset" IFD  values inline, while otherwise  preserving the primary
structure of the data.

The "list" format  writes only "tag" values from TIFF,  Exif, and MakerNote
IFDs. This option may hide the presence of JPEG "APP" sections or MakerNote
sections which are not in IFD format.  It is likely to be silent about JFIF
files  (for example),  but will  be useful  for extracting  information for
photo galleries from Exif or TIFF/EP  files. A shell script ("exifgrep") is
provided to  post-process the list format,  allowing selection/rejection of
items, and a "shell variable" format which can be evaluated by Unix shells.

Options are  available to permit  customized output, either  by suppressing
unwanted items  in the default  display, or  by `zeroing' the  defaults and
setting only wanted output items  or behaviors. An environment variable may
be set to customize the default behavior.

MAKERNOTES
Camera-generated  images  which  contain  EXIF sections  may  also  contain
(within the  Exif section) a section  introduced by a "MakerNote"  tag. The
MakerNote section,  if present, normally contains  information about camera
or firmware settings used to produce  the image. The contents and structure
of MakerNote sections is not mandated  by the Exif specification (and a few
camera makers write  this section in a proprietary format)  but many camera
MakerNotes  are written  in  a  format similar  to  the  standard TIFF  IFD
format,  with small  gratuitous variations.  The most  common variation  is
an  "ID"  string  identifying  the  maker at  the  beginning  of  the  note
segment,  offsetting  the  IFD slightly.  Exifprobe  currently  understands
and  automatically  detects  six  MakerNote "schemes"  and  can  print  the
uninterpreted contents  of the IFD  (and the  ID string, if  present). This
detection is heuristic, and is not dependent upon make or model of camera.

If  detection succeeds,  the  "Make"  and "Model"  of  the camera  (usually
available  in the  first TIFF  IFD  in the  file)  will be  used to  select
maker-specific routines which may interpret the information provided in the
MakerNote.

The  program  "recognizes"  several  camera  makes  and  models  for  which
information  has been  published  describing the  function  and meaning  of
MakerNote entries.  NO camera  maker, to my  knowledge, has  ever published
MakerNote  information;  all  information   used  by  exifprobe  to  expand
MakerNote entries has been derived by "reverse-engineering". Please see the
file "CREDITS" for the sources of MakerNote information used by exifprobe.

MakerNotes which  are not  in a  recognizable IFD  format will  be reported
(start and end offsets), and may be hex/ascii dumped in whole or in part by
option. Similarly, UNDEFINED data in IFD format MakerNotes may be hex/ascii
dumped if not expanded by a maker-specific routine.

JPEG APPn SEGMENTS
In JPEG interchange format files, APP0 (JFIF) and APP1 (Exif) segments will
be fully  decoded, and  the printable  portions of  APP12 sections  will be
displayed; other APP markers will be  reported, and may be hex/ascii dumped
using the '-A' option.

ANSI COLOR
The program  (by default)  emits ANSI color  escape sequences  to highlight
Exif  sections, with  separate  colors for  MakerNote and  Interoperability
sub-sections. These sequences are effective,  of course, only for terminals
or  terminal emulators  (e.g. xterm)  which  respond to  ANSI color  escape
sequences. If  a pager is used  to display the output  when these sequences
are present, a  "raw" option to the  pager may be required  (e.g. less -R).
The use of these sequences may be toggled by the '-c' option.

The program may be compiled without support for color sequences.


Duane H. Hesser dhh@monroe.net
