Supported File Types
Exifprobe will process files in the formats mentioned below.
The focus in development has been on images produced by digital cameras,
but images produced by other devices (e.g. scanners) are also of interest.
It is the format of the image file which matters, not the producing
device. It is worth noting that the program is not limited to EXIF
formats. Despite the name, the primary purpose of the program has
always been to illuminate the structure of image files, and to present
all of the information found, most of which, until fairly recently,
has been contained in EXIF sections. The program will quite readily
report the contents of JFIF files, for example...there just
isn't as much interesting data to report. "Plain"
TIFF and JPEG files are handled with or without EXIF contents.
The most recent distribution of exifprobe (2.0.0) adds support
for a number of formats often reported as "raw"
formats, although that label best applies to the format of the primary
image data contained, rather than to the file format, Many of these
files are based upon or derived from the TIFF file format.
TIFF/TIFFEP
The TIFF and TIFFEP specifications are open, published and available.
I believe the implementation of these formats to be reasonably complete
and accurate,
Exifprobe makes some checks of format, but since it attempts
neither display nor rewriting of data, it can (and will) accept and
read files which baseline TIFF display and edit programs will refuse
to contemplate.
It must be noted that there are several camera formats (some of which
are noted below) which identify themselves as TIFF (via a TIFF header)
and use the IFD as primary format, but which pay no obeisance to the
TIFF specification.
JPEG
The JPEG specification is open and well-defined. Exifprobe reads and
displays standard JPEG "markers'' and picks interesting
data from them for the image summary. APPn markers are recognized,
but only APP0 (JFIF/JFXX/CIFF) and APP1 (EXIF) markers are fully expanded.
APP3 (Meta) sections are expanded and the included TIFF section displayed,
but little interpretation is done. Recently some information about
these sections in Kodak cameras has begun to appear on the internet,
but I have few samples which contain these sections and the information
published so far is not sufficiently detailed to permit more complete
expansion of the IFD. APP12 markers are incompletely and crudely expanded.
Other markers are reported, but may be displayed only by hex/ascii
dump.
EXIF
Exifprobe supports version 2.2 (and earlier) of the EXIF
specification. There are three tags (SpatialFrequencyResponse, OECF,
and SpectralSensitivity) which are reported but not expanded. The
EXIF specification makes extensive use of the TIFF format, but regrettably
forces some violations of that specification (as modified by TechNote
II in 1995).
MakerNotes
Exifprobe will read and expand all MakerNotes which
are written in a format similar to theTIFF IFD format.
Some camera makers produce MakerNotes in proprietary, mostly fully
binary, formats which are difficult to reverse-engineer. All of the
"known" MakerNote formats are in a semblance of
TIFF IFD format. Exifprobe will interpret all MakerNotes
for which information has been posted on the internet. Nearly all
of this information has been supplied by camera owners who have spent
a great deal of time and effort decoding the information found in
camera images. Only one manufactureer, Foveon, has published
information describing a MakerNote format. Foveon provides a description
of the MakerNote format used in Sigma/Foveon cameras. This MakerNote
is found in JPEG images produced by these cameras, not in X3F files
(Foveon has also provided an abbreviated description of the X3F format,
sufficient to read and display the contents of the file).
There are a number of variations of IFD format used for MakerNotes.
Exifprobe attempts to avoid dependence upon make and
model information as much as possible; it determines the 'scheme'
used to write the note without reference to make or model, so that
it may be able to present at least the raw data from an unknown model.
Make and model information may then be used to determine how the note
is interpreted, Some manufacturers have used just one MakerNote version
for all models to date (although some models may use different subsets
of the data). Exifprobe assumes that an unknown model for
these makers (i.e. unknown to exifprobe) will use that same noteversion.
Other manufacturers have used different noteversions for different
models, with different schemes, different tag numbers, even different
interpretations for the same tag number). Exifprobe will
in that case attempt to deduce the appropriate noteversion to use
for a model it does not recognize. If that fails, only the raw data
is presented.
CR2
The Canon CR2 format is a modified TIFF format, and will show up as
FileType "TIFF" when probed. Aside from use of the
TIFF IFD, the format pays little attention to the requirements of
the TIFF specification.
All CR2 images I have seen include four TIFF IFDs, although it is
likely that the number depends upon user camera settings. There are
a couple of peculiar things about two of these IFDs.
IFD 2 marks the related image data as JPEG compressed, using the old,
deprecated Compression value '6'. The PhotoMetricInterpretation is
given as "RGB", and the data length is exactly the
length required for 3 component RGB at the pixel size given, suggesting
that it not compressed. In fact the extracted RGB data can be wrapped
in a TIFF IFD (using e.g. the ImageMagick convert
program) to produce a displayable RGB image. The data is uncompressed
RGB data, despite the JPEG compression indicator.
IFD 3 contains 12 bit, 2 component lossless JPEG image data. Even
JPEG libraries specially compiled to handle 12 bit data and lossless
JPEG don't know what to do with 2 components. I don't know what this
is, but it may be CFA data ``losslessly'' compressed.
Dave Coffin's dcraw program will handle these images; unfortunately
"dcraw.c" is not comprehensible by mere mortals...
ORF
Olympus ORF files come in two flavors, both of which are based upon
the TIFF IFD. Olympus has taken the unusual step of marking their
formats with unique "magic numbers" in the header
(a different magic number for each flavor). This simple step should
have been taken for the other TIFF-derived formats (including DNG),
since it informs a TIFF reader immediately that it can't handle this
file.
One of the formats (magic=0x5352="RS") contains
primary image data in "packed" 12 bit CFA format.
The other (magic=0x4f52="RO") provides 12 bit "unpacked''
(16 bits per sample) CFA data. The data do not appear to be compressed.
NEF
NEF files are fundamentally TIFFEP format. Primary image data is stored
as 12 bit CFA, either uncompressed or compressed by a proprietary
technique. It is reported that the color balance data in some recent
high-end Nikons is encrypted.
DNG
DNG format is strongly based upon the TIFF format, with a collection
of additional tags.
K25/KDC
KDC files are TIFFEP format, with primary image data stored as uncompressed
CFA, or CFA compressed by a proprietary compression scheme. All K25
files I have seen are also TIFFEP with uncompressed CFA (no compressed
data seen).
CIFF/CRW
CIFF is a proprietary (but published) format of Canon. It is used
as a "raw" format in CRW files, or may be included
in an APP0 segment in JPEG files as a means to include metadata. The
format uses directories with fixed length (ten bytes) entries. It
is similar to TIFF in that values may be stored directly in the entry
or at an offset, but places directories AFTER data to which the entries
may point (which may be subdirectories, which may point to earlier
data...). The specification may be found at
MRW
MRW is a proprietary "raw" image format of Konica
Minolta. Support in exifprobe is based upon information presented
by Dalibor Jelinek at
PEF
Pentax PEF format is rather standard TIFF format which stores primary
image data as Packbits RLE compressed CFA.
RAF
RAF is a proprietary "raw" format of Fujifilm. It
is an untagged format and the implementation in exifprobe
is preliminary, based upon nothing more than examination of a few
images I've downloaded from the internet. The primary image data is
"interpolated" CFA (is that really raw?)
uncompressed. The CFA data for the secondary pixels used in some models
is apparently interlaced by rows with the data for primary pixels.
I assume that the tables found in the images are white balance or
color balance tables.
The files contain a JPEG image complete with EXIF data, which will
be displayed by exifprobe.
Feedback is welcome.
JP2/JPEG2000
The final JPEG2000 specification has not been released to the public.
It is copyrighted by the IOC, which appears disinclined to make it
public. The implementation of the format (and JP2) in exifprobe
is based upon the outdated draft specification released some years
ago and the jasper code available at
X3F
The X3F "raw" image format for the Sigma/Foveon
image sensor is partially described in a document provided at
Some detail information is blacklined (as proprietary) from the document,
but the structural information is sufficient to read the files. One
section which is not described by the published data is found in all
samples I have seen (CAMF), and that section cannot be expanded
as a result. There may be others. The format allows inclusion of image
data in a variety of formats, but descriptors for some of the formats
are "reserved".