frmt_jpeg.html 21.1 KB
<html>
<head>
<title>JPEG -- JPEG JFIF File Format</title>
</head>

<body bgcolor="#ffffff">

<h1>JPEG -- JPEG JFIF File Format</h1>

The JPEG JFIF format is supported for reading, and batch writing, but not
update in place.  JPEG files are represented as one band (greyscale) or three
band (RGB) datasets with Byte valued bands.<p>

The driver will automatically convert images whose color space is YCbCr, CMYK or
YCbCrK to RGB, unless GDAL_JPEG_TO_RGB is set to NO (YES is the default). When
color space translation to RGB is done, the source color space is indicated in the
SOURCE_COLOR_SPACE metadata of the IMAGE_STRUCTURE domain.<p>

EXIF metadata can be read from JPEG files (but this will not result in a
georeferenced image even if the EXIF_GPSLatitude and EXIF_GPSLongitude tags are
set). But if an ESRI world file exists with the .jgw, .jpgw/.jpegw or
.wld suffixes, it will be read and used to establish the geotransform for
the image. If available a MapInfo .tab file will also be used for
georeferencing.  Overviews can be built for JPEG files as an external
.ovr file.<p>

The driver also supports the "zlib compressed mask appended to the file"
approach used by a few data providers to add a bitmask to identify pixels that
are not valid data.
See <a href="http://trac.osgeo.org/gdal/wiki/rfc15_nodatabitmask">RFC 15</a> for further details.<p>

Starting with GDAL 1.10.1, the driver can deal with bitmask where the bits are
ordered with most significant bit first (whereas the usual convention is least significant
bit first). The driver will try to autodetect that situation, but the heuristics
may fail. In that circumstance, you can set the JPEG_MASK_BIT_ORDER configuration option to
MSB. Bitmask can also be completely ignored by specifying JPEG_READ_MASK to NO.<p>

The GDAL JPEG Driver is built using the Independent JPEG Group's jpeg
library.  Also note that the GeoTIFF driver supports tiled TIFF with JPEG
compressed tiles.<p>

To be able to read and write JPEG images with 12-bit sample, you can build GDAL
with its internal libjpeg (based on IJG libjpeg-6b, with additional changes for 12-bit
sample support), or explicitly pass --with-jpeg12=yes to configure script when building
with external libjpeg. See <a href="http://trac.osgeo.org/gdal/wiki/TIFF12BitJPEG">
"8 and 12 bit JPEG in TIFF"</a> wiki page for more details.<p>

It is also possible to use the JPEG driver with the libjpeg-turbo, a
version of libjpeg, API and ABI compatible with IJG libjpeg-6b, which uses MMX, SSE,
and SSE2 SIMD instructions to accelerate baseline JPEG compression/decompression.<p>

Starting with GDAL 1.9.0, XMP metadata can be extracted from the file, and will be
stored as XML raw content in the xml:XMP metadata domain.<p>

Starting with GDAL 2.0, embedded EXIF thumbnails (with JPEG compression) can be
used as overviews, and generated by GDAL.<p>

<h2>Color Profile Metadata</h2>

<p>Starting with GDAL 1.11, GDAL can deal with the following color profile metadata in the COLOR_PROFILE domain:</p>
<ul>
<li>SOURCE_ICC_PROFILE (Base64 encoded ICC profile embedded in file.)</li>
</ul>

<p>Note that this metadata property can only be used on the original raw pixel data. If automatic conversion to RGB has been done, the color profile information cannot be used.</p>

<p>This metadata tag can be used as creation options.</p>

<h2>Error management</h2>

While decoding, libjpeg has resiliency towards some errors in the JPEG datastream and will
try to recover from them as much of possible. Starting with GDAL 1.11.2,
such errors will be reported as GDAL Warnings, but can optionally be considered
as true Errors by setting the GDAL_ERROR_ON_LIBJPEG_WARNING configuration option
to TRUE.

<h2>Creation Options</h2>

