bionic (1) exifprobe.1.gz

Provided by: exifprobe_2.0.1+git20170416.3c2b769-1_amd64 bug

NAME

       exifprobe - probe and report structure and metadata content of camera image files

SYNOPSIS

       exifprobe [options] filename(s)

DESCRIPTION

       Exifprobe  reads image files produced by digital cameras (including several so-called "raw" file formats)
       and reports the structure of the files and the auxiliary data and  metadata  contained  within  them.  In
       addition  to TIFF, JPEG, and EXIF, the program understands several formats which may contain "raw" camera
       data, including MRW, CIFF/CRW, JP2/JPEG2000, RAF, and X3F,  as  well  as  most  most  TIFF-derived  "raw"
       formats,  including  DNG,  ORF, CR2, NEF, K25/KDC/DCR, and PEF. Other TIFF or JPEG-derived formats (which
       begin with a TIFF header or JPEG marker) should also be readable.  The program attempts  to  display  ALL
       information in the image file, in a manner which mimics the structure of the file as closely as possible.

       Where  possible, output is not limited to “known” data items.  I.e. for tagged file formats, unknown tags
       will be identified by tag number and type, and values shown without interpretation. Proprietary, untagged
       or  fixed  format  files  do  not  permit  this, but unknown or undefined data can usually be dumped in a
       hex/ascii format for examination, so long as the file structure is understood. The  program  will  report
       the  contents of any properly structured TIFF IFD or CIFF directory encountered, even when entry tags are
       not recognized.  Recognized TIFF, TIFF/EP, DNG, and CIFF tags are expanded,  including  EXIF2.2  sections
       and  camera MakerNotes which are found to be in TIFF IFD format.  TIFF and/or JPEG sections found in MRW,
       RAF or JP2 files will be reported, along with the “native” sections of those formats. JP2 boxes  will  be
       reported whether known or unknown, and expanded if known.  Unknown boxes cannot be expanded, since JP2 is
       not tagged below the box (or sub-box) level.

       An effort is made to identify all sub-images (in any image format) contained in  multi-image  files;  the
       location,  size,  and  format  of  such images is reported, and a hex/ascii dump of the image data may be
       requested. Image data is not processed, but the program will recognize and report all standard  JPEG  and
       JPEG2000 markers (including JPEG APPn markers) and will expand APP0 (JFIF/JFXX) and APP1 (EXIF) sections.

       Since  the  program  does  not  attempt  to  display images or modify the contents of files, it can often
       recover from and report failures or warn about structural oddities which would confuse a display or image
       edit program.

       There are a wide variety of output formats, selectable in detail by the “lower case” options described in
       the OPTIONS section below.  These options select which items to print, and within  narrow  confines,  how
       and where to print them.  A large number of combinations of options exist, and some of those combinations
       may not be  sensible.   In  order  to  avoid  the  need  for  constant  creativity  or  invention,  three
       “prefabricated” output formats are provided, selected by the upper case option letters.

       The  structural  (-S)  output  format  (default) 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 IFDs, CIFF directories, or JP2 boxes, 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 and CIFF directories are reported at the
       offsets where they are found (usually following the entry list for TIFF, or in the HEAP for  CIFF).   The
       peculiar “reverse” structures of CIFF and X3F formats are handled sensibly.

       The  report  format  (-R)  shows  the  “logical”  structure  of the image file, but eliminates addresses,
       offsets, IFD value types and counts, etc., and prints “offset” directory values inline,  while  otherwise
       preserving the primary structure of the data.

       The  list  format  (-L)  omits  all  structural  data.  It  writes only “tag” values from TIFF, Exif, and
       MakerNote IFDs, CIFF or other format directories or JP2 boxes, including section and  image  offsets  and
       sizes.   Identifiable values from non-tagged formats are written in a similar manner.  This format may be
       useful for extracting information for photo galleries.

       The structural format is default.  This format provides maximum information  about  the  contents  of  an
       image file, and may reveal information (sometimes important) which other formats (or image info programs)
       may hide.

       In all formats, the filename, file type, file size, an image summary, and a summary file format  will  be
       displayed  (even  when  all  other  output  is  disabled by option). The image summary includes a summary
       report, for each subimage found, giving the image type, compression  type  (if  any),  pixel  size,  data
       length, file offset where found, and section of the file which includes or references the image.  In some
       cases, short remarks may be included for images mentioned but not found, etc. The summary concludes  with
       the number of images found, and number of images not found (if any). The summary is followed by a listing
       of format sections found (TIFF/JPEG/EXIF, etc.) and a type identifier for TIFF-derived types  (e.g.  CR2)
       where possible.

       An  environment  variable  may  be set to a list of options to customize the default output behavior (see
       below).

   MakerNotes
       Camera-generated images which contain EXIF sections may also contain sections introduced by  a  MakerNote
       tag,  which  may  contain  information  about camera or firmware settings used to produce the image.  The
       structure and contents of MakerNote sections is not mandated by the Exif specification, but  many  camera
       MakerNotes  are written in TIFF IFD format, possibly offset following an ID string or new TIFF header (or
       both), and  sometimes  with  inventive  handling  of  “offsets”.   Exifprobe  currently  understands  and
       automatically  detects  such  schemes and prints the contents of the IFD (and the ID string, if present).
       This detection is not dependent upon make or model of camera.  Make and Model information will usually be
       available  from  the  first TIFF IFD in the file; this information may be used to interpret the MakerNote
       information for “known” cameras; otherwise, tag numbers, sizes, types, and raw values from the  IFD  will
       be shown (if permitted by option settings).

       Some  camera  makes  are  known  to  use more than one version of MakerNote, depending upon model.  If an
       unknown model from that maker is encountered, the  note  will  be  briefly  examined  and  a  noteversion
       assigned automatically if possible.  If that fails, the note will be displayed without interpretation.

       MakerNotes  which  are  not  in  a  recognizable  IFD  format will be reported (start and end offsets) in
       structural (-S) and report (-R) formats , and the beginning of the note section  hex/ascii  dumped.   The
       remainder of the note may be dumped, in whole or in part, by the -M option (see below).

       In  list (-L) format, the starting file offset and length supplied by the MakerNote tag will be reported,
       and three “pseudo” tags which report the offset (MakerNote.Offset), size  (MakerNote.Length)  and  scheme
       (MakerNote.Scheme) will appear.

   JPEG APPn
       In  JPEG  interchange  format files, APP0 (JFIF,JFXX) and APP1 (Exif) segments will be fully decoded, and
       the “printable” portions of APP12 sections will be displayed. APP3 (Meta) sections will be  expanded  and
       the  contained TIFF IFD will be displayed, although little interpretation is done. Other APP markers will
       be reported, and the sections may be hex/ascii dumped in whole or in  part  using  the  -A  option.  APP1
       sections not marked as Exif will be treated as unknown.

   ANSI Color
       The  program  (by  default)  emits  ANSI  color  escape  sequences  to  highlight  Exif,  MakerNote , and
       Interoperability sub-sections.  Errors  and  warnings  are  highlighted  in  red.   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.  LIST mode turns color sequences off.

       The program may be compiled without support for color sequences.

