The Japan Electronics and Information Technology Industries Association (JEITA) set up a standard for an
exchange format for digital still cameras pictures, known as Exif. This standard defines a structure for
embedding meta-data in a JPEG picture, to be written in the APP1 segment. The generalities and the
reference documents about this structure are introduced in the Structure appendix; this section and its
subsections list the valid interoperability record tags as well as their format.
CanonicalExif2.2andTIFF6.0tagsforIFD0andIFD1
In general, IFD0 and IFD1 can host tags from the same set. These tags are divided in three categories:
canonical, additional and registered to companies. The tags listed in the following table are to be
considered canonical; they are described at length in the Exif standard document, and can be found both
in the IFD0 and in the IFD1 (some of them, in fact, must be present in both directories). The 'class'
column carries the tag class; possible values are: A (image data structure), B (offsets), C (image data
characteristics), D (other tags) and P (pointers to other IFDs). The two following columns show tag
hexadecimal codes and names. The 'type' column specifies the (always unsigned) tag type: I (short or
long), S (short), L (long), R (rational) and A (ASCII, always null terminated). The 'count' column
obviously carries the tag count ('-' for a variable count, either because it is a variable length string
or because it depends on other tags).
The 'IFD0' and 'IFD1' columns specify the support level in the respective directory; each column
comprises four letters, because both the primary image (IFD0) and the thumbnail (IFD1) can come in four
varieties (uncompressed chunky, uncompressed planar, uncompressed YCC and JPEG compressed). This module
currently focuses only on JPEG pictures (not TIFF), so only the fourth letter of the 'IFD0' column is
interesting, but note that the thumbnail of a JPEG image can be uncompressed. The support level codes
stand for: M (mandatory), R (recommended), O (optional), N (not_recorded) and J (included in JPEG marker
and so not recorded).
The 'thumbnail-only' column shows a 'T' for those records which cannot be set/changed by the user
exception made during a thumbnail update action (and some of them are calculated automatically anyway).
Note that, in some cases, it is possible to set a tag when its support level is 'N' (e.g., the YCbCr
stuff in IFD1): picture displaying programs should however simply ignore it. Some other tags, concerning
offsets or thumbnail specific information, cannot be set by the module user (they are calculated
automatically, more reliably): these are marked by 'calculated' in the notes, or by a 'T' in the
thumbnail-only column.
Hexadecimal code count IFD0 IFD1 thumbnail-only
class | Tag name type | supp.supp.| notes
| | | | | | | | |
A 100 ImageWidth I 1 MMMJ MMMJ T (not JPEG) pixels/row
A 101 ImageLength I 1 MMMJ MMMJ T (not JPEG) num. rows
A 102 BitsPerSample S 3 MMMJ MMMJ T (not JPEG) 8,8,8
A 103 Compression S 1 MMMJ MMMM T 1(uncompr.) or 6(JPEG)
A 106 PhotometricInterpretation S 1 MMMN MMMJ 2(RGB) or 6(YCbCr)
D 10e ImageDescription A - RRRR OOOO (see note 1)
D 10f Make A - RRRR OOOO camera manufacturer
D 110 Model A - RRRR OOOO camera model
B 111 StripOffsets I - MMMN MMMN calculated
A 112 Orientation S 1 RRRR OOOO (see note 2)
A 115 SamplesPerPixel S 1 MMMJ MMMJ T (not JPEG) 3 compon.
B 116 RowsPerStrip I 1 MMMN MMMN T (not JPEG)
B 117 StripByteCounts I - MMMN MMMN T (not JPEG)
A 11a XResolution R 1 MMMM MMMM (see note 3)
A 11b YResolution R 1 MMMM MMMM (see note 3)
A 11c PlanarConfiguration S 1 OMOJ OMOJ (see note 4)
A 128 ResolutionUnit S 1 MMMM MMMM (see note 3)
C 12d TransferFunction S 768 RRRR OOOO (see note 5)
D 131 Software A - OOOO OOOO Exif software/firmware
D 132 DateTime A 20 RRRR OOOO (see note 6)
D 13b Artist A - OOOO OOOO owner/photogr./creator
C 13e WhitePoint R 2 OOOO OOOO (see note 5)
C 13f PrimaryChromaticities R 6 OOOO OOOO (see note 5)
B 201 JPEGInterchangeFormat L 1 NNNN NNNM calculated
B 202 JPEGInterchangeFormatLength L 1 NNNN NNNM T (only JPEG)
C 211 YCbCrCoefficients R 3 NNOO NNOO (see note 7)
A 212 YCbCrSubSampling S 2 NNMJ NNMJ (see note 7)
A 213 YCbCrPositioning S 1 NNMM NNOO (see note 7)
C 214 ReferenceBlackWhite R 6 OOOO OOOO (see note 8)
D 8298 Copyright A - OOOO OOOO of photogr./editor
P 8769 ExifOffset L 1 MMMM OOOO calculated
P 8825 GPSInfo L 1 OOOO OOOO calculated
Notes:
1) The image description is a string containing a title or a comment for
the image and all characters must be one byte long. When a two-byte
code is necessary, the Exif Private tag 'UserComment' is to be used
(see L</Exif tags for the 0th IFD Exif private subdirectory>).
2) The image orientation is defined with respect to first row and the
first column, according to the following table (values not listed here
are reserved and should not be used); the default value is 1.
------------------------ ------------------------
val. 0th row 0th column val. 0th row 0th column
----|--------|---------- ----|--------|----------
1 top left 5 left top
2 top right 6 right top
3 bottom right 7 right bottom
4 bottom left 8 left bottom
------------------------ ------------------------
3) The 'XResolution' and 'YResolution' tags indicate the number of pixels
per resolution unit (given by the 'ResolutionUnit' tag) along the
image width or height respectively. The resolution unit can be only 2
(inches) or 3 (centimetres), all other values being reserved. When
the resolution is not set, a value of 72 dots/inch is assumed.
4) This indicates whether pixel components are recorded in chunky (1,
default) or planar (2) format (only for TIFF images; JPEG compressed
files use a JPEG marker instead); all other values are reserved.
5) 'TransferFunction', 'WhitePoint' and 'PrimaryChromaticities' specify,
respectively, a transfer function for the image in tabular style
(3*256 short integers), the chromaticity of the white point, and the
chromaticity of the three primary colours of the image. Normally these
tags are not necessary, since the colour space is specified in the
'ColorSpace' L<private Exif tag|/Exif tags for the 0th IFD Exif
private subdirectory>.
6) This tag indicates the time of the "image creation" (i.e., the time
the file was last changed). The tag value is a null terminated string
of the form "YYYY:MM:DD HH:MM:SS" (note the space in the middle and
the colon signs), in 24-hour format. If the tag is set, but the value
is not meaningful, all numbers should be set to spaces (replacing also
the colons with spaces is permitted too). See also 'DateTimeOriginal'
and 'DateTimeDigitized' in the SubIFD L<section|/Exif tags for the 0th
IFD Exif private subdirectory>. [Currently, only years after 1800 can
be set with this Perl module].
7) Digital images are often displayed on RGB devices, but recorded data
can be saved in a YCbCr colour space because of the JPEG
compression. The Exif standard provides three tags for translating one
space into the other (see the sYCC IEC standard for more details).
'YCbCrSubSampling' is the sampling ratio of the chrominance components
in relation to the luminance component; its value can be only [2, 1]
(for YCbCr 4:2:2) or [2, 2] (for YCbCr 4:2:0). In JPEG compressed data
a JPEG marker is used instead of this tag. 'YCbCrPositioning' is the
position of the chrominance components in relation to the luminance
component, and is meaningful only for JPEG compressed data or
uncompressed YCbCr data; its value can be only 1 (centred, default) or
2 (co-sited). 'YCbCrCoefficients' contains the matrix coefficients for
the transformation from RGB to YCbCr image data.
8) This tags contains the reference values for the black and white points
of the image. No defaults are given in the TIFF standard, but Exif
assumes the following values: [0, 255, 0, 255, 0, 255] (when
'PhotometricInterpretation' is RGB) or [0, 255, 0, 128, 0, 128] (when
'PhotometricInterpretation' is YCbCr).
AdditionalTIFF6.0tagsnotinExif2.2forIFD0
The tags listed in the following table are present in the TIFF 6.0 standard and not in the Exif 2.2
standard. They are presented here just for reference, since some digital cameras or programs still
include them, incorrectly, in the IFD0 (they are not present in IFD1, I assume). The 'class' column
carries the tag class; possible values are: a (TIFF 6.0 tags for baseline TIFFs not in Exif 2.2), b
(extensions to TIFF 6.0 specs not in Exif 2.2) and '-' (updates and corrections to TIFF 6.0). The two
following columns show tag hexadecimal codes and names. The 'type' column specifies the tag type: i (byte
or short), I (short or long), B (byte), S (short), L (long), R (rational), F (floating point numbers), D
(double precision floating point numbers), '-' (unspecified, best fit) and A (ASCII, always null
terminated). The 'count' column obviously carries the tag count ('-' that it is variable, either because
it is a variable length string or because it depends on other tags).
Hexadecimal code count notes
class | Tag name type | |
| | | | | |
a fe NewSubfileType L 1 TIFFs can hold multiple images
a ff SubFileType S 1 TIFFs can hold multiple images
a 107 Thresholding S 1 for Graylevel to Black&White
a 108 CellWidth S 1 halftoning matrix support
a 109 CellLength S 1 halftoning matrix support
a 10a FillOrder S 1 bits' logical order in a byte
b 10d DocumentName A - document storage and retrieval
a 118 MinSampleValue S - only for statistical purposes
a 119 MaxSampleValue S - only for statistical purposes
b 11d PageName A - document storage and retrieval
b 11e XPosition R 1 document storage and retrieval
b 11f YPosition R 1 document storage and retrieval
a 120 FreeOffsets L - not recommended for interchange
a 121 FreeByteCounts L - not recommended for interchange
a 122 GrayResponseUnit S 1 for gray-scale images
a 123 GrayResponseCurve S - for gray-scale images
b 124 T4Options L 1 (group 3 options)
b 125 T6Options L 1 (group 4 options)
b 129 PageNumber S 2 document storage and retrieval
- 12c ColorResponseUnit S 1 [obsoleted in TIFF 6.0]
a 13c HostComputer A - computer/OS used for creation
b 13d Predictor S 1 differencing predictor
a 140 Colormap S - RGB colour map
b 141 HalftoneHints S 2 half tone hints
b 142 TileWidth I 1 tiled images
b 143 TileLength I 1 tiled images
b 144 TileOffsets L - tiled images
b 145 TileByteCounts I - tiled images
- 146 BadFaxLines I 1 [TIFF class F draft]
- 147 CleanFaxData S 1 [TIFF class F draft]
- 148 ConsecutiveBadFaxLines I 1 [TIFF class F draft]
- 14a SubIFDs L - [Adobe TIFF technote 1]
b 14c InkSet S 1 CMYK images
b 14d InkNames A - CMYK images
b 14e NumberOfInks S 1 CMYK images
b 150 DotRange i - CMYK images
b 151 TargetPrinter A - CMYK images
a 152 ExtraSamples S - pixel extra components
b 153 SampleFormats S - data sample format
b 154 SMinSampleValue - - data sample format
b 155 SMaxSampleValue - - data sample format
b 156 TransferRange S 6 image colourimetry
- 157 ClipPath B - [Adobe TIFF technote 2]
- 158 XClipPathUnits D 1 [Adobe TIFF technote 2]
- 159 YClipPathUnits D 1 [Adobe TIFF technote 2]
- 15a Indexed S 1 [Adobe TIFF technote 3]
- 15b JPEGTables - - [update (1995) for JPEG-in-TIFF]
- 15f OPIProxy S 1 [Adobe TIFF technote (OPI)]
b 200 JPEGProc S 1 JPEG support
b 203 JPEGRestartInterval S 1 JPEG support
b 205 JPEGLosslessPredictors S - JPEG support
b 206 JPEGPointTransforms S - JPEG support
b 207 JPEGQTables L - JPEG support
b 208 JPEGDCTables L - JPEG support
b 209 JPEGACTables L - JPEG support
- 2bc XML_Packet B - [Adobe XMP technote 9-14-02]
ExiftagsassignedtocompaniesforIFD0andIFD1
The tags listed in the following table, all with a value larger than 0x8000, i.e. 32000, were requested
by individual companies and assigned to them by the TIFF committee; well, at least I think, because it is
very difficult to have an official list for these tags, so that they should be considered at the level of
"rumours". This list also includes some TIFF/IT tags from ISO 12639 and some TIFF/EP tags from ISO 12234
(private Exif tags in JPEG APP1 originated from TIFF/EP, so there is a large intersection: TIFF/EP tags
which are also Exif are not listed here).
Hexadecimal code count notes
| Tag name type | |
| | | | |
800d ImageID A - [Adobe TIFF technote (OPI)]
80b9 RefPts ? ? [Island Graphics ]
80ba RegionTackPoint ? ? [Island Graphics ]
80bb RegionWarpCorners ? ? [Island Graphics ]
80bc RegionAffine ? ? [Island Graphics ]
80e3 Matteing S 1 [SGI (obsoleted by ExtraSamples)]
80e4 DataType S - [SGI (obsoleted by SampleFormat)]
80e5 ImageDepth I 1 [SGI (z dimension)]
80e6 TileDepth I 1 [SGI (subvolume tiling)]
8214 ImageFullWidth L 1 [Pixar (cropped images)]
8215 ImageFullLength L 1 [Pixar (cropped images)]
8216 TextureFormat A - [Pixar (texture formats)]
8217 WrapModes A - [Pixar (texture formats)]
8218 FovCot F 1 [Pixar (texture formats)]
8219 MatrixWorldToScreen F 16 [Pixar (texture formats)]
821a MatrixWorldToCamera F 16 [Pixar (texture formats)]
827d WriterSerialNumber ? ? [Eastman Kodak (device serial number)]
828d CFARepeatPatternDim S 2 [ ISO/DIS 12234-2 TIFF/EP]
828e CFAPattern B - [ ISO/DIS 12234-2 TIFF/EP]
828f BatteryLevel RA 1- [ ISO/DIS 12234-2 TIFF/EP]
830e ModelPixelScaleTag D 3 [SoftDesk (GeoTIFF)]
83bb IPTC/NAA LA - [ ISO/DIS 12234-2 TIFF/EP]
8480 IntergraphMatrixTag D 16 [Intergraph, deprecated (GeoTIFF)]
8482 ModelTiepointTag D - [Intergraph, aka Georef.Tag (GeoTIFF)]
84e0 Site A - [ ISO/DIS 12639 TIFF/IT]
84e1 ColorSequence A - [ ISO/DIS 12639 TIFF/IT]
84e2 IT8Header A - [ ISO/DIS 12639 TIFF/IT]
84e3 RasterPadding S 1 [ ISO/DIS 12639 TIFF/IT]
84e4 BitsPerRunLength S 1 [ ISO/DIS 12639 TIFF/IT]
84e5 BitsPerExtendedRunLength S 1 [ ISO/DIS 12639 TIFF/IT]
84e6 ColorTable B - [ ISO/DIS 12639 TIFF/IT]
84e7 ImageColorIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84e8 BackgroundColorIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84e9 ImageColorValue B 1 [ ISO/DIS 12639 TIFF/IT]
84ea BackgroundColorValue B 1 [ ISO/DIS 12639 TIFF/IT]
84eb PixelIntensityRange B 2 [ ISO/DIS 12639 TIFF/IT]
84ec TransparencyIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84ed ColorCharacterization A - [ ISO/DIS 12639 TIFF/IT]
84ee HCUsage L 1 [ ISO/DIS 12639 TIFF/IT]
84ef TrapIndicator B 1 [ ISO/DIS 12639 TIFF/IT]
84f0 CMYKEquivalent i - [ ISO/DIS 12639 TIFF/IT]
84f1 Reserved_TIFF_IT_1 - - [ ISO/DIS 12639 TIFF/IT]
84f2 Reserved_TIFF_IT_2 - - [ ISO/DIS 12639 TIFF/IT]
84f3 Reserved_TIFF_IT_3 - - [ ISO/DIS 12639 TIFF/IT]
85b8 FrameCount L 1 [Texas Instruments (Sequence Count)]
85d8 ModelTransformationTag D 16 [JPL Cartogr. App. Group (GeoTIFF)]
8649 PhotoshopImageResources B ? [Adobe (Photoshop)]
8773 ICCProfile - - [Inter Colour Consortium (TIFF/IT)]
87af GeoKeyDirectoryTag S - [SPOT Image Inc. (GeoTIFF)]
87b0 GeoDoubleParamsTag D - [SPOT Image Inc. (GeoTIFF)]
87b1 GeoAsciiParamsTag A - [SPOT Image Inc. (GeoTIFF)]
87be JBIGOptions ? ? [Pixel Magic ]
8829 Interlace S 1 [ ISO/DIS 12234-2 TIFF/EP]
882a TimeZoneOffset SS - [ ISO/DIS 12234-2 TIFF/EP]
882b SelfTimerMode S 1 [ ISO/DIS 12234-2 TIFF/EP]
885c FaxRecvParams L 1 [SGI (fax support)]
885d FaxSubAddress A - [SGI (fax support)]
885e FaxRecvTime L 1 [SGI (fax support)]
8871 FedExEDR ? ? [FedEx ]
920b FlashEnergy R - [ ISO/DIS 12234-2 TIFF/EP]
920c SpatialFrequencyResponse - - [ ISO/DIS 12234-2 TIFF/EP]
920d Noise - - [ ISO/DIS 12234-2 TIFF/EP]
920e FocalPlaneXResolution R 1 [ ISO/DIS 12234-2 TIFF/EP]
920f FocalPlaneYResolution R 1 [ ISO/DIS 12234-2 TIFF/EP]
9210 FocalPlaneResolutionUnit S 1 [ ISO/DIS 12234-2 TIFF/EP]
9211 ImageNumber L 1 [ ISO/DIS 12234-2 TIFF/EP]
9212 SecurityClassification A - [ ISO/DIS 12234-2 TIFF/EP]
9213 ImageHistory A - [ ISO/DIS 12234-2 TIFF/EP]
9215 ExposureIndex R - [ ISO/DIS 12234-2 TIFF/EP]
9216 TIFF/EPStandardID B 4 [ ISO/DIS 12234-2 TIFF/EP]
9217 SensingMethod S 1 [ ISO/DIS 12234-2 TIFF/EP]
923f StoNits D 1 [SGI (LogLuv Encoding)]
935c ImageSourceData - - [Adobe Photoshop ]
c4a5 PrintIM_Data ? ? [Epson ]
c44f PhotoshopAnnotations ? ? [Adobe Photoshop ]
ffff DCSHueShiftValues ? ? [Eastman Kodak ]
Exiftagsforthe0thIFDExifprivatesubdirectory
The tags listed in the following table are all the Exif 2.2 private tags, i.e., those which populate the
0th IFD SubIFD; they are described at length in the Exif standard document (but see also the non-standard
Photoshop SubIFD tags at the end of this section). The 'class' column carries the tag class; possible
values are: a (tags relating to version), b (image data characteristics), c (image configuration), d
(user information), e (related file information), f (date and time), g (picture taking conditions) and h
(other Exif 2.2 tags). The two following columns show tag hexadecimal codes and names. The 'type' column
specifies the tag type: I (short or long), S (short), L (long), R (rational), SR (signed rational), U
(undefined) and A (ASCII, always null terminated). The 'count' column obviously carries the tag count
('-' means that it is variable).
The 'SubIFD' column specifies the support level; it comprises four letters, because the primary image
(IFD0) can come in four varieties (uncompressed chunky, uncompressed planar, uncompressed YCC and JPEG
compressed). This module currently focuses only on JPEG pictures (not TIFF), so only the fourth letter is
interesting. The support level codes stand for: M (mandatory), R (recommended), O (optional), and N (not
recorded). Tags marked as 'calculated' in the notes must not be set by the module user, since they
concern offsets and data types (which are calculated automatically, more reliably).
Hexadecimal code count SubIFD notes
class | Tag name type | support|
| | | | | | |
g 829a ExposureTime R 1 RRRR in seconds
g 829d FNumber R 1 OOOO (see note 1)
g 8822 ExposureProgram S 1 OOOO valid values are 0-8
g 8824 SpectralSensitivity A - OOOO see ASTM technical committee
g 8827 ISOSpeedRatings S - OOOO see ISO 12232
g 8828 OECF U - OOOO see ISO 14524
a 9000 ExifVersion U 4 MMMM (see note 2)
f 9003 DateTimeOriginal A 20 OOOO (see note 3)
f 9004 DateTimeDigitized A 20 OOOO (see note 3)
c 9101 ComponentsConfiguration U 4 NNNM (see note 4)
c 9102 CompressedBitsPerPixel R 1 NNNO compression rate
g 9201 ShutterSpeedValue SR 1 OOOO (see note 1)
g 9202 ApertureValue R 1 OOOO (see note 1)
g 9203 BrightnessValue SR 1 OOOO (see note 1)
g 9204 ExposureBiasValue SR 1 OOOO (see note 1)
g 9205 MaxApertureValue R 1 OOOO smallest ApertureValue
g 9206 SubjectDistance R 1 OOOO in meters
g 9207 MeteringMode S 1 OOOO valid values are 0-6 and 255
g 9208 LightSource S 1 OOOO use 0-4,9-15,17-24 or 255
g 9209 Flash S 1 RRRR (see note 5)
g 920a FocalLength R 1 OOOO in millimetres
g 9214 SubjectArea S - OOOO (see note 6)
d 927c MakerNote U - OOOO calculated
d 9286 UserComment U - OOOO (see note 7)
f 9290 SubSecTime A - OOOO (see note 8)
f 9291 SubSecTimeOriginal A - OOOO (see note 8)
f 9292 SubSecTimeDigitized A - OOOO (see note 8)
a a000 FlashpixVersion U 4 MMMM (see note 2)
b a001 ColorSpace S 1 MMMM valid values are 1 and 65535
c a002 PixelXDimension I 1 NNNM picture X-dim, see note 9)
c a003 PixelYDimension I 1 NNNM picture Y-dim, see note 9)
e a004 RelatedSoundFile A 13 OOOO (see note 10)
h a005 InteroperabilityOffset L 1 NNNO calculated by the module
g a20b FlashEnergy R 1 OOOO in BCPS
g a20c SpatialFrequencyResponse U - OOOO (see ISO 12233
g a20e FocalPlaneXResolution R 1 OOOO .
g a20f FocalPlaneYResolution R 1 OOOO .
g a210 FocalPlaneResolutionUnit S 1 OOOO valid values are 2 and 3
g a214 SubjectLocation S 2 OOOO in pixels
g a215 ExposureIndex R 1 OOOO .
g a217 SensingMethod S 1 OOOO valid values are 1-5,7 and 8
g a300 FileSource U 1 OOOO only allowed value is 3
g a301 SceneType U 1 OOOO only allowed value is 1
g a302 CFAPattern U - OOOO (see note 11)
g a401 CustomRendered S 1 OOOO valid values are 0 and 1
g a402 ExposureMode S 1 RRRR valid values are 0,1 and 2
g a403 WhiteBalance S 1 RRRR valid values are 0 and 1
g a404 DigitalZoomRatio R 1 OOOO .
g a405 FocalLengthIn35mmFilm S 1 OOOO .
g a406 SceneCaptureType S 1 RRRR valid values are 0,1,2 and 3
g a407 GainControl S 1 OOOO valid values are 0,1,2,3 & 4
g a408 Contrast S 1 OOOO valid values are 0,1 and 2
g a409 Saturation S 1 OOOO valid values are 0,1 and 2
g a40a Sharpness S 1 OOOO valid values are 0,1 and 2
g a40b DeviceSettingDescription U - OOOO (see note 12)
g a40c SubjectDistanceRange S 1 OOOO valid values are 0,1,2 and 3
h a420 ImageUniqueID A 33 OOOO matches /[0-9a-fA-F]+\000+/
Notes:
1) The camera information in the Exif standard conforms to the APEX
(Additive System of Photographic Exposure) unit system. APEX is a
convenient unit for expressing exposure (Ev). The relation of APEX
to other units is essentially as follows:
--------------------------------------------------------
ApertureValue (Av) = 2 log2(FNumber)
ShutterSpeedValue (Tv) = - log2(ExposureTime)
BrightnessValue (Bv) = log2(Brightness) + constant
FilmSensitivity (Sv) = log2(ASA/3.125) [not in Exif]
Exposure (Ev) = Av + Tv = Bv + Sv
--------------------------------------------------------
2) A version tag is a sequence of four numerical characters representing
the supported version of the standard (e.g., '0220' for version 2.2).
Possible versions for Exif: 1.0, 1.1, 2.0, 2.1, 2.2 and 2.2.1.
Possible versions for Flashpix: 1.0.
3) These tags indicate the time of the original-image data generation and
of its storage (hardly any difference, usually). Their value is a
null terminated string of the form "YYYY:MM:DD HH:MM:SS" (note the
space in the middle and the colon signs), in 24-hour format. If the
tag is set, but the value is not meaningful, all numbers should be set
to spaces (replacing also the colons with spaces is permitted
too). See also 'DateTime' in the canonical tag L<section|/Canonical
Exif 2.2 and TIFF 6.0 tags for IFD0 and IFD1>. [Currently, only years
after 1800 can be set with this Perl module].
4) This tag indicates the channels of each component, arranged in order
from the 1st component to the 4th. For uncompressed data the data
arrangement is given in the 'PhotometricInterpretation' tag. The four
numeric characters must be in the range '0' - '6', and legal combina-
tions are '4560' (if RGB uncompressed) and '1230' (all other cases).
5) This tag indicates the status of flash when the image was shot.
Bit 0 indicates the flash firing status, bits 1 and 2 indicate the
flash return status, bits 3 and 4 indicate the flash mode, bit 5
indicates whether the flash function is present, and bit 6 indicates
"red eye" mode. The allowed decimal values for the bit-mask are
therefore 0, 1, 5, 7, 9, 13, 15, 16, 24, 25, 29, 31, 32, 65, 69,
71, 73, 77, 79, 89, 93 and 95.
6) This tag indicates the location and area of the main subject in the
overall scene. Count can be 2 (a spot defined by two coordinates),
3 (a circle defined by centre coordinates and diameter) and
4 (a rectangle defined by its centre coordinates and its dimensions).
7) The 'UserComment' tag must start with an 8 byte "ID code", which
can be "ASCII\00\00\00", "JIS\00\00\00\00\00", "Unicode" or eight
null bytes for "undefined". The ID code identifies the character
code to be used in the following. A null terminator is not required.
8) A sub-second-time tag value represents a fraction of a second, relative
to the 'DateTime' tag and other such tags, as an ASCII null-terminated
string made of numeric characters; an arbitrary number of spaces can
be appended to the numeric characters string. If sub-second data is not
known the tag value may contain only spaces. The corresponding regular
expression is /\d*\s*\000/.
9) This is the valid width or height of the meaningful image (horizontal
dimension does not include data padding). Overall image dimensions can
be read in the SOF segment (this includes padding however).
10) This tag is used to record the name of an audio file related to the
image data: an ASCII string consisting of 8 characters + '.' + 3
characters, terminated by NULL. The path is not recorded.
The corresponding regular expression is /\w{8}\.\w{3}\000/.
11) This tag indicates the colour filter array (CFA) geometric pattern of
the image sensor when a one-chip colour area sensor is used. The first
four bytes must be interpreted as two shorts giving the horizontal (m)
and vertical (n) repeat pixel units. Then, m x n bytes follow, giving
the actual colour filter values (in the range 0-6).
12) This tag indicates information on the picture-taking conditions of a
particular camera model, for a reader. The first four bytes must be
interpreted as two shorts giving the number of display rows and columns.
The following bytes must be interpreted as Unicode (UCS-2) streams,
NULL terminated and including the signature. The specifics of the
Unicode string are as given in ISO/IEC 10464-1. An approximation to
the corresponding regular expression is /.{4}(\376\377(.{2})*\000\000)*/.
The Adobe's Photoshop program, at least from version 7.0 on, seems to add some non-standard tags to the
Exif private tags subdirectory during the treatment of raw camera pictures. The corresponding record
values are all ASCII strings ($ASCII type), and contain the description of the tags themselves. The
following might be an incomplete list:
Hexadecimal code count value begins with (a null terminated
| Tag name type | string is to be added at the end):
| | | | |
fde8 _OwnerName A - "Owner's Name: "
fde9 _SerialNumber A - "Serial Number: "
fdea _Lens A - "Lens: "
fe4c _RawFile A - "Raw File: "
fe4d _Converter A - "Converter: "
fe4e _WhiteBalance A - "White Balance: "
fe51 _Exposure A - "Exposure: "
fe52 _Shadows A - "Shadows: "
fe53 _Brightness A - "Brightness: "
fe54 _Contrast A - "Contrast: "
fe55 _Saturation A - "Saturation: "
fe56 _Sharpness A - "Sharpness: "
fe57 _Smoothness A - "Smoothness: "
fe58 _MoireFilter A - "Moire Filter: "
Exiftagsforthe0thIFDInteroperabilitysubdirectory
If the main image is compressed (which is always the case for a JPEG picture), the "Design rule for
Camera File system" recommendations suggest to add another IFD below SubIFD, the Interoperability IFD,
pointed to by the InteroperabilityOffset tag; legal tags are listed in the following table. The first two
columns show tag hexadecimal codes and names. The 'type' column specifies the tag type: I (short or
long), U (undefined) and A (ASCII, always null terminated). The 'count' column obviously specifies the
value count ('-' means that it is variable). The "Index" and "Version" tags are mandatory if the subIFD
is present, and they are automatically added by this module if necessary.
Hexadecimal code count SubIFD notes
| Tag name type | suppt. |
| | | | | |
0001 InteroperabilityIndex A 4 NNNM R98 (THM would work for IFD1)
0002 InteroperabilityVersion U 4 NNNM e.g. '0100' means 1.00
1000 RelatedImageFileFormat A - NNNO e.g. 'Exif JPEG Ver. 2.1'
1001 RelatedImageWidth I 1 NNNO image X dimension
1002 RelatedImageLength I 1 NNNO image Y dimension
Exiftagsforthe0thIFDGPSsubdirectory
The following tags are used for GPS attributes in the GPS IFD, pointed to (if present) by the GPSInfo tag
in IFD0 or IFD1. This standard was already used in TIFF/EP, and is now part of Exif 2.2. The first two
columns show tag hexadecimal codes and names. The 'type' column specifies the tag type: B (byte), S
(short), R (rational), U (undefined) and A (ASCII, always null terminated). The 'count' column obviously
specifies the value count ('-' means that it is variable). All GPS tags are optional in a JPEG or TIFF
file, but the 'VersionID' tag must be present, if the GPS IFD is present (a default 'VersionID' =
(2,2,0,0), i.e. v.2.2, is automatically added by this module if necessary).
Hexadecimal code count notes
| Tag name type | |
| | | | |
00 GPSVersionID B 4 mandatory
01 GPSLatitudeRef A 2 (see note 1)
02 GPSLatitude R 3 (see note 2)
03 GPSLongitudeRef A 2 (see note 1)
04 GPSLongitude R 3 (see note 2)
05 GPSAltitudeRef B 1 0 (sea level) or 1 (absolute)
06 GPSAltitude R 1 in metres
07 GPSTimeStamp R 3 hours, minutes and seconds
08 GPSSatellites A - satellites used for measurement
09 GPSStatus A 2 'A' (in progr.) or 'V' (interop.)
0a GPSMeasureMode A 2 '2' (2-dim) or '3' (3-dim)
0b GPSDOP R 1 data degree of precision
0c GPSSpeedRef A 2 (see note 3)
0d GPSSpeed R 1 speed of the GPS receiver
0e GPSTrackRef A 2 (see note 4)
0f GPSTrack R 1 (see note 5)
10 GPSImgDirectionRef A 2 (see note 4)
11 GPSImgDirection R 1 (see note 5)
12 GPSMapDatum A - geodetic survey data
13 GPSDestLatitudeRef A 2 (see note 1)
14 GPSDestLatitude R 3 (see note 2)
15 GPSDestLongitudeRef A 2 (see note 1)
16 GPSDestLongitude R 3 (see note 2)
17 GPSDestBearingRef A 2 (see note 4)
18 GPSDestBearing R 1 (see note 5)
19 GPSDestDistanceRef A 2 (see note 3)
1a GPSDestDistance R 1 distance to the destination point
1b GPSProcessingMethod U - location finding (see note 6)
1c GPSAreaInformation U - name of the GPS area (see note 6)
1d GPSDateStamp A 11 (see note 7)
1e GPSDifferential S 1 0 (without) or 1 (with) diff.corr.
Notes:
1) A latitude or longitude reference specifies a sign for another
(related) latitude or longitude value tag. A latitude reference can be
only 'N' (for North) or 'S' (for South); a longitude reference can be
only 'E' (for East) or 'W' (for West).
2) A latitude or a longitude is stored as a sequence of three rational
numbers (each rational number is the ratio of two unsigned long
integers), representing degrees, minutes and seconds. A typical format
is (dd/1, mm/1, ss/1). Sometimes, seconds are dropped in favour of
fractions of minutes (usually with two decimal places); in this case
the format is (dd/1, mmmm/100, 0/1). Latitudes are limited to the
interval [0,90], while longitudes to [0,180].
3) A "speed (distance) reference" is the unit for the speed (distance)
value stored in another (related) tag. The only allowed values are 'K'
(for Km/h or Km), 'M' (for miles/h or miles) or 'N' (knots). Let us
appreciate the fact that knot in English is both a unit of speed (one
nautical mile per hour) and of distance (one nautical mile).
4) A direction reference specifies how to interpret a following direction
value. Only two references are possible: 'T' (for the true direction)
or 'M' (for the magnetic direction).
5) A direction (of the pointed image, of the movement of the GPS
receiver, ecc ...) is a decimal number specifying an angle. The
allowed range is between 0.00 and 359.99.
6) The processing method and the area information are character strings,
whose first character specifies the character code used: this is the
first character of the 8-byte character code identification in the
'UserComment' tag in the SubIFD, so 'A' means ASCII, 'J' means JIS,
'U' means Unicode and a null character means undefined. Since the type
is not ASCII, null termination is not required.
7) A date tag value is a null terminated string of the form "YYYY:MM:DD"
(note the colon signs). [I currently allow only years after 1800].