JPEG files are created using the "JPEG" driver code.  Only Byte band types
are supported, and only 1 and 3 band (RGB) configurations.  JPEG file creation
is implemented by the batch (CreateCopy) method. YCbCr, CMYK or YCbCrK colorspaces
are not supported in creation. If the source dataset has a nodata mask, it will be
appended as a zlib compressed mask to the JPEG file.<p>

<ul>

<li> <b>WORLDFILE=YES</b>: Force the generation of an associated ESRI world
file (with the extension .wld).
  <p>

<li> <b>QUALITY=n</b>: By default the quality flag is set to 75, but this
option can be used to select other values.  Values must be in the
range 10-100.  Low values result in higher compression ratios, but poorer
image quality.  Values above 95 are not meaningfully better quality but
can but substantially larger.<p>

<li> <b>PROGRESSIVE=ON</b>: Enabled generation of progressive JPEGs.  In some
cases these will display a reduced resolution image in viewers such as
Netscape, and Internet Explorer, before the full file has been downloaded.
However, some applications cannot read progressive JPEGs at all. GDAL can
read progressive JPEGs, but takes no advantage of their progressive nature.<p>

<li> <b>INTERNAL_MASK=YES/NO</b>: By default, if needed, an internal mask
in the "zlib compressed mask appended to the file" approach is written
to identify pixels that are not valid data. Starting with GDAL 1.10, this
can be disabled by setting this option to NO.<p>

<li> <b>ARITHMETIC=YES/NO</b>: (Starting with GDAL 1.10) To enable arithmetic coding.
Not enabled in all libjpeg builds, because of possible legal restrictions.<p>

<li> <b>BLOCK=1...16</b>: (Starting with GDAL 1.10 and libjpeg 8c) DCT block size.
All values from 1 to 16 are possible. Default is 8 (baseline format). A value other
than 8 will produce files incompatible with versions prior to libjpeg 8c.<p>

<li> <b>COLOR_TRANSFORM=RGB or RGB1</b>: (Starting with GDAL 1.10 and libjpeg 9).
Set to RGB1 for lossless RGB. Note: this will produce files incompatible with
versions prior to libjpeg 9.<p>

<li> <b>SOURCE_ICC_PROFILE=value</b>: (Starting with GDAL 1.11).
ICC profile encoded in Base64.<p>

<li> <b>COMMENT=string</b>: (Starting with GDAL 2.0). String to embed in a
comment JPEG marker. When reading, such strings are exposed in the COMMENT
metadata item.<p>

<li> <b>EXIF_THUMBNAIL=YES/NO</b>: (Starting with GDAL 2.0). Whether to generate
an EXIF thumbnail(overview), itself JPEG compressed. Defaults to NO. If enabled,
the maximum dimension of the thumbnail will be 128, if neither THUMBNAIL_WIDTH nor
THUMBNAIL_HEIGHT are specified.<p>

<li> <b>THUMBNAIL_WIDTH=n</b>: (Starting with GDAL 2.0). Width of thumbnail. Only
taken into account if EXIF_THUMBNAIL=YES.<p>

<li> <b>THUMBNAIL_HEIGHT=n</b>: (Starting with GDAL 2.0). Height of thumbnail. Only
taken into account if EXIF_THUMBNAIL=YES.<p>

<li> <b>WRITE_EXIF_METADATA=YES/NO</b>: (Starting with GDAL 2.3). Whether to
write EXIF_xxxx metadata items in a EXIF segment. Default to YES.<p>

</ul>

<h2>EXIF and GPS tags</h2>

<p>The below tables list the EXIF and GPS tags that can be written.</p>

<ul>

<li>The "Metadata item name" column presents the name of the metadata item
to attach to the source dataset.</li>

<li>The "Hex code" column is the value of the corresponding TIFF EXIF/GPS tag (for
reference only)</li>

