Browse Source

Update to 10.29

pull/17/head 10.29
exiftool 6 years ago
parent
commit
7c547e0254
  1. 40
      Changes
  2. 1
      MANIFEST
  3. 1
      META.yml
  4. 6
      README
  5. 2
      config_files/bibble.config
  6. 56
      config_files/time_zone.config
  7. 10
      exiftool
  8. 67
      html/ExifTool.html
  9. 7
      html/TagNames/Apple.html
  10. 728
      html/TagNames/EXIF.html
  11. 14
      html/TagNames/FLIR.html
  12. 19
      html/TagNames/Nikon.html
  13. 890
      html/TagNames/NikonCustom.html
  14. 13
      html/TagNames/Sony.html
  15. 24
      html/ancient_history.html
  16. 5
      html/canon_raw.html
  17. 8
      html/exiftool_pod.html
  18. 9
      html/faq.html
  19. 7
      html/geotag.html
  20. 17
      html/history.html
  21. 21
      html/index.html
  22. 22
      html/install.html
  23. 11
      lib/Image/ExifTool.pm
  24. 46
      lib/Image/ExifTool.pod
  25. 4
      lib/Image/ExifTool/Apple.pm
  26. 36
      lib/Image/ExifTool/Exif.pm
  27. 14
      lib/Image/ExifTool/FLIR.pm
  28. 74
      lib/Image/ExifTool/Geotag.pm
  29. 6
      lib/Image/ExifTool/Minolta.pm
  30. 64
      lib/Image/ExifTool/Nikon.pm
  31. 968
      lib/Image/ExifTool/NikonCustom.pm
  32. 6
      lib/Image/ExifTool/Sony.pm
  33. 5893
      lib/Image/ExifTool/TagLookup.pm
  34. 123
      lib/Image/ExifTool/TagNames.pod
  35. 33
      lib/Image/ExifTool/Writer.pl
  36. 2
      perl-Image-ExifTool.spec
  37. 12
      t/FLIR_2.out
  38. 12
      t/Writer_46.out
  39. 10
      windows_exiftool

40
Changes