OUTPUT FORMATS

       In all formats, and regardless of option setting, the first three lines of output for each file processed
       are  the  filename,  image  type (TIFF, CIFF, JP2, etc.), and the file size.  If the type (taken from the
       file header) specifies a data byte order, the byte order will be indicated with the type as  `II'  (Intel
       byte  order)  or `MM' (Motorola byte order).  The image summary and summary format will always be printed
       at the end.

   Structural Format
       Structural format output begins with a display of the file header.  The header is followed  by  lines  of
       the form
              <IFD0>
                  ...
              </IFD0>
              <APP0>
                  ...
              </APP0>
              <DIRECTORY>
                  ...
              </DIRECTORY>
       etc.   to  indicate  the  beginning and end of each “section” of the file.  Actual section names will, of
       course, depend upon the file format and/or the tags encountered.  Only the TIFF IFD format  is  described
       here;  other formats are similar, except that JP2 box names are printed inside square (rather than angle)
       brackets, and MRW section names inside curly braces.

       Within sections, directory entries, subdirectories, the contents of  known  APP  sections,  JPEG  segment
       markers, etc. are printed.  Non-jpeg image data sections will be shown with a few lines of hex/ascii dump
       of the beginning of the data.

       Each line of output is preceded by a file offset given in hex and decimal.  File offsets are preceded  by
       the  character `@', except that section end markers are preceded by `-' and the character `>' may be used
       to mark sections which are located outside the IFD in which they are declared.  If that section  includes
       a  subsection  which is similarly afflicted, the '>' is replaced by '+' in the subsection.  In JP2 files,
       the '@' is replaced by '=', for no particular reason.

       JPEG and JPEG2000 segment markers are written with the  marker  name,  and  the  decoded  values  of  any
       information associated with the marker.

       TIFF  information  is  written  in  a  manner  which  reflects  the structure of the IFD, with all values
       interpreted according to the applicable specification where possible.  All IFD fields are reported.   The
       following fields will appear on each line (in the order given, following the file offset):

       •      Tag number in hex and decimal representations, enclosed in brackets.

       •      Tag  name  (where  known);  names  for unknown tags are created as a hex representation of the tag
              number prefixed by the string 'TAG_'.

       •      The TIFF type number, name, and byte count for the associated value, enclosed in square brackets.

       •      The “value/offset” for the entry.  If the value fits in the four bytes of the entry, the value  is
              printed directly.

              If  the value for the entry did not fit in the four bytes of the entry, then the value found is an
              offset to the actual location of the data; that offset is printed preceded by an '@' symbol.   The
              actual  value  will  be  printed later, at the file offset where it was found (except in some non-
              conforming MakerNote IFDs).  If the value requires interpretation (e.g. TIFF  Orientation)  it  is
              followed by an '=' sign and the interpretation, enclosed in double quotes (e.g. “0,0 top left”).

       The  list  of  entries  will  be  followed by a line giving the offset to the next IFD (often 0) which is
       always found at the end of a TIFF IFD entry list.

       If there were offset entries found in the list above, the TIFF (and  Exif)  specification  requires  that
       they  will  be  located next in the file, immediately following the directory entries.  This stricture is
       frequently ignored in MakerNotes and TIFF-derived formats.  A  line  reporting  the  beginning  of  these
       offset values will be printed immediately after the next IFD offset, followed by one line for each offset
       entry, with the tag name repeated, followed by the actual value, followed by its interpretation (if any).

       Multiple values in entries are printed on a single line, but large lists will be elided,  with  just  the
       first  two  or  three  values  shown,  followed by an ellipsis, followed by the last value, the number of
       values, and the offset of the last value in the list.  The full value list may be printed using  the  -eA
       option.

       In  structural  format,  ascii  strings  in  the entry are printed for the entire length given in the IFD
       entry, including nulls and non-ascii values (if  present),  which  are  printed  in  `backslashed'  octal
       notation.   The  -ea  option  may  be used to force ascii values to be printed only up to the first null.
       This option is often necessary for CIFF format files, and is enabled by default in “list” mode.

       Entries are indented slightly from the start identifier for the IFD, and subsegments (e.g. an  Exif  IFD,
       SubIFD, or MakerNote) will be further indented in order to indicate the structure of the file.

       The  resulting  output  displays  the contents of the IFD much as it appears in the file (see the TIFF or
       EXIF specifications for descriptions of the IFD format).

       Finally, the start and end of actual image data for the primary image (and possibly thumbnail or reduced-
       resolution  image)  is  reported  at the end.  For JPEG images, this usually includes display of the JPEG
       segment markers within the image.  Binary format image data will be shown with a brief hex/ascii dump  of
       the beginning of the data, between start and end markers.

       Note  that  values preceded by `@' are always offsets from the beginning of the file to the actual value.
       IFD offsets are usually recorded in the file as offsets relative to the  beginning  of  the  TIFF  header
       (which is offset from the beginning of the file in JPEG APP1 files) but are adjusted by exifprobe to show
       offset from the beginning of the file.  If it is important to see the recorded value, the -er option  may
       be used to print the recorded value in parentheses, following the adjusted file offset.

   Report Format
       The  report  format (-R) displays all sections and segments of the image file, including start and end of
       sections, but eliminates much of the “cruft” of  the  structural  format  by  eliminating  address/offset
       information  and  much  of  the  `internal'  information  from the TIFF IFD (tag number, type and count).
       Offset values are printed inline with the tag name.  The output is indented to show the logical structure
       of the image file, but is much less difficult to view than the structural format.

   List format
       The  list  format  (-L)  suppresses  structural information, writing only content in the format tagname =
       value or tagname = value = “what value means”. For non-tagged file formats, the tagname will be  replaced
       by  a fixed identifier for the item. In LIST format, “long” tagnames are used, which include the names of
       all parent sections of the section in which the data  is  found.   Long  tagnames  can  be  toggled  off,
       although this is unwise if the file contains multiple image sections.

       The  “value”  of  tags  or  items  which represent an offset to a subsection or image are printed in list
       format as “@offset:length”.

       The List format is used  by  the  auxiliary  script  exifgrep,  which  permits  selective  extraction  of
       information e.g. for photo galleries, and output in (almost) “shell variable” format.

   Custom Formats
       The  -Z  option  “zeroes”  all  option  flags (except the longnames modifier), after which the lower-case
       options may be used to set desired options.  The lower-case options are `toggles', which may also be used
       to turn off items in the pre-defined formats.

       As an example, the command:

           exifprobe -Z -et somefile.tif

       may be used to list just the TIFF and Exif tags, without values (or anything else) in “long name” format.

            exifprobe -eNnT somefile.tif

       will  print  in  structural  format,  suppressing output of hex and decimal tag numbers, and tag type and
       count.

       The “zero-level” output still reports the file data and image summary as described above.