<li>The "Type" column is the TIFF type associated.<br/><br/>
<ul>
<li>ASCII is for text values
that are NUL-terminated (for a fixed length tag, the length includes this NUL-terminating
characters). e.g EXIF_Make=the_make</li>
<li>BYTE/UNDEFINED is for values that can be made of any byte value. The value
of the corresponding GDAL metadata item must be a string of hexadecimal formatted
values, e.g EXIF_GPSVersionID=0x02 0x00 0x00 0x00. GDAL also accepts an
ASCII string: e.g. EXIF_ExifVersion=0231</li>
<li>SHORT is for unsigned integer values in the range [0,65535]. Some tags
may accept multiple values, in which case they must be separated by space.</li>
<li>LONG is for unsigned integer values in the range [0,4294967295]. Some tags
may accept multiple values, in which case they must be separated by space.</li>
<li>RATIONAL is for positive floating-point values. Some tags
may accept multiple values, in which case they must be separated by space.
e.g EXIF_GPSLatitude=49 2 3.5</li>
<li>SRATIONAL is for positive or negative floating-point values. Some tags
may accept multiple values, in which case they must be separated by space.</li>
</ul>

<p>When an item accepts a fixed number of values and that more are provided,
they will be truncated with a warning. In the case they are less values provided
than needed, they will be padded with appropriate spaces / zeroes</p>
</li>

<li>The "Number of values" column is the number of values for the item. Might be
"variable" if there is no restriction, or a fixed value. Fo Type=ASCII, the
fixed value includes the NUL-terminating byte, so the number of actual printable
characters is number of values - 1.</li>

<li>The "Optionality" column indicates whether the item should be present
("Mandatory"), is "Recommended" or "Optional". GDAL does not enforce this.</li>

</ul>

<p>Many items have more restrictions on the valid content that are not expressed
in the below tables. Consult the EXIF specification for more information.</p>