@ -7,7 +7,21 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
Note: The most recent production release is Version 10.20. (Other versions are
considered development releases, and are not uploaded to CPAN.)
Sept. xx, 2016 - Version 10.28 - "EXIF 2.31"
Oct. 5, 2016 - Version 10.29
- Added a couple of new Sony LensType values (thanks LibRaw)
- Decode a few new Sony tags
- Decode a few new FLIR tags
- Decode some new Nikon D5 tags (thanks Warren Hatch)
- Decode a new Apple tag
- Enhanced -geotag option to allow tagging from KML placemarks with a TimeSpan
- Enhanced -d option (and API DateFormat option) to perform inverse date/time
conversion when writing if the POSIX::strptime module is available. If
POSIX::strptime is not available then the behaviour is like older versions
(ie. the date/time is not converted) unless the API StrictDate option is set
in which case a warning is issued and the tag is not written
Sept. 27, 2016 - Version 10.28 - "EXIF 2.31"
- Added support for new EXIF 2.31 tags
- Added some new Canon LensType values (thanks Norbert Wasser for one)
@ -300,7 +314,7 @@ Dec. 22, 2015 - Version 10.08
- Fixed bug in HtmlDump feature that could cause a "substr outside of string"
error
- API Changes:
- Changed QuickTimeUTC API option to also enforce proper time zero
- Changed API QuickTimeUTC option to also enforce proper time zero
Nov. 26, 2015 - Version 10.07
@ -406,7 +420,7 @@ July 23, 2015 - Version 9.99
- Added two new SonyModelID's (thanks Jos Roost for one)
- Added two new Sony LensType2 values (thanks Jos Roost)
- Added a new Pentax LensType
- Extract a number of new File System tags when SystemTags API option is set
- Extract a number of new File System tags when API SystemTags option is set
- Decode a new FujiFilm tag (thanks TonyB)
- Decode a number of new Sony tags (thanks Jos Roost)
- Disabled writing of XMP to PostScript-format Adobe Illustrator files
@ -727,7 +741,7 @@ Nov. 15, 2014 - Version 9.76 (production release)
- Improved warning message if "DIR" or "FILE" is used literally on the command
line
- Improved "-j -b" output to encode any non-UTF8 values as Base64
- Enhanced -fast option (FastScan API option) to allow file processing to be
- Enhanced -fast option (API FastScan option) to allow file processing to be
bypassed entirely
- Changed conversions for a couple of Nikon 1 AF tags for consistency
- Changed reported FileType for LNK, KEY, KTH, NUMBERS, NMBTEMPLATE and PAGES
@ -5784,7 +5798,7 @@ Jan. 6, 2006 - Version 5.90
- Made Photoshop:XResolution and Photoshop:YResolution writable
- Fixed problem with processing some RIFF files
- Added a new Canon LensType
- API changes:
- API Changes:
- SetNewValue() now accepts an ARRAY reference for setting list-type tags
such as Keywords, or a SCALAR reference for binary data, so it may now
be called directly with any value returned by GetValue().
@ -5850,7 +5864,7 @@ Dec. 12, 2005 - Version 5.83
and David Buret)
- Decode PrintIM information in Casio QV-4000
- Fixed Decoding of Canon EOS D60 serial numbers to agree with Canon utilities
- API changes:
- API Changes:
- Added HtmlDump and TextOut options
Nov. 26, 2005 - Version 5.82
@ -7251,7 +7265,7 @@ Mar. 1, 2004 - Version 3.15
- Improvements to TIFF processing
- Set value to "Undefined" if PrintConv evaluates to undefined value
- Added -G option
- API changes:
- API Changes:
- Changed all option names: shortened and changed to mixed case (sorry!)
- Internal changes:
- Standardized arguments to all processing procedures
@ -7283,7 +7297,7 @@ Feb. 25, 2004 - Version 3.11
- Improve XMP parsing for 'Bag' elements
- Capitalize first letter of XMP tag descriptions
- Patch problem with APP13 resource written by older Photoshop versions
- API changes:
- API Changes:
- Added EXCLUDE and GROUP# options
- Change default value of SAVE_DUPLICATES option to 1
@ -7291,7 +7305,7 @@ Feb. 20, 2004 - Version 3.10
- Restructuring only -- the behaviour of the exiftool script was not changed
- Moved html documentation to new html directory
- API changes:
- API Changes:
- Conform to standard Perl module mechanics:
- Changed ExifTool package name to Image::ExifTool
- Added Makefile.PL and other standard files
@ -7318,7 +7332,7 @@ Feb. 17, 2004 - Version 3.03
File::RandomAccessFile)
- Added IxusAFPoint tag to Canon maker notes
- Avoid scanning past end of Canon binary data blocks
- API changes:
- API Changes:
- GetFoundTags() and GetRequestedTags() now return list instead of list
reference
@ -7328,7 +7342,7 @@ Feb. 16, 2004 - Version 3.02
Feb. 15, 2004 - Version 3.01
- API changes:
- API Changes:
- Added GetValue() function
- Completed API documentation
@ -7337,7 +7351,7 @@ Feb. 13, 2004 - Version 3.00
- Removed -all option (it is now the default -- specify -common for previous
default behaviour)
- Added -a option to allow printout of duplicate tag values
- API changes:
- API Changes:
- I am finally happy with the API, so future major changes are less likely
(hence the major version number)
- No longer return ARRAY reference for list of tags (Instead, tag values
@ -7350,7 +7364,7 @@ Feb. 13, 2004 - Version 3.00
Feb. 12, 2004 - Version 2.71
- Still more playing with Pentax maker notes
- More API changes:
- More API Changes:
- Added RandomAccessFile.pm
- All image file i/o now done through a RandomAccessFile object
--> allows proper piping and use of string i/o

1
MANIFEST

@ -21,6 +21,7 @@ config_files/fotoware.config
config_files/gps2utm.config
config_files/photoshop_paths.config
config_files/picasa_faces.config
config_files/time_zone.config
exiftool
fmt_files/gpx.fmt
fmt_files/gpx_wpt.fmt

1
META.yml

@ -25,4 +25,5 @@ recommends:
Digest::MD5: 0
Digest::SHA: 0
Time::HiRes: 0
POSIX::strptime: 0

6
README

@ -101,8 +101,8 @@ your home directory, then you would type the following commands in a
terminal window to extract and run ExifTool:
cd ~/Desktop
gzip -dc Image-ExifTool-10.28.tar.gz | tar -xf -
cd Image-ExifTool-10.28
gzip -dc Image-ExifTool-10.29.tar.gz | tar -xf -
cd Image-ExifTool-10.29
./exiftool t/images/ExifTool.jpg
Note: These commands extract meta information from one of the test images.
@ -145,6 +145,7 @@ for calculating digest values and providing other features listed below:
Digest::SHA (PDF with AES-256 encryption)
IO::Compress::Bzip2 (RWZ files)
Time::HiRes (for generating ProcessingTime tag)
POSIX::strptime (for inverse date/time conversion)
Unicode::LineBreak (for column alignment of alternate-language output)
Win32::API (for proper handling of Windows file times)
Win32::FindFile (for Windows Unicode directory support, app only)
@ -187,6 +188,7 @@ distribution package:
gps2utm.config - Generate UTM coordinate tags from GPS info
photoshop_paths.config - For extracting or copying Photoshop paths
picasa_faces.config - Convert from Picasa to MWG/MP face regions
time_zone.config - Calcuate time zone from EXIF tags
exiftool - The exiftool application (Perl script)
fmt_files/ - Output formatting example files:
gpx.fmt - Format file for creating GPX track

2
config_files/bibble.config

@ -7,7 +7,7 @@
#
# Requires: ExifTool version 10.28 or later
#
# Revisions: 2012/09/25 - P. Harvey Created
# Revisions: 2016/09/25 - P. Harvey Created
#------------------------------------------------------------------------------
%Image::ExifTool::UserDefined = (

56
config_files/time_zone.config

@ -0,0 +1,56 @@
#------------------------------------------------------------------------------
# File: time_zone.config
#
# Description: ExifTool config file to return time zone from an image
#
# Notes: The Composite:TimeZone tag defined here attempts to determine
# the time zone for an image. If possible, the time zone for
# DateTimeOriginal is returned, but if this can't be determined
# then the time zone for CreateDate and then ModifyDate are used.
#
# Usage: exiftool -config time_zone.config -timezone FILE
#
# Requires: Any version of ExifTool
#
# Revisions: 2016/10/03 - P. Harvey Created
#------------------------------------------------------------------------------
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
FileName => {
Desire => {
0 => 'DateTimeOriginal',
1 => 'CreateDate',
2 => 'ModifyDate',
3 => 'GPSDateStamp',
4 => 'GPSTimeStamp',
5 => 'OffsetTimeOriginal', # (DateTimeOriginal)
6 => 'OffsetTimeDigitized', # (CreateDate)
7 => 'OffsetTime', # (ModifyDate)
8 => 'TimeZoneOffset', # (ModifyDate)
},
RawConv => q{
return $val[5] if $val[5];
return $val[6] if $val[6];
return $val[7] if $val[7];
if (defined $val[8]) {
my $tzh = $val[8];
$tzh =~ s/ .*//;
return TimeZoneString($tzh * 60);
}
if (defined $val[3] and defined $val[4]) {
my $loc = $val[0] || $val[1] || $val[2];
print "$loc\n";#TEST
if ($loc) {
my @loc = split /[: ]/, $loc;
my @gmt = split /[: ]/, "$val[3] $val[4]";
return TimeZoneString(GetTimeZone([@loc[5,4,3,2]], [@gmt[5,4,3,2]]));
}
}
return undef;
},
},
},
);
1; #end