OPTIONS

       The environment variable EXIFPROBE_OPTIONS may be set to any valid option string, which will be evaluated
       before command line options. E.g.

       export EXIFPROBE_OPTIONS='-L -c'

       will make list format the default output format, and re-enable the color sequences turned off by -L.

       Options are evaluated from left to right, so -Z should be given first, while -D (decimal only) or -X (hex
       only) should be given last.

       -S        Structure mode: (default) almost everything; offset values not inline

       -R        Report mode: like structural, but only tagnames and decimal values, indented, inline

       -L        List mode: print only tags and values (including interpreted values); no section info; no color

       -Z        turn off (zero) all optional output. Prints only filename, filetype, filesize,  image  summary,
                 and file format.

       -c        toggle  use  of  ANSI color control sequences to emphasize EXIF sections.  (default 'on' except
                 list mode, unless compiled with no color support)

       -a        toggle printing of addresses (file offsets) in hex and decimal

       -I        three-way toggle indent (after address -> before -> none)

       -o        toggle “inline” print of offset IFD values

       -p[items] toggle print identifiers for:

                 s   - sections (IFDs, APPn)

                 g   - segments (JPEG segments)

                 a   - JPEG APP0...APPn entries

                 l   - long names (dot-separated list of parent sections preceding item name)

                 e   - entries. Includes tag names, numbers, types, values.

                 m   - print MakerNote scheme description

                 M   - watch debug of MakerNote scheme detection

       -e[items] toggle print IFD entry items:

                 t   - tagname

                 n   - tag number in decimal

                 N   - tag number in hex

                 T   - entry type and count

                 v   - value in decimal

                 V   - value in hex

                 o   - file offset to value in decimal

                 O   - file offset to value in hex

                 r   - relative (unadjusted) offset in decimal

                 R   - also print “raw” values where normal values are computed (e.g. rational values,  or  some
                     MakerNote values where APEX values must be computed from a raw value).

                 A   - print ALL elements of multiple-value tags

                 a   - ascii "ignore length" (stop at first null)

       -D        limit all enabled numerical values to decimal only (addresses, tag numbers, offsets, values)

       -X        limit all enabled numerical values to hex only (addresses, tag numbers, offsets, values)

       -U[len|a] dump len (or all) bytes of UNDEFINED data found in TIFF IFDS in hex/ascii form (but only if the
                 structure of the data is not known)

       -M[len|a] dump len (or all) bytes of unrecognized MakerNotes in hex/ascii form (but only if the structure
                 of the data is not known)

       -A[len|a] dump  len  (or  all) bytes of unrecognized JPEG APP segments in hex/ascii form (but only if the
                 structure of the data is not known)

       -B[len|a] dump len (or all) bytes of binary image data or failed JPEG image data

       -C[make]+[model]
                 print a list of camera makes/models matching make or model as substrings.  `+' by itself prints
                 everything

       -O start_offset
                 start processing at file offset start_offset

       -n        print filename at beginning of each line of output (useful when grepping multiple files in LIST
                 mode)

       -N noteversion
                 force use of note version noteversion when interpreting MakerNotes.  Useful only  if  you  know
                 what you're doing.

       -m make   Force  the  makernote  code to interpret the note according to the make given, rather than that
                 contained in the file.

       -l model  force the makernote code to interpret the note according to the model given, rather  than  that
                 contained in the file.

       -t        This  option has effect only if set in EXIFPROBE_OPTIONS.  If set when command line options are
                 processed, color  will be be off by default if the output is not to a tty.   Any  command  line
                 option which toggles or sets color (e.g. “-R”) will turn color back on.

       -u        Print  “raw”  Unicode  data.   Normally  16 bit data is printed as though the high byte is zero
                 (which is often the case).  Writing the nulls would annoy most ascii terminal devices,  so  the
                 default is more hospitable.  The -u option forces printing of the full value.

       -h        print a help message

       -V        print program version and copyright

SEE ALSO

       exifgrep(1)
       The TIFF6 specification:
        https://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf
       The Exif 2.2 specification:
        http://tsc.jeita.or.jp/avs/data/cp3451.pdf
       The JFIF specification:
        http://www.w3.org/Graphics/JPEG/jfif3.pdf
       The TIFF/EP specification:
        http://www.map.tu.chiba-u.ac.jp/IEC/100/TA2/recdoc/N4378.pdf
       The CIFF specification
        http://xyrion.org/ciff/CIFFspecV1R04.pdf
       The X3F public specification
        http://www.sd9.org.uk/X3F_Format.pdf
       The JPEG2000 public draft (outdated)
        http://www.jpeg.org/public/fcd15444-1.pdf

DIAGNOSTICS

       Most  diagnostics are printed “inline” to stdout, in red if color is enabled, and the program attempts to
       proceed.

BUGS

       Interpretation of MakerNote data for specific cameras is incomplete and probably always will be.  The X3F
       specification  is  incomplete,  and the final JPEG2000/JP2 specification is not freely available; support
       for these formats is therefore not complete, and may not be entirely accurate.

       The RAF file format support is preliminary (there is no published specification).

       Floating point values read from the file are expected to be in IEEE format (or at least, native  format);
       i.e. no conversions are attempted.

       ANSI color sequence support should use termcap/terminfo facilities; it does not.

AUTHOR

       Duane H. Hesser
       dhh@virtual-cafe.com

                                                      LOCAL                                         EXIFPROBE(1)