<table border="1">
<tr><th>Metadata item name</th><th>Hex code</th><th>Type</th><th>Number of values</th><th>Optionality</th></tr>
<tr><td>EXIF_Document_Name</td><td>0x010D</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_ImageDescription</td><td>0x010E</td><td>ASCII</td><td>variable</td><td>Recommended</td></tr>
<tr><td>EXIF_Make</td><td>0x010F</td><td>ASCII</td><td>variable</td><td>Recommended</td></tr>
<tr><td>EXIF_Model</td><td>0x0110</td><td>ASCII</td><td>variable</td><td>Recommended</td></tr>
<tr><td>EXIF_Orientation</td><td>0x0112</td><td>SHORT</td><td>1</td><td>Recommended</td></tr>
<tr><td>EXIF_XResolution</td><td>0x011A</td><td>RATIONAL</td><td>1</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_YResolution</td><td>0x011B</td><td>RATIONAL</td><td>1</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_ResolutionUnit</td><td>0x0128</td><td>SHORT</td><td>1</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_TransferFunction</td><td>0x012D</td><td>SHORT</td><td>768</td><td>Optional</td></tr>
<tr><td>EXIF_Software</td><td>0x0131</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_DateTime</td><td>0x0132</td><td>ASCII</td><td>20</td><td>Recommended</td></tr>
<tr><td>EXIF_Artist</td><td>0x013B</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_WhitePoint</td><td>0x013E</td><td>RATIONAL</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_PrimaryChromaticities</td><td>0x013F</td><td>RATIONAL</td><td>6</td><td>Optional</td></tr>
<tr><td>EXIF_YCbCrCoefficients</td><td>0x0211</td><td>RATIONAL</td><td>3</td><td>Optional</td></tr>
<tr><td>EXIF_YCbCrPositioning</td><td>0x0213</td><td>SHORT</td><td>1</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_ReferenceBlackWhite</td><td>0x0214</td><td>RATIONAL</td><td>6</td><td>Optional</td></tr>
<tr><td>EXIF_Copyright</td><td>0x8298</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_ExposureTime</td><td>0x829A</td><td>RATIONAL</td><td>1</td><td>Recommended</td></tr>
<tr><td>EXIF_FNumber</td><td>0x829D</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ExposureProgram</td><td>0x8822</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SpectralSensitivity</td><td>0x8824</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_ISOSpeedRatings</td><td>0x8827</td><td>SHORT</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_OECF</td><td>0x8828</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_SensitivityType</td><td>0x8830</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_StandardOutputSensitivity</td><td>0x8831</td><td>LONG</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_RecommendedExposureIndex</td><td>0x8832</td><td>LONG</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ISOSpeed</td><td>0x8833</td><td>LONG</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ISOSpeedLatitudeyyy</td><td>0x8834</td><td>LONG</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ISOSpeedLatitudezzz</td><td>0x8835</td><td>LONG</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ExifVersion</td><td>0x9000</td><td>UNDEFINED</td><td>4</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_DateTimeOriginal</td><td>0x9003</td><td>ASCII</td><td>20</td><td>Optional</td></tr>
<tr><td>EXIF_DateTimeDigitized</td><td>0x9004</td><td>ASCII</td><td>20</td><td>Optional</td></tr>
<tr><td>EXIF_OffsetTime</td><td>0x9010</td><td>ASCII</td><td>7</td><td>Optional</td></tr>
<tr><td>EXIF_OffsetTimeOriginal</td><td>0x9011</td><td>ASCII</td><td>7</td><td>Optional</td></tr>
<tr><td>EXIF_OffsetTimeDigitized</td><td>0x9012</td><td>ASCII</td><td>7</td><td>Optional</td></tr>
<tr><td>EXIF_ComponentsConfiguration</td><td>0x9101</td><td>UNDEFINED</td><td>4</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_CompressedBitsPerPixel</td><td>0x9102</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ShutterSpeedValue</td><td>0x9201</td><td>SRATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ApertureValue</td><td>0x9202</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_BrightnessValue</td><td>0x9203</td><td>SRATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ExposureBiasValue</td><td>0x9204</td><td>SRATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_MaxApertureValue</td><td>0x9205</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SubjectDistance</td><td>0x9206</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_MeteringMode</td><td>0x9207</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_LightSource</td><td>0x9208</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_Flash</td><td>0x9209</td><td>SHORT</td><td>1</td><td>Recommended</td></tr>
<tr><td>EXIF_FocalLength</td><td>0x920A</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SubjectArea</td><td>0x9214</td><td>SHORT</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_MakerNote</td><td>0x927C</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_UserComment</td><td>0x9286</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_SubSecTime</td><td>0x9290</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_SubSecTime_Original</td><td>0x9291</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_SubSecTime_Digitized</td><td>0x9292</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_FlashpixVersion</td><td>0xA000</td><td>UNDEFINED</td><td>4</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_ColorSpace</td><td>0xA001</td><td>SHORT</td><td>1</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_PixelXDimension</td><td>0xA002</td><td>LONG</td><td>1</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_PixelYDimension</td><td>0xA003</td><td>LONG</td><td>1</td><td><b>Mandatory</b></td></tr>
<tr><td>EXIF_RelatedSoundFile</td><td>0xA004</td><td>ASCII</td><td>13</td><td>Optional</td></tr>
<tr><td>EXIF_FlashEnergy</td><td>0xA20B</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SpatialFrequencyResponse</td><td>0xA20C</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_FocalPlaneXResolution</td><td>0xA20E</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_FocalPlaneYResolution</td><td>0xA20F</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_FocalPlaneResolutionUnit</td><td>0xA210</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SubjectLocation</td><td>0xA214</td><td>SHORT</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_ExposureIndex</td><td>0xA215</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SensingMethod</td><td>0xA217</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_FileSource</td><td>0xA300</td><td>UNDEFINED</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SceneType</td><td>0xA301</td><td>UNDEFINED</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_CFAPattern</td><td>0xA302</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_CustomRendered</td><td>0xA401</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ExposureMode</td><td>0xA402</td><td>SHORT</td><td>1</td><td>Recommended</td></tr>
<tr><td>EXIF_WhiteBalance</td><td>0xA403</td><td>SHORT</td><td>1</td><td>Recommended</td></tr>
<tr><td>EXIF_DigitalZoomRatio</td><td>0xA404</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_FocalLengthIn35mmFilm</td><td>0xA405</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_SceneCaptureType</td><td>0xA406</td><td>SHORT</td><td>1</td><td>Recommended</td></tr>
<tr><td>EXIF_GainControl</td><td>0xA407</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_Contrast</td><td>0xA408</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_Saturation</td><td>0xA409</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_Sharpness</td><td>0xA40A</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_DeviceSettingDescription</td><td>0xA40B</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_SubjectDistanceRange</td><td>0xA40C</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_ImageUniqueID</td><td>0xA420</td><td>ASCII</td><td>33</td><td>Optional</td></tr>
<tr><td>EXIF_CameraOwnerName</td><td>0xA430</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_BodySerialNumber</td><td>0xA431</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_LensSpecification</td><td>0xA432</td><td>RATIONAL</td><td>4</td><td>Optional</td></tr>
<tr><td>EXIF_LensMake</td><td>0xA433</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_LensModel</td><td>0xA434</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_LensSerialNumber</td><td>0xA435</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
</table>