10
exiftool

@ -12,7 +12,7 @@
use strict;
require 5.004;
my $version = '10.28';
my $version = '10.29';
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
my $exeDir;
@ -4601,9 +4601,9 @@ Set the format for date/time tag values. The specifics of the I<FMT> syntax
are system dependent -- consult the C<strftime> man page on your system for
details. The default format is equivalent to "%Y:%m:%d %H:%M:%S". This
option has no effect on date-only or time-only tags and ignores timezone
information if present. Only one B<-d> option may be used per command. The
inverse operation (ie. un-formatting a date/time value) is currently not
applied when writing a date/time tag.
information if present. Only one B<-d> option may be used per command.
Requires POSIX::strptime for the inversion conversion when writing (not
included in the Windows EXE package).
=item B<-D> (B<-decimal>)
@ -4799,7 +4799,7 @@ with this command:
produces output like this:
-- Generated by ExifTool 10.28 --
-- Generated by ExifTool 10.29 --
File: a.jpg - 2003:10:31 15:44:19
(f/5.6, 1/60s, ISO 100)
File: b.jpg - 2006:05:23 11:57:38

67
html/ExifTool.html

@ -495,22 +495,26 @@ distribution for examples.</p>
<tr><td>Compress</td><td><a name="Compress"></a>Flag to write new values in compressed format if possible.
Has no effect unless Compress::Zlib is installed.</td>
<td align=center>0 or 1</td><td align=center>undef</td></tr>
<tr><td>CoordFormat</td><td><a name="CoordFormat"></a>Specify output format for GPS coordinates.</td>
<td>A printf-style format string with specifiers for degrees, minutes and
seconds in that order, however minutes and seconds may be omitted. If the
hemisphere is known, a reference direction (N, S, E or W) is appended to
each printed coordinate, but adding a '<code>+</code>' to the first format
specifier (eg. <code>'%+.6f'</code>) prints a signed coordinate instead.
The default for reading is equivalent to a format string of
<code>q{%d&nbsp;deg&nbsp;%d'&nbsp;%.2f"}</code>, but to avoid a loss
<tr><td>CoordFormat</td><td>Specify output format for GPS coordinates.</td>
<td><a name="CoordFormat"></a>A printf-style format string with specifiers
for degrees, minutes and seconds in that order, however minutes and seconds
may be omitted. If the hemisphere is known, a reference direction (N, S, E
or W) is appended to each printed coordinate, but adding a '<code>+</code>'
to the first format specifier (eg. <code>'%+.6f'</code>) prints a signed
coordinate instead. The default for reading is equivalent to a format string
of <code>q{%d&nbsp;deg&nbsp;%d'&nbsp;%.2f"}</code>, but to avoid a loss
of precision the default for copying tags with
<a href="#SetNewValuesFromFile">SetNewValuesFromFile</a> is
<code>q{%d&nbsp;%d&nbsp;%.8f}</code>.
</td><td align=center>undef</td></tr>
<tr><td>DateFormat</td><td><a name="DateFormat"></a>Output format for date/time values. If date can not
<tr><td>DateFormat</td><td>Output format for date/time values. If date can not
be converted, value is left unchanged unless the StrictDate option is set.
Timezones are ignored.</td> <td>See strftime manpage for details. The default
is similar to a format string of <code>"%Y:%m:%d %H:%M:%S"</code>.</td>
Timezones are ignored. The inversion conversion (ie. when calling
<a href="#SetNewValue">SetNewValue</a>) is only performed if POSIX::strptime
is installed.</td> <td><a name="DateFormat"></a>See strftime manpage for
details. The default setting of undef causes date/time values to remain in
standard EXIF format (similar to a DateFormat of
<code>"%Y:%m:%d %H:%M:%S"</code>).</td>
<td align=center>undef</td></tr>
<tr><td>Duplicates</td><td><a name="Duplicates"></a>Flag to return values from
tags with duplicate names when extracting information.</td>
@ -655,7 +659,7 @@ distribution for examples.</p>
<tr><td>List</td><td><a name="List"></a>Flag to extract lists of PrintConv values into arrays instead of combining
them into a string of values.</td><td align=center>0 or 1</td><td align=center>undef</td></tr>
<tr><td>ListItem</td><td><a name="ListItem"></a>Return only a specific item from
List-type values. A value of 0 returns the first item in each list, 1 returns
list-type values. A value of 0 returns the first item in each list, 1 returns
the second item, etc. Negative indices may also be used, with -1 representing the
last item in the list. Applies only to the top-level list of nested lists.</td>
<td align=center>An integer, or undef</td><td align=center>undef</td></tr>
@ -664,11 +668,11 @@ distribution for examples.</p>
<tr><td>ListSplit</td><td><a name="ListSplit"></a>Regular expression used to split values of list-type tags
into individual items when writing. (eg. use ',\\s*' to split a comma-separated list)</td>
<td align=center>A regular expression pattern</td><td align=center>undef</td></tr>
<tr><td>MakerNotes</td><td><a name="MakerNotes"></a>Option to extract MakerNotes and other writable
<tr><td>MakerNotes</td><td>Option to extract MakerNotes and other writable
subdirectories (such as PrintIM) as a data block. Normally when the MakerNotes
are extracted they are rebuilt to include data outside the boundaries of the
original maker note data block, but a value of 2 disables this feature.</td>
<td><table class=clear>
<td><a name="MakerNotes"></a><table class=clear>
<tr><td valign=top align=center><b>0</b>&nbsp;=</td><td>Don't extract writable subdirectories</td></tr>
<tr><td valign=top align=center><b>1</b>&nbsp;=</td><td>Extract and rebuild makernotes into self-contained block</td></tr>
<tr><td valign=top align=center><b>2</b>&nbsp;=</td><td>Extract without rebuilding makernotes</td></tr>
@ -681,7 +685,7 @@ distribution for examples.</p>
If not set, a minor error is issued for missing values, or the value
is set to '' if IgnoreMinorErrors is set.</td>
<td align=center>Any string, or undef</td><td align=center>undef</td></tr>
<tr><td>NoPDFList</td><td><a name="NoPDFList"></a>Flag to avoid splitting PDF List-type tag
<tr><td>NoPDFList</td><td><a name="NoPDFList"></a>Flag to avoid splitting PDF list-type tag
values into separate items.</td>
<td align=center>0 or 1</td><td align=center>undef</td></tr>
<tr><td>Password</td><td><a name="Password"></a><a name="Passwd"></a>Password for reading/writing
@ -778,16 +782,20 @@ distribution for examples.</p>
Useful to allow external input into tag name expressions and ValueConv logic.
<i>PARAM</i> is the user-defined parameter name (case insensitive). These parameters
may be accessed in tag name expressions by prefixing the parameter name with a dollar
sign, just like normal tags. If called without a parameter name,
sign, just like normal tags. If called without no additional arguments,
<code>Options('UserParam')</code> returns a reference to the hash of all user
parameters (with lower-case names).
</td>
<td><table class=clear>
<tr><td valign=top><i>PARAM</i></td><td>- Get parameter</td></tr>
<tr><td valign=top><i>PARAM=</i></td><td>- Clear parameter</td></tr></table>
<tr><td valign=top><i>PARAM</i></td><td valign=top>-</td><td>Get parameter</td></tr>
<tr><td valign=top><i>PARAM=</i></td><td valign=top>-</td><td>Clear parameter</td></tr></table>
<table class=clear>
<tr><td valign=top><i>PARAM=VALUE</i></td><td>- Set parameter</td></tr>
</table></td><td align=center>{ }</td></tr>
<tr><td valign=top><i>PARAM=VALUE</i></td><td valign=top>-</td><td>Set parameter</td></tr>
</table><table class=clear>
<tr><td valign=top><i>hash&nbsp;ref</i></td><td valign=top>-</td><td>Set UserParam hash</td></tr>
<tr><td valign=top><b>undef</b></td><td valign=top>-</td><td>Clear UserParam hash</td></tr>
</table>
</td><td align=center>{ }</td></tr>
<tr><td>Verbose</td><td>Print verbose messages to file specified by TextOut option.
<a href="verbose.html">Click here</a> for example outputs.</td>
<td><a name="Verbose"></a><table class=clear>
@ -1190,7 +1198,12 @@ errors are printed to STDERR.
<tr><td valign=top align=center><b>1</b>&nbsp;=</td><td>Add to existing list, or warn for non-list tags</td></tr>
<tr><td valign=top align=center><b>2</b>&nbsp;=</td><td>Add to existing list, or overwrite non-list tags</td></tr>
</table></td><td align=center>0</td></tr>
<tr><td>DelValue</td><td>Delete existing tag from a file if it has the specified value</td>
<tr><td>DelValue</td><td>Delete existing tag from a file if it has the specified
value. For list-type tags this deletes a specified item from the list. For
non-list tags this may be used to conditionally replace a tag by providing a
new value in a separate call to <a href="#SetNewValue">SetNewValue</a> (see
examples below). For structured tags, the entire structure is deleted/replaced
only if all of the specified fields match the existing structure.</td>
<td align=center>0 or 1</td><td align=center>0</td></tr>
<tr><td>EditGroup</td><td>Create tags in existing groups only. Don't create new group.
Effectively removes the 'g' from the ExifTool WriteMode option for this tag only.</td>
@ -1282,6 +1295,14 @@ $exifTool-&gt;<b>SetNewValue</b>(Keywords =&gt; ['word1','word2']);
$exifTool-&gt;<b>SetNewValue</b>(Keywords =&gt; $word, AddValue =&gt; 1);
</pre></td></tr></table></blockquote>
<blockquote><table class='box'><tr><td><pre>
<span class=com># conditionally add or replace a tag if it didn't exist before
# or had a specified value ("old value")</span>
$exifTool-&gt;<b>SetNewValue</b>(Description =&gt; '', DelValue =&gt; 1);
$exifTool-&gt;<b>SetNewValue</b>(Description =&gt; 'old value', DelValue =&gt; 1);
$exifTool-&gt;<b>SetNewValue</b>(Description =&gt; 'new value');
</pre></td></tr></table></blockquote>
<blockquote><table class='box'><tr><td><pre>
<span class=com># set a tag in a specific group</span>
$exifTool-&gt;<b>SetNewValue</b>(Headline =&gt; $val, Group =&gt; 'XMP');
@ -1337,8 +1358,8 @@ group (with '<code>Adobe:*</code>') or as a block (with '<code>Adobe</code>').</
<p>The following ExifTool options are effective in the call to
<a href="#SetNewValue">SetNewValue</a>:</p>
<blockquote>
Charset, Escape, IgnoreMinorErrors, Lang, ListSep, ListSplit, PrintConv, Verbose
and WriteMode.
Charset, DateFormat, Escape, IgnoreMinorErrors, Lang, ListSep, ListSplit,
PrintConv, StrictDate, Verbose and WriteMode.
</blockquote>
<hr><h2><a name="GetNewValue">GetNewValue</a><a name="GetNewValues"></a></h2>

7
html/TagNames/Apple.html

@ -29,6 +29,11 @@
<td>BurstUUID</td>
<td class=c>string</td>
<td><span class=s><span class=n>(unique ID for all images in a burst)</span></span></td></tr>
<tr class=b>
<td title='0x0015 = 21'>0x0015</td>
<td>ImageUniqueID</td>
<td class=c>string</td>
<td>&nbsp;</td></tr>
</table></td></tr></table></blockquote>
<h2><a name='RunTime'>Apple RunTime Tags</a></h2>
@ -68,7 +73,7 @@ boot, not including standby time.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
<br><i>Last revised Mar 19, 2015</i>
<br><i>Last revised Oct 5, 2016</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>

728
html/TagNames/EXIF.html

@ -823,169 +823,175 @@ OtherImageLength in everything else)</span></span></td></tr>
<br>2 = Sony Compressed RAW
<br>3 = Sony Lossless Compressed RAW</span></td></tr>
<tr>
<td title='0x7032 = 28722'>0x7032</td>
<td>LightFalloffParams</td>
<td class=c title=' ! = Unsafe'>int16s[17]!</td>
<td class=c>SubIFD</td>
<td><span class=s><span class=n>(found in Sony ARW images)</span></span></td></tr>
<tr class=b>
<td title='0x7035 = 28725'>0x7035</td>
<td>ChromaticAberrationCorrParams</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<td class=c title=' ! = Unsafe'>int16s[33]!</td>
<td class=c>SubIFD</td>
<td><span class=s><span class=n>(found in Sony ARW images)</span></span></td></tr>
<tr>
<td title='0x7037 = 28727'>0x7037</td>
<td>DistortionCorrParams</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<td class=c title=' ! = Unsafe'>int16s[17]!</td>
<td class=c>SubIFD</td>
<td><span class=s><span class=n>(found in Sony ARW images)</span></span></td></tr>
<tr class=b>
<td title='0x800d = 32781'>0x800d</td>
<td>ImageID</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x80a3 = 32931'>0x80a3</td>
<td>WangTag1</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x80a4 = 32932'>0x80a4</td>
<td>WangAnnotation</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x80a5 = 32933'>0x80a5</td>
<td>WangTag3</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x80a6 = 32934'>0x80a6</td>
<td>WangTag4</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x80b9 = 32953'>0x80b9</td>
<td>ImageReferencePoints</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x80ba = 32954'>0x80ba</td>
<td>RegionXformTackPoint</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x80bb = 32955'>0x80bb</td>
<td>WarpQuadrilateral</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x80bc = 32956'>0x80bc</td>
<td>AffineTransformMat</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x80e3 = 32995'>0x80e3</td>
<td>Matteing</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x80e4 = 32996'>0x80e4</td>
<td>DataType</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x80e5 = 32997'>0x80e5</td>
<td>ImageDepth</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x80e6 = 32998'>0x80e6</td>
<td>TileDepth</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8214 = 33300'>0x8214</td>
<td>ImageFullWidth</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8215 = 33301'>0x8215</td>
<td>ImageFullHeight</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8216 = 33302'>0x8216</td>
<td>TextureFormat</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8217 = 33303'>0x8217</td>
<td>WrapModes</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8218 = 33304'>0x8218</td>
<td>FovCot</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8219 = 33305'>0x8219</td>
<td>MatrixWorldToScreen</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x821a = 33306'>0x821a</td>
<td>MatrixWorldToCamera</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x827d = 33405'>0x827d</td>
<td>Model2</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x828d = 33421'>0x828d</td>
<td>CFARepeatPatternDim</td>
<td class=c title=' ! = Unsafe'>int16u[2]!</td>
<td class=c>SubIFD</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x828e = 33422'>0x828e</td>
<td>CFAPattern2</td>
<td class=c title=' ! = Unsafe'>int8u[n]!</td>
<td class=c>SubIFD</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x828f = 33423'>0x828f</td>
<td>BatteryLevel</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8290 = 33424'>0x8290</td>
<td>KodakIFD</td>
<td class=c>-</td>
<td class=c>-</td>
<td>--&gt; <a href='Kodak.html#IFD'>Kodak IFD Tags</a>
<br><span class='n s'>(used in various types of Kodak images)</span></td></tr>
<tr class=b>
<tr>
<td title='0x8298 = 33432'>0x8298</td>
<td><u>Copyright</u></td>
<td class=c>string</td>
@ -994,163 +1000,163 @@ OtherImageLength in everything else)</span></span></td></tr>
newline. As per the EXIF specification, the newline is replaced by a null
byte when writing to file, but this may be avoided by disabling the print
conversion)</span></span></td></tr>
<tr>
<tr class=b>
<td title='0x829a = 33434'>0x829a</td>
<td><u>ExposureTime</u></td>
<td class=c>rational64u</td>
<td class=c>ExifIFD</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x829d = 33437'>0x829d</td>
<td><u>FNumber</u></td>
<td class=c>rational64u</td>
<td class=c>ExifIFD</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x82a5 = 33445'>0x82a5</td>
<td>MDFileTag</td>
<td class=c>N</td>
<td class=c>-</td>
<td><span class=s><span class=n>(tags 0x82a5-0x82ac are used in Molecular Dynamics GEL files)</span></span></td></tr>
<tr class=b>
<tr>
<td title='0x82a6 = 33446'>0x82a6</td>
<td>MDScalePixel</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x82a7 = 33447'>0x82a7</td>
<td>MDColorTable</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x82a8 = 33448'>0x82a8</td>
<td>MDLabName</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x82a9 = 33449'>0x82a9</td>
<td>MDSampleInfo</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x82aa = 33450'>0x82aa</td>
<td>MDPrepDate</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x82ab = 33451'>0x82ab</td>
<td>MDPrepTime</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x82ac = 33452'>0x82ac</td>
<td>MDFileUnits</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x830e = 33550'>0x830e</td>
<td>PixelScale</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8335 = 33589'>0x8335</td>
<td>AdventScale</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8336 = 33590'>0x8336</td>
<td>AdventRevision</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x835c = 33628'>0x835c</td>
<td>UIC1Tag</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x835d = 33629'>0x835d</td>
<td>UIC2Tag</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x835e = 33630'>0x835e</td>
<td>UIC3Tag</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x835f = 33631'>0x835f</td>
<td>UIC4Tag</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x83bb = 33723'>0x83bb</td>
<td>IPTC-NAA</td>
<td class=c title=' ! = Unsafe'>int32u!</td>
<td class=c>IFD0</td>
<td>--&gt; <a href='IPTC.html'>IPTC Tags</a></td></tr>
<tr>
<tr class=b>
<td title='0x847e = 33918'>0x847e</td>
<td>IntergraphPacketData</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x847f = 33919'>0x847f</td>
<td>IntergraphFlagRegisters</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8480 = 33920'>0x8480</td>
<td>IntergraphMatrix</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8481 = 33921'>0x8481</td>
<td>INGRReserved</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8482 = 33922'>0x8482</td>
<td>ModelTiePoint</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x84e0 = 34016'>0x84e0</td>
<td>Site</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x84e1 = 34017'>0x84e1</td>
<td>ColorSequence</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x84e2 = 34018'>0x84e2</td>
<td>IT8Header</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x84e3 = 34019'>0x84e3</td>
<td>RasterPadding</td>
<td class=c>N</td>
@ -1160,69 +1166,69 @@ conversion)</span></span></td></tr>
<br>2 = Long Word
<br>9 = Sector
<br>10 = Long Sector</span></td></tr>
<tr class=b>
<tr>
<td title='0x84e4 = 34020'>0x84e4</td>
<td>BitsPerRunLength</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x84e5 = 34021'>0x84e5</td>
<td>BitsPerExtendedRunLength</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x84e6 = 34022'>0x84e6</td>
<td>ColorTable</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x84e7 = 34023'>0x84e7</td>
<td>ImageColorIndicator</td>
<td class=c>N</td>
<td class=c>-</td>
<td><span class=s>0 = Unspecified Image Color
<br>1 = Specified Image Color</span></td></tr>
<tr class=b>
<tr>
<td title='0x84e8 = 34024'>0x84e8</td>
<td>BackgroundColorIndicator</td>
<td class=c>N</td>
<td class=c>-</td>
<td><span class=s>0 = Unspecified Background Color
<br>1 = Specified Background Color</span></td></tr>
<tr>
<tr class=b>
<td title='0x84e9 = 34025'>0x84e9</td>
<td>ImageColorValue</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x84ea = 34026'>0x84ea</td>
<td>BackgroundColorValue</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x84eb = 34027'>0x84eb</td>
<td>PixelIntensityRange</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x84ec = 34028'>0x84ec</td>
<td>TransparencyIndicator</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x84ed = 34029'>0x84ed</td>
<td>ColorCharacterization</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x84ee = 34030'>0x84ee</td>
<td>HCUsage</td>
<td class=c>N</td>
@ -1230,79 +1236,79 @@ conversion)</span></span></td></tr>
<td><span class=s>0 = CT
<br>1 = Line Art
<br>2 = Trap</span></td></tr>
<tr>
<tr class=b>
<td title='0x84ef = 34031'>0x84ef</td>
<td>TrapIndicator</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x84f0 = 34032'>0x84f0</td>
<td>CMYKEquivalent</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x8546 = 34118'>0x8546</td>
<td>SEMInfo</td>
<td class=c>string</td>
<td class=c>IFD0</td>
<td><span class=s><span class=n>(found in some scanning electron microscope images)</span></span></td></tr>
<tr class=b>
<tr>
<td title='0x8568 = 34152'>0x8568</td>
<td>AFCP_IPTC</td>
<td class=c>-</td>
<td class=c>-</td>
<td>--&gt; <a href='IPTC.html'>IPTC Tags</a></td></tr>
<tr>
<tr class=b>
<td title='0x85b8 = 34232'>0x85b8</td>
<td>PixelMagicJBIGOptions</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x85d7 = 34263'>0x85d7</td>
<td>JPLCartoIFD</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x85d8 = 34264'>0x85d8</td>
<td>ModelTransform</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8602 = 34306'>0x8602</td>
<td>WB_GRGBLevels</td>
<td class=c>N</td>
<td class=c>-</td>
<td><span class=s><span class=n>(found in IFD0 of Leaf MOS images)</span></span></td></tr>
<tr>
<tr class=b>
<td title='0x8606 = 34310'>0x8606</td>
<td>LeafData</td>
<td class=c>-</td>
<td class=c>-</td>
<td>--&gt; <a href='Leaf.html'>Leaf Tags</a></td></tr>
<tr class=b>
<tr>
<td title='0x8649 = 34377'>0x8649</td>
<td>PhotoshopSettings</td>
<td class=c>-</td>
<td class=c>-</td>
<td>--&gt; <a href='Photoshop.html'>Photoshop Tags</a></td></tr>
<tr>
<tr class=b>
<td title='0x8769 = 34665'>0x8769</td>
<td><u>ExifOffset</u></td>
<td class=c>-</td>
<td class=c>-</td>
<td>--&gt; <a href='EXIF.html'>EXIF Tags</a></td></tr>
<tr class=b>
<tr>
<td title='0x8773 = 34675'>0x8773</td>
<td>ICC_Profile</td>
<td class=c>-</td>
<td class=c>-</td>
<td>--&gt; <a href='ICC_Profile.html'>ICC_Profile Tags</a></td></tr>
<tr>
<tr class=b>
<td title='0x877f = 34687'>0x877f</td>
<td>TIFF_FXExtensions</td>
<td class=c>N</td>
@ -1312,7 +1318,7 @@ conversion)</span></span></td></tr>
<br>Bit 2 = Shared Data
<br>Bit 3 = B&amp;W JBIG2
<br>Bit 4 = JBIG2 Profile M</span></td></tr>
<tr class=b>
<tr>
<td title='0x8780 = 34688'>0x8780</td>
<td>MultiProfiles</td>
<td class=c>N</td>
@ -1330,25 +1336,25 @@ conversion)</span></span></td></tr>
<br>Bit 9 = Shared Data
<br>Bit 10 = JBIG2 Profile M</td></tr></table>
</td></tr>
<tr>
<tr class=b>
<td title='0x8781 = 34689'>0x8781</td>
<td>SharedData</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8782 = 34690'>0x8782</td>
<td>T88Options</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x87ac = 34732'>0x87ac</td>
<td>ImageLayer</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x87af = 34735'>0x87af</td>
<td>GeoTiffDirectory</td>
<td class=c>undef</td>
@ -1356,25 +1362,25 @@ conversion)</span></span></td></tr>
<td><span class=s><span class=n>(these &quot;GeoTiff&quot; tags may read and written as a block, but they aren&#39;t
extracted unless specifically requested. Byte order changes are handled
automatically when copying between TIFF images with different byte order)</span></span></td></tr>
<tr>
<tr class=b>
<td title='0x87b0 = 34736'>0x87b0</td>
<td>GeoTiffDoubleParams</td>
<td class=c>undef</td>
<td class=c>IFD0</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x87b1 = 34737'>0x87b1</td>
<td>GeoTiffAsciiParams</td>
<td class=c>string</td>
<td class=c>IFD0</td>
<td>&nbsp;</td></tr>
<tr>
<tr class=b>
<td title='0x87be = 34750'>0x87be</td>
<td>JBIGOptions</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8822 = 34850'>0x8822</td>
<td><u>ExposureProgram</u></td>
<td class=c>int16u</td>
@ -1391,51 +1397,51 @@ automatically when copying between TIFF images with different byte order)</span>
<br>8 = Landscape
<br>9 = Bulb</td></tr></table>
</td></tr>
<tr>
<tr class=b>
<td title='0x8824 = 34852'>0x8824</td>
<td><u>SpectralSensitivity</u></td>
<td class=c>string</td>
<td class=c>ExifIFD</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x8825 = 34853'>0x8825</td>
<td><u>GPSInfo</u></td>
<td class=c>-</td>
<td class=c>-</td>
<td>--&gt; <a href='GPS.html'>GPS Tags</a></td></tr>
<tr>
<tr class=b>
<td title='0x8827 = 34855'>0x8827</td>
<td><u>ISO</u></td>
<td class=c>int16u[n]</td>
<td class=c>ExifIFD</td>
<td><span class=s><span class=n>(called ISOSpeedRatings by EXIF 2.2, then PhotographicSensitivity by the EXIF
2.3 spec.)</span></span></td></tr>
<tr class=b>
<tr>
<td title='0x8828 = 34856'>0x8828</td>
<td><u>Opto-ElectricConvFactor</u></td>
<td class=c>N</td>
<td class=c>-</td>
<td><span class=s><span class=n>(called OECF by the EXIF spec.)</span></span></td></tr>
<tr>
<tr class=b>
<td title='0x8829 = 34857'>0x8829</td>
<td>Interlace</td>
<td class=c>N</td>
<td class=c>-</td>
<td>&nbsp;</td></tr>
<tr class=b>
<tr>
<td title='0x882a = 34858'>0x882a</td>
<td>TimeZoneOffset</td>
<td class=c>int16s[n]</td>
<td class=c>ExifIFD</td>
<td><span class=s><span class=n>(1 or 2 values: 1. The time zone offset of DateTimeOriginal from GMT in
hours, 2. If present, the time zone offset of ModifyDate)</span></span></td></tr>
<tr>
<tr class=b>
<td title='0x882b = 34859'>0x882b</td>
<td>SelfTimerMode</td>
<td class=c>int16u</td>
<td class=c>ExifIFD</td>
<td>&nbsp;</td></