<p>GPS tags:</p>

<table border="1">
<tr><th>Metadata item name</th><th>Hex code</th><th>Type</th><th>Number of values</th><th>Optionality</th></tr>
<tr><td>EXIF_GPSVersionID</td><td>0x0000</td><td>BYTE</td><td>4</td><td>Optional</td></tr>
<tr><td>EXIF_GPSLatitudeRef</td><td>0x0001</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSLatitude</td><td>0x0002</td><td>RATIONAL</td><td>3</td><td>Optional</td></tr>
<tr><td>EXIF_GPSLongitudeRef</td><td>0x0003</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSLongitude</td><td>0x0004</td><td>RATIONAL</td><td>3</td><td>Optional</td></tr>
<tr><td>EXIF_GPSAltitudeRef</td><td>0x0005</td><td>BYTE</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSAltitude</td><td>0x0006</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSTimeStamp</td><td>0x0007</td><td>RATIONAL</td><td>3</td><td>Optional</td></tr>
<tr><td>EXIF_GPSSatellites</td><td>0x0008</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_GPSStatus</td><td>0x0009</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSMeasureMode</td><td>0x000A</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDOP</td><td>0x000B</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSSpeedRef</td><td>0x000C</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSSpeed</td><td>0x000D</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSTrackRef</td><td>0x000E</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSTrack</td><td>0x000F</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSImgDirectionRef</td><td>0x0010</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSImgDirection</td><td>0x0011</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSMapDatum</td><td>0x0012</td><td>ASCII</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestLatitudeRef</td><td>0x0013</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestLatitude</td><td>0x0014</td><td>RATIONAL</td><td>3</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestLongitudeRef</td><td>0x0015</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestLongitude</td><td>0x0016</td><td>RATIONAL</td><td>3</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestBearingRef</td><td>0x0017</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestBearing</td><td>0x0018</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestDistanceRef</td><td>0x0019</td><td>ASCII</td><td>2</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDestDistance</td><td>0x001A</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSProcessingMethod</td><td>0x001B</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_GPSAreaInformation</td><td>0x001C</td><td>UNDEFINED</td><td>variable</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDateStamp</td><td>0x001D</td><td>ASCII</td><td>11</td><td>Optional</td></tr>
<tr><td>EXIF_GPSDifferential</td><td>0x001E</td><td>SHORT</td><td>1</td><td>Optional</td></tr>
<tr><td>EXIF_GPSHPositioningError</td><td>0x001F</td><td>RATIONAL</td><td>1</td><td>Optional</td></tr>
</table>


<h3>See Also:</h3>
<p>

<ul>
<li> <a href="http://www.ijg.org/">Independent JPEG Group</a></li>
<li> <a href="http://sourceforge.net/projects/libjpeg-turbo/">libjpeg-turbo</a></li>
<li> <a href="frmt_gtiff.html">GDAL GeoTIFF driver</a></li>
<li> <a href="http://www.cipa.jp/std/documents/e/DC-008-Translation-2016-E.pdf">EXIF v2.31 specification</a></li>
</ul>

</body>
</html>