summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorexiftool <exiftool@users.sourceforge.net>2021-02-18 15:50:41 -0500
committerexiftool <exiftool@users.sourceforge.net>2021-02-18 15:50:41 -0500
commit3ec55e0530b31641bcdbeb46bfdc079d5c39e844 (patch)
tree5193b9110d2d1ccb84e4fd486cf9df961b0fe343
parent69ad807f636a5c5152cd95a012fd45280517a7be (diff)
Update to 12.19
-rw-r--r--Changes18
-rw-r--r--META.json2
-rw-r--r--META.yml2
-rw-r--r--README4
-rwxr-xr-xexiftool33
-rw-r--r--html/ExifTool.html39
-rw-r--r--html/ExifTool.pdf728
-rw-r--r--html/Shift.pdf6
-rw-r--r--html/TagNames/Apple.html4
-rw-r--r--html/TagNames/EXIF.html6
-rw-r--r--html/TagNames/FITS.html16
-rw-r--r--html/TagNames/QuickTime.html24
-rw-r--r--html/TagNames/Shortcuts.html15
-rw-r--r--html/TagNames/Sony.html4
-rw-r--r--html/TagNames/index.html4
-rw-r--r--html/ancient_history.html180
-rw-r--r--html/exiftool_pod.html13
-rw-r--r--html/exiftool_pod.pdf1378
-rw-r--r--html/faq.html2
-rw-r--r--html/history.html201
-rw-r--r--html/index.html13
-rw-r--r--html/install.html22
-rw-r--r--lib/Image/ExifTool.pm71
-rw-r--r--lib/Image/ExifTool.pod37
-rw-r--r--lib/Image/ExifTool/Apple.pm5
-rw-r--r--lib/Image/ExifTool/BuildTagLookup.pm23
-rw-r--r--lib/Image/ExifTool/Exif.pm7
-rw-r--r--lib/Image/ExifTool/FITS.pm7
-rw-r--r--lib/Image/ExifTool/ICC_Profile.pm4
-rw-r--r--lib/Image/ExifTool/QuickTime.pm8
-rw-r--r--lib/Image/ExifTool/Shortcuts.pm9
-rw-r--r--lib/Image/ExifTool/Sony.pm2
-rw-r--r--lib/Image/ExifTool/TagLookup.pm2
-rw-r--r--lib/Image/ExifTool/TagNames.pod35
-rw-r--r--lib/Image/ExifTool/WriteExif.pl2
-rw-r--r--lib/Image/ExifTool/Writer.pl38
-rw-r--r--perl-Image-ExifTool.spec2
-rw-r--r--pp_build_exe.args8
-rw-r--r--t/FITS_2.out12
-rw-r--r--t/QuickTime_10.out3
-rw-r--r--t/QuickTime_14.out5
-rwxr-xr-xwindows_exiftool33
42 files changed, 1671 insertions, 1356 deletions
diff --git a/Changes b/Changes
index f382f815..79d42c3c 100644
--- a/Changes
+++ b/Changes
@@ -7,6 +7,24 @@ RSS feed: https://exiftool.org/rss.xml
Note: The most recent production release is Version 12.16. (Other versions are
considered development releases, and are not uploaded to MetaCPAN.)
+Feb. 18, 2021 - Version 12.19
+
+ - Added -list_dir option
+ - Added the "ls-l" Shortcut tag
+ - Extract Comment and History from FITS files
+ - Enhanced FilePermissions to include device type (similar to "ls -l")
+ - Changed the name of Apple ContentIdentifier tag to MediaGroupUUID
+ (thanks Neal Krawetz)
+ - Fixed a potential "substr outside of string" runtime error when reading
+ corrupted EXIF
+ - Fixed edge case where NikonScanIFD may not be copied properly when copying
+ MakerNotes to another file
+ - API Changes:
+ - Added ability to read/write System tags of directories
+ - Enhanced GetAllGroups() to support family 7 and take optional ExifTool
+ reference
+ - Changed QuickTimeHandler option default to 1
+
Feb. 9, 2021 - Version 12.18
- Added a new SonyModelID
diff --git a/META.json b/META.json
index 21df6765..5d7915e3 100644
--- a/META.json
+++ b/META.json
@@ -47,6 +47,6 @@
}
},
"release_status" : "stable",
- "version" : "12.18",
+ "version" : "12.19",
"x_serialization_backend" : "JSON::PP version 4.02"
}
diff --git a/META.yml b/META.yml
index b54c25b8..48253295 100644
--- a/META.yml
+++ b/META.yml
@@ -28,5 +28,5 @@ recommends:
Time::HiRes: 0
requires:
perl: 5.004
-version: 12.18
+version: 12.19
x_serialization_backend: 'JSON::PP version 4.02'
diff --git a/README b/README
index b676556d..13bb2568 100644
--- a/README
+++ b/README
@@ -106,8 +106,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-12.18.tar.gz | tar -xf -
- cd Image-ExifTool-12.18
+ gzip -dc Image-ExifTool-12.19.tar.gz | tar -xf -
+ cd Image-ExifTool-12.19
./exiftool t/images/ExifTool.jpg
Note: These commands extract meta information from one of the test images.
diff --git a/exiftool b/exiftool
index 51bf37a2..ac1d3788 100755
--- a/exiftool
+++ b/exiftool
@@ -10,7 +10,7 @@
use strict;
require 5.004;
-my $version = '12.18';
+my $version = '12.19';
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
my $exeDir;
@@ -163,6 +163,7 @@ my $isWriting; # flag set if we are writing tags
my $joinLists; # flag set to join list values into a single string
my $json; # flag for JSON/PHP output format (1=JSON, 2=PHP)
my $langOpt; # language option
+my $listDir; # treat a directory as a regular file
my $listItem; # item number for extracting single item from a list
my $listSep; # list item separator (', ' by default)
my $mt; # main ExifTool object
@@ -691,7 +692,7 @@ for (;;) {
} else { # 'g(\d*)'
# list all groups in specified family
my $family = $2 || 0;
- PrintTagList("Groups in family $family", GetAllGroups($family));
+ PrintTagList("Groups in family $family", $mt->GetAllGroups($family));
}
next;
}
@@ -876,6 +877,7 @@ for (;;) {
}
(/^D$/ or $a eq 'decimal') and $showTagID = 'D', next;
/^delete_original(!?)$/i and $deleteOrig = ($1 ? 2 : 1), next;
+ /^list_dir$/i and $listDir = 1, next;
(/^e$/ or $a eq '-composite') and $mt->Options(Composite => 0), next;
(/^-e$/ or $a eq 'composite') and $mt->Options(Composite => 1), next;
(/^E$/ or $a eq 'escapehtml') and require Image::ExifTool::HTML and $escapeHTML = 1, next;
@@ -2708,7 +2710,7 @@ sub SetImageInfo($$$)
return 0;
}
}
- if (not $isStdout and ($et->IsDirectory($outfile) or $outfile =~ /\/$/)) {
+ if (not $isStdout and (($et->IsDirectory($outfile) and not $listDir) or $outfile =~ /\/$/)) {
$outfile .= '/' unless $outfile =~ /\/$/;
my $name = $file;
$name =~ s/^.*\///s; # remove directory name
@@ -2911,6 +2913,10 @@ sub SetImageInfo($$$)
unless (defined $tmpFile) {
# count the number of tags and pseudo-tags we are writing
my ($numSet, $numPseudo) = $et->CountNewValues();
+ if ($numSet != $numPseudo and $et->IsDirectory($file)) {
+ print $vout "Can't write real tags to a directory - $infile\n" if defined $verbose;
+ $numSet = $numPseudo;
+ }
if ($et->Exists($file)) {
unless ($numSet) {
# no need to write if no tags set
@@ -3585,7 +3591,7 @@ sub ProcessFiles($;$)
++$progressCount;
$progStr = " [$progressCount/$progressMax]" if $progress;
}
- if ($et->IsDirectory($file)) {
+ if ($et->IsDirectory($file) and not $listDir) {
$multiFile = $validFile = 1;
ScanDir($et, $file, $list);
} elsif ($filterFlag and not AcceptFile($file)) {
@@ -3689,7 +3695,7 @@ sub ScanDir($$;$)
$dir =~ /\/$/ or $dir .= '/'; # make sure directory name ends with '/'
foreach $file (@fileList) {
my $path = "$dir$file";
- if ($et->IsDirectory($path)) {
+ if ($et->IsDirectory($path) and not $listDir) {
next unless $recurse;
# ignore directories starting with "." by default
next if $file =~ /^\./ and ($recurse == 1 or $file eq '.' or $file eq '..');
@@ -4624,6 +4630,7 @@ L<Advanced options|/Advanced options>
-echo[NUM] TEXT Echo text to stdout or stderr
-efile[NUM][!] ERRFILE Save names of files with errors
-execute[NUM] Execute multiple commands on one line
+ -list_dir List directories, not their contents
-srcfile FMT Process a different source file
-stay_open FLAG Keep reading -@ argfile even after EOF
-userParam PARAM[[^]=[VAL]] Set user parameter (API UserParam opt)
@@ -5369,7 +5376,7 @@ with this command:
produces output like this:
- -- Generated by ExifTool 12.18 --
+ -- Generated by ExifTool 12.19 --
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
@@ -6351,6 +6358,20 @@ line. I<NUM> is an optional number that is echoed in the "{ready}" message
when using the B<-stay_open> feature. If a I<NUM> is specified, the B<-q>
option no longer suppresses the output "{readyNUM}" message.
+=item B<-list_dir>
+
+List directories themselves instead of their contents. This option
+effectively causes directories to be treated as normal files when reading
+and writing. For example, with this option the output of the C<ls -la>
+command on Mac/Linux may be approximated by this exiftool command:
+
+ exiftool -list_dir -T -ls-l -api systemtags -fast5 .* *
+
+(The B<-T> option formats the output in tab-separated columns, B<-ls-l> is a
+L<shortcut tag|Image::ExifTool::Shortcuts>, the API SystemTags option is
+required to extract some necessary tags, and the B<-fast5> option is added
+for speed since only system tags are being extracted.)
+
=item B<-srcfile> I<FMT>
Specify a different source file to be processed based on the name of the
diff --git a/html/ExifTool.html b/html/ExifTool.html
index ac51935a..01ab65e1 100644
--- a/html/ExifTool.html
+++ b/html/ExifTool.html
@@ -669,7 +669,7 @@ distribution for examples.</p>
and <a href="#GetAllGroups">GetAllGroups</a> for a list of available groups.</td>
<td align=center>undef</td></tr>
<tr id="HexTagIDs"><td>HexTagIDs</td><td>Use hexadecimal instead of decimal for the family 7
- group names of tags with numerical ID's.</td>
+ group names of tags with numerical ID's.</td>
<td align=center>0 or 1</td><td align=center>undef</td></tr>
<tr id="HtmlDump"><td>HtmlDump</td><td>Dump information in hex to a dynamic HTML web page.
Option value sets a limit on the maximum block size. Output file is
@@ -757,10 +757,11 @@ distribution for examples.</p>
<tr id="QuickTimeHandler"><td>QuickTimeHandler</td><td>Flag set to add an 'mdir'
<a href="TagNames/QuickTime.html#Handler">Handler</a> to a newly created
Meta box when adding QuickTime ItemList tags. Adobe Bridge does not add this
- Handler, but it is commonly found in samples from other software, so it is
- possible that this could affect the interoperability of ItemList tags.</td>
+ Handler, but it is commonly found in samples from other software, and it has been
+ reported that Apple QuickTime Player and Photos.apps will ignore ItemList tags
+ if this is missing.</td>
<td align=center>0 or 1</td>
- <td align=center>undef</td></tr>
+ <td align=center>1</td></tr>
<tr id="QuickTimeUTC"><td>QuickTimeUTC</td><td>Flag set to assume that QuickTime
date/time values are stored as UTC, causing conversion to local time when they are
extracted and from local time when written. According to the QuickTime
@@ -1855,7 +1856,8 @@ and adjacent identical group names unless the family string begins with a colon.
<tr><td align=center>3</td><td>Document Number</td> <td>Main, Doc1, Doc3-2</td></tr>
<tr><td align=center>4</td><td>Instance Number</td> <td>Copy1, Copy2, Copy3...</td></tr>
<tr><td align=center>5</td><td>Metadata Path</td> <td>eg. JPEG-APP1-IFD0-ExifIFD</td></tr>
-<tr><td align=center>6</td><td>EXIF/TIFF Format</td> <td>int8u, int32u, undef, string...</td></tr>
+<tr><td align=center>6</td><td>EXIF/TIFF Format</td> <td>int8u, int32u, undef, string</td></tr>
+<tr><td align=center>7</td><td>Tag ID</td> <td>ID-271, ID-rights, ID-a9aut</td></tr>
</table></blockquote>
<p>Families 0 and 1 are based on the file structure, and are similar except that
@@ -1896,13 +1898,15 @@ option is used when extracting.</p>
<p>Family 6 is currently used only for EXIF/TIFF metadata, and gives the format
type of the extracted value. Generated only if the
<a href="#SaveFormat">SaveFormat</a> option is used when extracting.</p>
-<p>Family 7 is used for tag ID's. The group names are "ID-" followed by the
-tag ID with characters other than [-_A-Za-z0-9] converted to hex. Numerical tag ID's are
-given in hex if the <a href="#HexTagIDs">HexTagIDs</a> option is set. When
-specifying a family 7 group name, numerical ID's may be in hex or decimal, and
-non-numercal ID's may or may not have characters other than [-_A-Za-z0-9]
-converted to hex. Note that unlike other group names, family 7 group names are
-case sensitive (except for the leading "ID-").</p>
+<p>Family 7 is used for tag ID's. The group names are the actual tag ID's with
+a leading "ID-" string. Non-numerical tag ID's have characters other than
+[-_A-Za-z0-9] converted to hex. Numerical tag ID's are returned in hex if the
+<a href="#HexTagIDs">HexTagIDs</a> option is set, otherwise decimal is used.
+When specifying a family 7 group name, numerical ID's may be in hex (with
+leading "0x") or decimal, and non-numerical ID's may or may not have characters
+other than [-_A-Za-z0-9] converted to hex. Note that unlike other group names,
+the tag ID's in family 7 group names are case sensitive (but the leading "ID-"
+is not).</p>
<p>See <a href="#GetAllGroups">GetAllGroups</a> for lists of group names.</p>
<p><b>Examples:</b></p>
@@ -2058,7 +2062,7 @@ the specific IFD).
<p>Get list of all group names in specified family.</p>
<blockquote><table class='norm'>
<tr><td><b>Prototype</b></td><td>GetAllGroups($)</td></tr>
-<tr><td valign=top><b>Inputs</b></td><td><b>0)</b> Group family number (0-4)
+<tr><td valign=top><b>Inputs</b></td><td><b>0)</b> Group family number (0-7)
</td></tr>
<tr><td valign=top><b>Returns</b></td>
<td>A list of all groups in the specified family in alphabetical order</td></tr>
@@ -2134,10 +2138,13 @@ Preview, Printing, Time, Unknown, Video
<td>int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s,
rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64</td></tr>
<tr><td><b>7&nbsp;(Tag&nbsp;ID)</b></td>
-<td>ID-xxx (where xxx is the tag ID. Numerical ID's are given in hex with a
-leading "0x" if the HexTagIDs option is set, as are characters in non-numerical
-ID's which are not valid in a group name)</td></tr>
+<td>ID-xxx (Where xxx is the tag ID. Numerical ID's are returned in hex with a
+leading "0x" if the HexTagIDs option is set, or decimal otherwise. Characters
+in non-numerical ID's which are not valid in a group name are returned as 2
+hex digits.)</td></tr>
</table></blockquote>
+<p>Note: This function may also be called as an ExifTool member function to
+allow the HexTagIDs option to be set when retrieving family 7 group names.</p>
<p><b>Example:</b></p>
<blockquote><table class='box'><tr><td><pre>
@groupList = Image::ExifTool::<b>GetAllGroups</b>($family);
diff --git a/html/ExifTool.pdf b/html/ExifTool.pdf
index 938193f0..4eb858d5 100644
--- a/html/ExifTool.pdf
+++ b/html/ExifTool.pdf
@@ -12,7 +12,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 1)Tj
+( -- Image::ExifTool 12.19 -- 1)Tj
/TT4 1 Tf
0 -1.6333 TD
(EXIFTOOL\(1\) User Contributed Perl Documentation EXIFTOOL\(1\))Tj
@@ -189,7 +189,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 2)Tj
+( -- Image::ExifTool 12.19 -- 2)Tj
/TT4 1 Tf
0 -1.6333 TD
( ARW r/w | EXV r/w/c | M4A/V r/w | PCX r | SWF r)Tj
@@ -384,7 +384,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 3)Tj
+( -- Image::ExifTool 12.19 -- 3)Tj
/TT4 1 Tf
0 -1.6333 TD
( be exported with the ":Public" export list.)Tj
@@ -619,7 +619,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 4)Tj
+( -- Image::ExifTool 12.19 -- 4)Tj
/TT4 1 Tf
0 -1.6333 TD
( Advantages of using the object-oriented form are that options)Tj
@@ -770,7 +770,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 5)Tj
+( -- Image::ExifTool 12.19 -- 5)Tj
/TT4 1 Tf
0 -1.6333 TD
( "Sort" settings the entries may not be in the same order as)Tj
@@ -965,7 +965,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 6)Tj
+( -- Image::ExifTool 12.19 -- 6)Tj
/TT4 1 Tf
0 -1.6333 TD
( As well as tags representing information extracted from the image,)Tj
@@ -1116,7 +1116,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 7)Tj
+( -- Image::ExifTool 12.19 -- 7)Tj
/TT4 1 Tf
0 -1.6333 TD
( ExifByteOrder tag, but the ByteOrder option takes precedence if)Tj
@@ -1267,7 +1267,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 8)Tj
+( -- Image::ExifTool 12.19 -- 8)Tj
/TT4 1 Tf
0 -2.7333 TD
( CharsetQuickTime)Tj
@@ -1416,7 +1416,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 9)Tj
+( -- Image::ExifTool 12.19 -- 9)Tj
/TT4 1 Tf
0 -1.6333 TD
( EXIF format \(similar to a DateFormat of "%Y:%m:%d %H:%M:%S"\).)Tj
@@ -1569,7 +1569,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 10)Tj
+( -- Image::ExifTool 12.19 -- 10)Tj
/TT4 1 Tf
0 -1.6333 TD
( and changes the value of this variable as required. The)Tj
@@ -1752,7 +1752,7 @@ endobj
endobj
36 0 obj
<<
-/Length 4267
+/Length 4270
>>
stream
BT
@@ -1762,7 +1762,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 11)Tj
+( -- Image::ExifTool 12.19 -- 11)Tj
/TT4 1 Tf
0 -2.7333 TD
( Group#)Tj
@@ -1783,9 +1783,9 @@ T*
0 -2.2 TD
( HexTagIDs)Tj
0 -1.1 TD
-( Use hexadecimal instead of decimal for the family 7 group names)Tj
+( Return hexadecimal instead of decimal for the family 7 group)Tj
T*
-( of tags with numerical ID's.)Tj
+( names of tags with numerical ID's.)Tj
0 -2.2 TD
( HtmlDump)Tj
0 -1.1 TD
@@ -1899,7 +1899,7 @@ endobj
endobj
41 0 obj
<<
-/Length 4482
+/Length 4452
>>
stream
BT
@@ -1909,7 +1909,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 12)Tj
+( -- Image::ExifTool 12.19 -- 12)Tj
/TT4 1 Tf
0 -1.6333 TD
( Option to extract MakerNotes and other writable subdirectories)Tj
@@ -1982,9 +1982,11 @@ T*
T*
( this Handler, but it is commonly found in samples from other)Tj
T*
-( software, so it is possible that this could affect the)Tj
+( software, and it has been reported that Apple QuickTime Player)Tj
T*
-( interoperability of ItemList tags. Default is undef.)Tj
+( and Photos.apps will ignore ItemList tags if this is missing.)Tj
+T*
+( Default is 1.)Tj
0 -2.2 TD
( QuickTimeUTC)Tj
0 -1.1 TD
@@ -2027,8 +2029,6 @@ T*
( RequestTags)Tj
0 -1.1 TD
( List of additional tag and/or group names to request in the)Tj
-T*
-( next call to "ExtractInfo". This option is useful only for)Tj
ET
endstream
endobj
@@ -2046,7 +2046,7 @@ endobj
endobj
44 0 obj
<<
-/Length 4454
+/Length 4450
>>
stream
BT
@@ -2056,11 +2056,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 13)Tj
+( -- Image::ExifTool 12.19 -- 13)Tj
/TT4 1 Tf
0 -1.6333 TD
-( tags/groups which aren't extracted unless specifically)Tj
+( next call to "ExtractInfo". This option is useful only for)Tj
0 -1.1 TD
+( tags/groups which aren't extracted unless specifically)Tj
+T*
( requested. Value may be a list reference, a delimited string)Tj
T*
( of names \(any delimiter is allowed\), or undef to clear the)Tj
@@ -2172,8 +2174,6 @@ T*
( Flag to return XMP structures as hash references instead of)Tj
T*
( flattening into individual tags. Has no effect when writing)Tj
-T*
-( since both flattened and structured tags may always be written.)Tj
ET
endstream
endobj
@@ -2191,7 +2191,7 @@ endobj
endobj
47 0 obj
<<
-/Length 4351
+/Length 4371
>>
stream
BT
@@ -2201,9 +2201,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 14)Tj
+( -- Image::ExifTool 12.19 -- 14)Tj
/TT4 1 Tf
0 -1.6333 TD
+( since both flattened and structured tags may always be written.)Tj
+0 -1.1 TD
( Possible values are:)Tj
0 -2.2 TD
( undef - \(default\) Same as 0 for reading, 2 for copying)Tj
@@ -2329,8 +2331,6 @@ T*
( the tags. Level 3 adds a hex dump of the tag data, but with)Tj
T*
( limits on the number of bytes dumped. Levels 4 and 5 remove)Tj
-T*
-( the dump limit on tag values and JPEG segment data)Tj
ET
endstream
endobj
@@ -2348,7 +2348,7 @@ endobj
endobj
50 0 obj
<<
-/Length 4103
+/Length 4097
>>
stream
BT
@@ -2358,9 +2358,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 15)Tj
+( -- Image::ExifTool 12.19 -- 15)Tj
/TT4 1 Tf
0 -1.6333 TD
+( the dump limit on tag values and JPEG segment data)Tj
+0 -1.1 TD
( respectively.)Tj
0 -2.2 TD
( WriteMode)Tj
@@ -2526,8 +2528,6 @@ T*
( "GetInfo" is called to return meta information after it has been)Tj
T*
( extracted from the image by a previous call to "ExtractInfo" or)Tj
-T*
-( "ImageInfo". This function may be called repeatedly after a single call)Tj
ET
endstream
endobj
@@ -2545,7 +2545,7 @@ endobj
endobj
53 0 obj
<<
-/Length 4074
+/Length 4081
>>
stream
BT
@@ -2555,9 +2555,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 16)Tj
+( -- Image::ExifTool 12.19 -- 16)Tj
/TT4 1 Tf
0 -1.6333 TD
+( "ImageInfo". This function may be called repeatedly after a single call)Tj
+0 -1.1 TD
( to "ExtractInfo" or "ImageInfo".)Tj
0 -2.2 TD
( # get image width and height only)Tj
@@ -2677,8 +2679,6 @@ T*
( object is also allowed as a source, but in this case the)Tj
T*
( destination is not optional.)Tj
-0 -2.2 TD
-( 2\) [optional] Destination file name, file reference, scalar)Tj
ET
endstream
endobj
@@ -2696,7 +2696,7 @@ endobj
endobj
56 0 obj
<<
-/Length 4104
+/Length 4155
>>
stream
BT
@@ -2706,11 +2706,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 17)Tj
+( -- Image::ExifTool 12.19 -- 17)Tj
/TT4 1 Tf
0 -1.6333 TD
-( reference, or undef to overwrite the original file. May be '-' to)Tj
+( 2\) [optional] Destination file name, file reference, scalar)Tj
0 -1.1 TD
+( reference, or undef to overwrite the original file. May be '-' to)Tj
+T*
( write to stdout.)Tj
0 -2.2 TD
( 3\) [optional] Destination file type. Ignored if a source is)Tj
@@ -2832,8 +2834,6 @@ T*
( same as if "GetFoundTags" was called. If sort order is not)Tj
T*
( specified, the sort order is taken from the current options)Tj
-T*
-( settings.)Tj
ET
endstream
endobj
@@ -2851,7 +2851,7 @@ endobj
endobj
59 0 obj
<<
-/Length 4170
+/Length 4205
>>
stream
BT
@@ -2861,9 +2861,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 18)Tj
+( -- Image::ExifTool 12.19 -- 18)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( settings.)Tj
+0 -2.2 TD
( Return Values:)Tj
0 -1.1 TD
( A list of tag keys in the specified order.)Tj
@@ -3058,7 +3060,7 @@ endobj
endobj
62 0 obj
<<
-/Length 4116
+/Length 4033
>>
stream
BT
@@ -3068,9 +3070,9 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 19)Tj
+( -- Image::ExifTool 12.19 -- 19)Tj
/TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
( # ValueConv examples)Tj
0 -1.1 TD
( my $val = $exifTool->GetValue\($tag, 'ValueConv'\);)Tj
@@ -3200,8 +3202,6 @@ T*
( # \(also resets AddValue and DelValue options for this tag\))Tj
T*
( $exifTool->SetNewValue\($tag\);)Tj
-0 -2.2 TD
-( # reset all values from previous calls to SetNewValue\(\))Tj
ET
endstream
endobj
@@ -3219,7 +3219,7 @@ endobj
endobj
65 0 obj
<<
-/Length 4300
+/Length 4331
>>
stream
BT
@@ -3229,9 +3229,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 20)Tj
+( -- Image::ExifTool 12.19 -- 20)Tj
/TT4 1 Tf
0 -1.6333 TD
+( # reset all values from previous calls to SetNewValue\(\))Tj
+0 -1.1 TD
( $exifTool->SetNewValue\(\);)Tj
0 -2.2 TD
( # delete a specific keyword)Tj
@@ -3341,8 +3343,6 @@ T*
( the tags are deleted individually\). Use "GetDeleteGroups" to get a)Tj
T*
( list of deletable group names, and see Image::ExifTool::TagNames)Tj
-T*
-( for a complete list of tag names.)Tj
ET
endstream
endobj
@@ -3360,7 +3360,7 @@ endobj
endobj
68 0 obj
<<
-/Length 4396
+/Length 4372
>>
stream
BT
@@ -3370,9 +3370,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 21)Tj
+( -- Image::ExifTool 12.19 -- 21)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( for a complete list of tag names.)Tj
+0 -2.2 TD
( 2\) [optional] New value for tag. Undefined to delete tag from)Tj
0 -1.1 TD
( file. May be a scalar, scalar reference, list reference to set a)Tj
@@ -3486,8 +3488,6 @@ T*
( Replace)Tj
0 -1.1 TD
( Flag to replace the previous new values for this tag \(ie.)Tj
-T*
-( replace the values set in previous calls to "SetNewValue"\).)Tj
ET
endstream
endobj
@@ -3505,7 +3505,7 @@ endobj
endobj
72 0 obj
<<
-/Length 4841
+/Length 4586
>>
stream
BT
@@ -3515,11 +3515,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 22)Tj
+( -- Image::ExifTool 12.19 -- 22)Tj
/TT4 1 Tf
0 -1.6333 TD
-( This option is most commonly used to replace previously-set new)Tj
+( replace the values set in previous calls to "SetNewValue"\).)Tj
0 -1.1 TD
+( This option is most commonly used to replace previously-set new)Tj
+T*
( values for list-type tags. Valid values are 0 \(set new value)Tj
T*
( normally -- adds to new values for list-type tags\), 1 \(reset)Tj
@@ -3693,7 +3695,36 @@ T*
( being written, or if it is being deleted \(ie. if "SetNewValue" was)Tj
T*
( called without a value\).)Tj
-0 -2.2 TD
+ET
+endstream
+endobj
+73 0 obj
+<<
+/ProcSet [/PDF /Text ]
+/Font <<
+/TT2 4 0 R
+/TT4 5 0 R
+>>
+/ExtGState <<
+/GS1 6 0 R
+>>
+>>
+endobj
+75 0 obj
+<<
+/Length 4918
+>>
+stream
+BT
+/TT2 1 Tf
+10 0 0 10 29 806.3333 Tm
+0 g
+/GS1 gs
+0 Tc
+0 Tw
+( -- Image::ExifTool 12.19 -- 23)Tj
+/TT4 1 Tf
+0 -1.6333 TD
( S)Tj
1.8 0 TD
(Se)Tj
@@ -3735,38 +3766,9 @@ T*
(le)Tj
0.6 0 TD
(e)Tj
-ET
-endstream
-endobj
-73 0 obj
-<<
-/ProcSet [/PDF /Text ]
-/Font <<
-/TT2 4 0 R
-/TT4 5 0 R
->>
-/ExtGState <<
-/GS1 6 0 R
->>
->>
-endobj
-75 0 obj
-<<
-/Length 4668
->>
-stream
-BT
-/TT2 1 Tf
-10 0 0 10 29 806.3333 Tm
-0 g
-/GS1 gs
-0 Tc
-0 Tw
-( -- Image::ExifTool 12.18 -- 23)Tj
-/TT4 1 Tf
-0 -1.6333 TD
+-13.2 -1.1 TD
( A very powerful routine that sets new values for tags from information)Tj
-0 -1.1 TD
+T*
( found in a specified file.)Tj
0 -2.2 TD
( # set new values from all information in a file...)Tj
@@ -3876,8 +3878,6 @@ T*
( the tag name to separate it from subsequent text, and a '$$' is)Tj
T*
( used to to represent a '$' symbol. The behaviour for missing tags)Tj
-T*
-( in expressions is defined by the "MissingTagValue" option. The tag)Tj
ET
endstream
endobj
@@ -3895,7 +3895,7 @@ endobj
endobj
78 0 obj
<<
-/Length 4444
+/Length 4447
>>
stream
BT
@@ -3905,11 +3905,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 24)Tj
+( -- Image::ExifTool 12.19 -- 24)Tj
/TT4 1 Tf
0 -1.6333 TD
-( value may be modified via changes to the default input variable)Tj
+( in expressions is defined by the "MissingTagValue" option. The tag)Tj
0 -1.1 TD
+( value may be modified via changes to the default input variable)Tj
+T*
( \($_\) in a Perl expression placed inside the braces and after a)Tj
T*
( semicolon following the tag name \(see the last example above\). A)Tj
@@ -4043,8 +4045,6 @@ T*
( Return the total number of new values set.)Tj
0 -2.2 TD
( $numSet = $exifTool->CountNewValues\(\);)Tj
-0 -1.1 TD
-( \($numSet, $numPseudo\) = $exifTool->CountNewValues\(\);)Tj
ET
endstream
endobj
@@ -4062,7 +4062,7 @@ endobj
endobj
81 0 obj
<<
-/Length 4108
+/Length 4190
>>
stream
BT
@@ -4072,9 +4072,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 25)Tj
+( -- Image::ExifTool 12.19 -- 25)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( \($numSet, $numPseudo\) = $exifTool->CountNewValues\(\);)Tj
+0 -2.2 TD
( Inputs:)Tj
0 -1.1 TD
( 0\) ExifTool object reference)Tj
@@ -4285,7 +4287,7 @@ endobj
endobj
84 0 obj
<<
-/Length 4180
+/Length 4097
>>
stream
BT
@@ -4295,9 +4297,9 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 26)Tj
+( -- Image::ExifTool 12.19 -- 26)Tj
/TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
( S)Tj
1.8 0 TD
(Se)Tj
@@ -4487,8 +4489,6 @@ T*
( Get the ID for the specified tag. The ID is the IFD tag number in EXIF)Tj
T*
( information, the property name in XMP information, or the data offset)Tj
-T*
-( in a binary data block. For some tags, such as Composite tags where)Tj
ET
endstream
endobj
@@ -4506,7 +4506,7 @@ endobj
endobj
87 0 obj
<<
-/Length 3717
+/Length 3722
>>
stream
BT
@@ -4516,11 +4516,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 27)Tj
+( -- Image::ExifTool 12.19 -- 27)Tj
/TT4 1 Tf
0 -1.6333 TD
-( there is no ID, an empty string is returned. In list context, also)Tj
+( in a binary data block. For some tags, such as Composite tags where)Tj
0 -1.1 TD
+( there is no ID, an empty string is returned. In list context, also)Tj
+T*
( returns a language code for the tag if available and different from the)Tj
T*
( default language \(eg. with alternate language entries for XMP "lang-)Tj
@@ -4662,8 +4664,6 @@ T*
( 1\) Specific Location \(eg. IFD0, XMP-dc\))Tj
T*
( 2\) Category \(eg. Author, Time\))Tj
-T*
-( 3\) Document Number \(eg. Main, Doc1, Doc3-2\))Tj
ET
endstream
endobj
@@ -4681,7 +4681,7 @@ endobj
endobj
90 0 obj
<<
-/Length 4883
+/Length 5011
>>
stream
BT
@@ -4691,14 +4691,18 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 28)Tj
+( -- Image::ExifTool 12.19 -- 28)Tj
/TT4 1 Tf
0 -1.6333 TD
-( 4\) Instance Number \(eg. Copy1, Copy2, Copy3...\))Tj
+( 3\) Document Number \(eg. Main, Doc1, Doc3-2\))Tj
0 -1.1 TD
+( 4\) Instance Number \(eg. Copy1, Copy2, Copy3...\))Tj
+T*
( 5\) Metadata Path \(eg. JPEG-APP1-IFD0-ExifIFD\))Tj
T*
( 6\) EXIF/TIFF Format \(eg. int8u, int32u, undef, string\))Tj
+T*
+( 7\) Tag ID \(eg. ID-271, ID-rights, ID-a9aut\))Tj
0 -2.2 TD
( Families 0 and 1 are based on the file structure, and are similar)Tj
0 -1.1 TD
@@ -4778,21 +4782,23 @@ T*
T*
( "SaveFormat" option is used when extracting.)Tj
0 -2.2 TD
-( Family 7 is used for tag ID's. The group names are "ID-" followed)Tj
+( Family 7 is used for tag ID's. The group names are the actual tag)Tj
0 -1.1 TD
-( by the tag ID with characters other than [-_A-Za-z0-9] converted to)Tj
+( ID's, with a leading "ID-" string. Non-numerical ID's have)Tj
+T*
+( characters other than [-_A-Za-z0-9] converted to hex. Numerical)Tj
T*
-( hex. Numerical tag ID's are given in hex if the "HexTagIDs" option)Tj
+( tag ID's are returned in hex if the "HexTagIDs" option is set,)Tj
T*
-( is set. When specifying a family 7 group name, numerical ID's may)Tj
+( otherwise decimal is used. When specifying a family 7 group name,)Tj
T*
-( be in hex or decimal, and non-numercal ID's may or may not have)Tj
+( numerical ID's may be in hex or decimal, and non-numerical ID's may)Tj
T*
-( characters other than [-_A-Za-z0-9] converted to hex. Note that)Tj
+( or may not have characters other than [-_A-Za-z0-9] converted to)Tj
T*
-( unlike other group names, family 7 group names are case sensitive)Tj
+( hex. Note that unlike other group names, the tag ID's of family 7)Tj
T*
-( \(except for the leading "ID-"\).)Tj
+( group names are case sensitive \(but the leading "ID-" is not\).)Tj
0 -2.2 TD
( See "GetAllGroups [static]" for complete lists of group names.)Tj
T*
@@ -4823,10 +4829,6 @@ T*
( @groups = $exifTool->GetGroups\('3:1'\);)Tj
0 -2.2 TD
( Inputs:)Tj
-0 -1.1 TD
-( 0\) ExifTool object reference)Tj
-0 -2.2 TD
-( 1\) [optional] Info hash ref \(default is all extracted info\))Tj
ET
endstream
endobj
@@ -4844,7 +4846,7 @@ endobj
endobj
93 0 obj
<<
-/Length 4458
+/Length 4472
>>
stream
BT
@@ -4854,11 +4856,15 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 29)Tj
+( -- Image::ExifTool 12.19 -- 29)Tj
/TT4 1 Tf
-0 -2.7333 TD
-( 2\) [optional] Group family number, or string of numbers \(default 0\))Tj
+0 -1.6333 TD
+( 0\) ExifTool object reference)Tj
0 -2.2 TD
+( 1\) [optional] Info hash ref \(default is all extracted info\))Tj
+T*
+( 2\) [optional] Group family number, or string of numbers \(default 0\))Tj
+T*
( Return Values:)Tj
0 -1.1 TD
( List of group names in alphabetical order. If information hash is)Tj
@@ -5102,10 +5108,6 @@ T*
( @tagList = Image::ExifTool::GetAllTags\($group\);)Tj
T*
( Inputs:)Tj
-0 -1.1 TD
-( 0\) [optional] Group name, or string of group names separated by)Tj
-T*
-( colons)Tj
ET
endstream
endobj
@@ -5123,7 +5125,7 @@ endobj
endobj
96 0 obj
<<
-/Length 5163
+/Length 5044
>>
stream
BT
@@ -5133,9 +5135,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 30)Tj
+( -- Image::ExifTool 12.19 -- 30)Tj
/TT4 1 Tf
0 -1.6333 TD
+( 0\) [optional] Group name, or string of group names separated by)Tj
+0 -1.1 TD
+( colons)Tj
+0 -2.2 TD
( Return Values:)Tj
0 -1.1 TD
( A list of all available tags in alphabetical order, or all tags in)Tj
@@ -5264,7 +5270,7 @@ T*
T*
( Inputs:)Tj
0 -1.1 TD
-( 0\) Group family number \(0-4\))Tj
+( 0\) Group family number \(0-7\))Tj
0 -2.2 TD
( Return Values:)Tj
0 -1.1 TD
@@ -5333,12 +5339,6 @@ T*
( MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-)Tj
T*
( UTM, MIE-Unknown, MIE-Video, MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0,)Tj
-T*
-( MPImage, MS-DOC, MXF, MacOS, MakerNotes, MakerUnknown, Matroska,)Tj
-T*
-( MediaJukebox, Meta, MetaIFD, Microsoft, Minolta, MinoltaRaw,)Tj
-T*
-( Motorola, NITF, Nikon, NikonCapture, NikonCustom, NikonScan,)Tj
ET
endstream
endobj
@@ -5356,7 +5356,7 @@ endobj
endobj
99 0 obj
<<
-/Length 4605
+/Length 4667
>>
stream
BT
@@ -5366,11 +5366,17 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 31)Tj
+( -- Image::ExifTool 12.19 -- 31)Tj
/TT4 1 Tf
0 -1.6333 TD
-( NikonSettings, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF,)Tj
+( MPImage, MS-DOC, MXF, MacOS, MakerNotes, MakerUnknown, Matroska,)Tj
0 -1.1 TD
+( MediaJukebox, Meta, MetaIFD, Microsoft, Minolta, MinoltaRaw,)Tj
+T*
+( Motorola, NITF, Nikon, NikonCapture, NikonCustom, NikonScan,)Tj
+T*
+( NikonSettings, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF,)Tj
+T*
( PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax,)Tj
T*
( PhaseOne, PhotoCD, PhotoMechanic, Photoshop, PictureInfo,)Tj
@@ -5439,13 +5445,19 @@ T*
0 -2.2 TD
( Family 7 \(Tag ID\):)Tj
0 -1.1 TD
-( ID-xxx \(where xxx is the tag ID. Numerical ID's are given in hex)Tj
+( ID-xxx \(Where xxx is the tag ID. Numerical ID's are returned in)Tj
T*
-( with a leading "0x" if the HexTagIDs option is set, as are)Tj
+( hex with a leading "0x" if the HexTagIDs option is set, or decimal)Tj
T*
-( characters in non-numerical ID's which are not valid in a group)Tj
+( otherwise. Characters in non-numerical ID's which are not valid in)Tj
T*
-( name\))Tj
+( a group name are returned as 2 hex digits.\))Tj
+0 -2.2 TD
+( Note: This function may also be called as an ExifTool member function)Tj
+0 -1.1 TD
+( to allow the HexTagIDs option to be set when retrieving family 7 group)Tj
+T*
+( names.)Tj
0 -2.2 TD
( G)Tj
1.8 0 TD
@@ -5518,18 +5530,6 @@ T*
( File, FlashPix, FotoStation, GPS, GlobParamIFD, ICC_Profile, IFD0,)Tj
T*
( IFD1, IPTC, Image, InteropIFD, JFIF, Jpeg2000, Location, MIE, MPF,)Tj
-T*
-( MakerNotes, Meta, MetaIFD, NikonCapture, Other, PDF, PDF-update,)Tj
-T*
-( PNG, PNG-pHYs, PhotoMechanic, Photoshop, Preview, PrintIM,)Tj
-T*
-( Printing, RMETA, RSRC, SubIFD, Time, Trailer, Video, XML, XML-*,)Tj
-T*
-( XMP, XMP-*)Tj
-0 -2.2 TD
-( To schedule a group for deletion, call "SetNewValue" with a tag)Tj
-0 -1.1 TD
-( name like 'EXIF:*' and an undefined tag value.)Tj
ET
endstream
endobj
@@ -5547,7 +5547,7 @@ endobj
endobj
103 0 obj
<<
-/Length 5025
+/Length 4640
>>
stream
BT
@@ -5557,9 +5557,21 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 32)Tj
+( -- Image::ExifTool 12.19 -- 32)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( MakerNotes, Meta, MetaIFD, NikonCapture, Other, PDF, PDF-update,)Tj
+0 -1.1 TD
+( PNG, PNG-pHYs, PhotoMechanic, Photoshop, Preview, PrintIM,)Tj
+T*
+( Printing, RMETA, RSRC, SubIFD, Time, Trailer, Video, XML, XML-*,)Tj
+T*
+( XMP, XMP-*)Tj
+0 -2.2 TD
+( To schedule a group for deletion, call "SetNewValue" with a tag)Tj
+0 -1.1 TD
+( name like 'EXIF:*' and an undefined tag value.)Tj
+0 -2.2 TD
( Deleting a family 0 or 1 group will delete the entire corresponding)Tj
0 -1.1 TD
( block of metadata, but deleting a family 2 group \(eg. Audio,)Tj
@@ -5759,7 +5771,36 @@ T*
( Currently, this can only be done with XMP, MIE, ICC, VRD, DR4, EXV)Tj
T*
( and EXIF files.)Tj
-0 -2.2 TD
+ET
+endstream
+endobj
+104 0 obj
+<<
+/ProcSet [/PDF /Text ]
+/Font <<
+/TT2 4 0 R
+/TT4 5 0 R
+>>
+/ExtGState <<
+/GS1 6 0 R
+>>
+>>
+endobj
+106 0 obj
+<<
+/Length 5290
+>>
+stream
+BT
+/TT2 1 Tf
+10 0 0 10 29 806.3333 Tm
+0 g
+/GS1 gs
+0 Tc
+0 Tw
+( -- Image::ExifTool 12.19 -- 33)Tj
+/TT4 1 Tf
+0 -2.7333 TD
( A)Tj
1.8 0 TD
(Ad)Tj
@@ -5823,36 +5864,7 @@ T*
( Image::ExifTool distribution\) because it allows tags to be added after)Tj
T*
( a tag table has been initialized.)Tj
-ET
-endstream
-endobj
-104 0 obj
-<<
-/ProcSet [/PDF /Text ]
-/Font <<
-/TT2 4 0 R
-/TT4 5 0 R
->>
-/ExtGState <<
-/GS1 6 0 R
->>
->>
-endobj
-106 0 obj
-<<
-/Length 4800
->>
-stream
-BT
-/TT2 1 Tf
-10 0 0 10 29 806.3333 Tm
-0 g
-/GS1 gs
-0 Tc
-0 Tw
-( -- Image::ExifTool 12.18 -- 33)Tj
-/TT4 1 Tf
-0 -2.7333 TD
+0 -2.2 TD
( use Image::ExifTool ':Public';)Tj
0 -1.1 TD
( my %tags = \()Tj
@@ -6034,16 +6046,6 @@ T*
(\) may be used to convert to a)Tj
-29.4 -1.1 TD
( sequence of logical Perl characters. Note that some settings of the)Tj
-T*
-( PERL_UNICODE environment variable may be incompatible with ExifTool's)Tj
-T*
-( character handling.)Tj
-0 -2.2 TD
-( More specific details are given below about how character coding is)Tj
-0 -1.1 TD
-( handled for EXIF, IPTC, XMP, PNG, ID3, PDF, Photoshop, QuickTime, AIFF,)Tj
-T*
-( MIE and Vorbis information:)Tj
ET
endstream
endobj
@@ -6061,7 +6063,7 @@ endobj
endobj
109 0 obj
<<
-/Length 4759
+/Length 4729
>>
stream
BT
@@ -6071,9 +6073,19 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 34)Tj
+( -- Image::ExifTool 12.19 -- 34)Tj
/TT4 1 Tf
0 -1.6333 TD
+( PERL_UNICODE environment variable may be incompatible with ExifTool's)Tj
+0 -1.1 TD
+( character handling.)Tj
+0 -2.2 TD
+( More specific details are given below about how character coding is)Tj
+0 -1.1 TD
+( handled for EXIF, IPTC, XMP, PNG, ID3, PDF, Photoshop, QuickTime, AIFF,)Tj
+T*
+( MIE and Vorbis information:)Tj
+0 -2.2 TD
( E)Tj
1.8 0 TD
(EX)Tj
@@ -6195,16 +6207,6 @@ T*
( exiftool -tagsfromfile @ -iptc:all -codedcharacterset= a.jpg)Tj
T*
( or to Windows Latin2:)Tj
-T*
-( exiftool -tagsfromfile @ -iptc:all -codedcharacterset= \\)Tj
-0 -1.1 TD
-( -charset iptc=latin2 a.jpg)Tj
-0 -2.2 TD
-( Unless CodedCharacterSet is 'UTF8', applications have no reliable way)Tj
-0 -1.1 TD
-( to determine the IPTC character encoding. For this reason, it is)Tj
-T*
-( recommended that CodedCharacterSet be set to 'UTF8' when creating new)Tj
ET
endstream
endobj
@@ -6222,7 +6224,7 @@ endobj
endobj
112 0 obj
<<
-/Length 5035
+/Length 4924
>>
stream
BT
@@ -6232,9 +6234,19 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 35)Tj
+( -- Image::ExifTool 12.19 -- 35)Tj
/TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
+( exiftool -tagsfromfile @ -iptc:all -codedcharacterset= \\)Tj
+0 -1.1 TD
+( -charset iptc=latin2 a.jpg)Tj
+0 -2.2 TD
+( Unless CodedCharacterSet is 'UTF8', applications have no reliable way)Tj
+0 -1.1 TD
+( to determine the IPTC character encoding. For this reason, it is)Tj
+T*
+( recommended that CodedCharacterSet be set to 'UTF8' when creating new)Tj
+T*
( IPTC.)Tj
0 -2.2 TD
( \(Note: Here, "IPTC" Refers to the older IPTC IIM format. The more)Tj
@@ -6424,34 +6436,6 @@ T*
( a default encoding of MacRoman, but this may be changed with the)Tj
T*
( "CharsetQuickTime" option.)Tj
-0 -2.2 TD
-( A)Tj
-1.8 0 TD
-(AI)Tj
-0.6 0 TD
-(IF)Tj
-0.6 0 TD
-(FF)Tj
-0.6 0 TD
-(F)Tj
--3.6 -1.1 TD
-( AIFF strings are assumed to be stored in MacRoman, and are converted)Tj
-T*
-( according to the "Charset" option when reading.)Tj
-0 -2.2 TD
-( R)Tj
-1.8 0 TD
-(RI)Tj
-0.6 0 TD
-(IF)Tj
-0.6 0 TD
-(FF)Tj
-0.6 0 TD
-(F)Tj
--3.6 -1.1 TD
-( The internal encoding of RIFF strings \(eg. in AVI and WAV files\) is)Tj
-T*
-( assumed to be Latin unless otherwise specified by the RIFF CSET chunk)Tj
ET
endstream
endobj
@@ -6469,7 +6453,7 @@ endobj
endobj
115 0 obj
<<
-/Length 4192
+/Length 4682
>>
stream
BT
@@ -6479,9 +6463,37 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- Image::ExifTool 12.18 -- 36)Tj
+( -- Image::ExifTool 12.19 -- 36)Tj
/TT4 1 Tf
0 -1.6333 TD
+( A)Tj
+1.8 0 TD
+(AI)Tj
+0.6 0 TD
+(IF)Tj
+0.6 0 TD
+(FF)Tj
+0.6 0 TD
+(F)Tj
+-3.6 -1.1 TD
+( AIFF strings are assumed to be stored in MacRoman, and are converted)Tj
+T*
+( according to the "Charset" option when reading.)Tj
+0 -2.2 TD
+( R)Tj
+1.8 0 TD
+(RI)Tj
+0.6 0 TD
+(IF)Tj
+0.6 0 TD
+(FF)Tj
+0.6 0 TD
+(F)Tj
+-3.6 -1.1 TD
+( The internal encoding of RIFF strings \(eg. in AVI and WAV files\) is)Tj
+T*
+( assumed to be Latin unless otherwise specified by the RIFF CSET chunk)Tj
+T*
( or the "CharsetRIFF" option.)Tj
0 -2.2 TD
( M)Tj
@@ -6834,7 +6846,7 @@ T*
0.6 0 TD
(G\(3pm\))Tj
-27 -4.4 TD
-(perl v5.18.4 2021-01-21 EXIFTOOL\(1\))Tj
+(perl v5.18.4 2021-02-18 EXIFTOOL\(1\))Tj
ET
endstream
endobj
@@ -7270,8 +7282,8 @@ endobj
endobj
121 0 obj
<<
-/CreationDate (D:20210209104357-05'00')
-/ModDate (D:20210209104357-05'00')
+/CreationDate (D:20210218154808-05'00')
+/ModDate (D:20210218154808-05'00')
/Producer (Apple pstopdf)
>>
endobj
@@ -7285,135 +7297,135 @@ endobj
xref
0 123
0000000000 65535 f
-0000169351 00000 n
+0000169892 00000 n
0000000016 00000 n
0000004112 00000 n
-0000168352 00000 n
-0000168753 00000 n
-0000167817 00000 n
-0000172453 00000 n
-0000169431 00000 n
+0000168893 00000 n
+0000169294 00000 n
+0000168358 00000 n
+0000172994 00000 n
+0000169972 00000 n
0000004218 00000 n
0000009550 00000 n
-0000169512 00000 n
+0000170053 00000 n
0000009657 00000 n
0000014384 00000 n
-0000169595 00000 n
+0000170136 00000 n
0000014491 00000 n
0000019421 00000 n
-0000169678 00000 n
+0000170219 00000 n
0000019528 00000 n
0000024242 00000 n
-0000169761 00000 n
+0000170302 00000 n
0000024349 00000 n
0000028355 00000 n
-0000169844 00000 n
+0000170385 00000 n
0000028462 00000 n
0000033161 00000 n
-0000169927 00000 n
+0000170468 00000 n
0000033268 00000 n
0000037886 00000 n
-0000170010 00000 n
+0000170551 00000 n
0000037993 00000 n
0000042902 00000 n
-0000170093 00000 n
+0000170634 00000 n
0000043009 00000 n
0000047844 00000 n
-0000170176 00000 n
+0000170717 00000 n
0000047951 00000 n
-0000052271 00000 n
-0000172979 00000 n
-0000172588 00000 n
-0000170260 00000 n
-0000052378 00000 n
-0000056913 00000 n
-0000170344 00000 n
-0000057020 00000 n
-0000061527 00000 n
-0000170428 00000 n
-0000061634 00000 n
-0000066038 00000 n
-0000170512 00000 n
-0000066145 00000 n
-0000070301 00000 n
-0000170596 00000 n
-0000070408 00000 n
-0000074535 00000 n
-0000170680 00000 n
-0000074642 00000 n
-0000078799 00000 n
-0000170764 00000 n
-0000078906 00000 n
-0000083129 00000 n
-0000170848 00000 n
-0000083236 00000 n
-0000087405 00000 n
-0000170932 00000 n
-0000087512 00000 n
-0000091865 00000 n
-0000171016 00000 n
-0000091972 00000 n
+0000052274 00000 n
+0000173520 00000 n
+0000173129 00000 n
+0000170801 00000 n
+0000052381 00000 n
+0000056886 00000 n
+0000170885 00000 n
+0000056993 00000 n
+0000061496 00000 n
+0000170969 00000 n
+0000061603 00000 n
+0000066027 00000 n
+0000171053 00000 n
+0000066134 00000 n
+0000070284 00000 n
+0000171137 00000 n
+0000070391 00000 n
+0000074525 00000 n
+0000171221 00000 n
+0000074632 00000 n
+0000078840 00000 n
+0000171305 00000 n
+0000078947 00000 n
+0000083205 00000 n
+0000171389 00000 n
+0000083312 00000 n
+0000087398 00000 n
+0000171473 00000 n
+0000087505 00000 n
+0000091889 00000 n
+0000171557 00000 n
+0000091996 00000 n
0000096421 00000 n
-0000172726 00000 n
-0000171100 00000 n
+0000173267 00000 n
+0000171641 00000 n
0000096528 00000 n
-0000101422 00000 n
-0000171184 00000 n
-0000101529 00000 n
-0000106250 00000 n
-0000171268 00000 n
-0000106357 00000 n
-0000110854 00000 n
-0000171352 00000 n
-0000110961 00000 n
-0000115122 00000 n
-0000171436 00000 n
-0000115229 00000 n
-0000119462 00000 n
-0000171520 00000 n
-0000119569 00000 n
-0000123339 00000 n
-0000171604 00000 n
-0000123446 00000 n
-0000128382 00000 n
-0000171688 00000 n
-0000128489 00000 n
-0000133000 00000 n
-0000171772 00000 n
-0000133107 00000 n
-0000138323 00000 n
-0000171856 00000 n
-0000138430 00000 n
-0000143088 00000 n
-0000172864 00000 n
-0000171942 00000 n
-0000143196 00000 n
-0000148275 00000 n
-0000172030 00000 n
-0000148383 00000 n
-0000153237 00000 n
-0000172118 00000 n
-0000153345 00000 n
-0000158158 00000 n
-0000172206 00000 n
-0000158266 00000 n
-0000163355 00000 n
-0000172294 00000 n
-0000163463 00000 n
-0000167709 00000 n
-0000167957 00000 n
-0000168160 00000 n
-0000172382 00000 n
-0000172411 00000 n
-0000173085 00000 n
-0000173209 00000 n
+0000101167 00000 n
+0000171725 00000 n
+0000101274 00000 n
+0000106245 00000 n
+0000171809 00000 n
+0000106352 00000 n
+0000110852 00000 n
+0000171893 00000 n
+0000110959 00000 n
+0000115202 00000 n
+0000171977 00000 n
+0000115309 00000 n
+0000119459 00000 n
+0000172061 00000 n
+0000119566 00000 n
+0000123341 00000 n
+0000172145 00000 n
+0000123448 00000 n
+0000128512 00000 n
+0000172229 00000 n
+0000128619 00000 n
+0000133144 00000 n
+0000172313 00000 n
+0000133251 00000 n
+0000138348 00000 n
+0000172397 00000 n
+0000138455 00000 n
+0000143175 00000 n
+0000173405 00000 n
+0000172483 00000 n
+0000143283 00000 n
+0000147977 00000 n
+0000172571 00000 n
+0000148085 00000 n
+0000153429 00000 n
+0000172659 00000 n
+0000153537 00000 n
+0000158320 00000 n
+0000172747 00000 n
+0000158428 00000 n
+0000163406 00000 n
+0000172835 00000 n
+0000163514 00000 n
+0000168250 00000 n
+0000168498 00000 n
+0000168701 00000 n
+0000172923 00000 n
+0000172952 00000 n
+0000173626 00000 n
+0000173750 00000 n
trailer
<<
/Size 123
/Root 122 0 R
/Info 121 0 R
-/ID [<4d904e277af99eaf9fe654a7502576e7><4d904e277af99eaf9fe654a7502576e7>]
+/ID [<5f7674c14bf2832df6615ae974053a86><5f7674c14bf2832df6615ae974053a86>]
>>
startxref
-173281
+173822
%%EOF
diff --git a/html/Shift.pdf b/html/Shift.pdf
index 2b8ad121..85e1d295 100644
--- a/html/Shift.pdf
+++ b/html/Shift.pdf
@@ -593,8 +593,8 @@ endobj
endobj
16 0 obj
<<
-/CreationDate (D:20210209104357-05'00')
-/ModDate (D:20210209104357-05'00')
+/CreationDate (D:20210218154809-05'00')
+/ModDate (D:20210218154809-05'00')
/Producer (Apple pstopdf)
>>
endobj
@@ -630,7 +630,7 @@ trailer
/Size 18
/Root 17 0 R
/Info 16 0 R
-/ID [<8a30a0fb9d4543d31cc70c9ba78ece16><8a30a0fb9d4543d31cc70c9ba78ece16>]
+/ID [<3ff7748142f2bb8ac096c5cc2eb2b2cf><3ff7748142f2bb8ac096c5cc2eb2b2cf>]
>>
startxref
11800
diff --git a/html/TagNames/Apple.html b/html/TagNames/Apple.html
index e27f08d6..4998381a 100644
--- a/html/TagNames/Apple.html
+++ b/html/TagNames/Apple.html
@@ -39,7 +39,7 @@ toward the bottom, and positive Z points into the face of the phone)</span></spa
<td><span class=s><span class=n>(unique ID for all images in a burst)</span></span></td></tr>
<tr>
<td title='0x0011 = 17'>0x0011</td>
-<td>ContentIdentifier</td>
+<td>MediaGroupUUID</td>
<td class=c>string</td>
<td>&nbsp;</td></tr>
<tr class=b>
@@ -86,7 +86,7 @@ boot, not including standby time.</p>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Dec 5, 2017</i>
+<br><i>Last revised Feb 18, 2021</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/EXIF.html b/html/TagNames/EXIF.html
index 9836ed30..f8af1ac1 100644
--- a/html/TagNames/EXIF.html
+++ b/html/TagNames/EXIF.html
@@ -843,7 +843,8 @@ OtherImageLength in everything else)</span></span></td></tr>
<td><span class=s>0 = Sony Uncompressed 14-bit RAW
<br>1 = Sony Uncompressed 12-bit RAW
<br>2 = Sony Compressed RAW
- <br>3 = Sony Lossless Compressed RAW</span></td></tr>
+ <br>3 = Sony Lossless Compressed RAW
+ <br>4 = Sony Lossless Compressed RAW 2</span></td></tr>
<tr>
<td title='0x7010 = 28688'>0x7010</td>
<td>SonyToneCurve</td>
@@ -858,6 +859,7 @@ OtherImageLength in everything else)</span></span></td></tr>
<td><span class=s><span class=n>(found in Sony ARW images)</span>
<br>256 = Off
<br>257 = Auto
+ <br>272 = Auto (ILCE-1)
<br>511 = No correction params available</span></td></tr>
<tr>
<td title='0x7032 = 28722'>0x7032</td>
@@ -3721,7 +3723,7 @@ these unless they already exist in the file)</span></span></td></tr>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 3, 2020</i>
+<br><i>Last revised Feb 18, 2021</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/FITS.html b/html/TagNames/FITS.html
index 382743b4..83383603 100644
--- a/html/TagNames/FITS.html
+++ b/html/TagNames/FITS.html
@@ -27,20 +27,30 @@ but ExifTool will extract any other tags found. See
<td class=c>no</td>
<td>&nbsp;</td></tr>
<tr>
+<td>'COMMENT'</td>
+<td>Comment</td>
+<td class=c>no</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
<td>'DATE'</td>
<td>CreateDate</td>
<td class=c>no</td>
<td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
<td>'DATE-END'</td>
<td>ObservationDateEnd</td>
<td class=c>no</td>
<td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
<td>'DATE-OBS'</td>
<td>ObservationDate</td>
<td class=c>no</td>
<td>&nbsp;</td></tr>
+<tr>
+<td>'HISTORY'</td>
+<td>History</td>
+<td class=c>no</td>
+<td>&nbsp;</td></tr>
<tr class=b>
<td>'INSTRUME'</td>
<td>Instrument</td>
@@ -80,7 +90,7 @@ but ExifTool will extract any other tags found. See
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Mar 7, 2019</i>
+<br><i>Last revised Feb 18, 2021</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/QuickTime.html b/html/TagNames/QuickTime.html
index a47fd2fd..cc5eeb01 100644
--- a/html/TagNames/QuickTime.html
+++ b/html/TagNames/QuickTime.html
@@ -25,11 +25,13 @@ possible, otherwise in
finally in <a href="QuickTime.html#Keys">Keys</a>,
but this order may be changed by setting the PREFERRED level of the
appropriate table in the config file (see
-<a href="../config.html#PREF">example.config</a> in the full distribution for
-an example). ExifTool currently writes only top-level metadata in
-QuickTime-based files; it extracts other track-specific and timed
-metadata, but can not yet edit tags in these locations (with the
-exception of track-level date/time tags).</p>
+<a href="../config.html#PREF">example.config</a> in the full distribution for an
+example). Note that some tags with the same name but different ID&#39;s may
+exist in the same location, but the family 7 group names may be used to
+differentiate these. ExifTool currently writes only top-level metadata in
+QuickTime-based files; it extracts other track-specific and timed metadata,
+but can not yet edit tags in these locations (with the exception of
+track-level date/time tags).</p>
<p>Alternate language tags may be accessed for
<a href="QuickTime.html#ItemList">ItemList</a> and
@@ -54,8 +56,8 @@ local time when extracting.</p>
<p>When writing string-based date/time tags, the system time zone is added if
the PrintConv option is enabled and no time zone is specified. This is
-because Apple software may display a crazy values if the time zone is
-missing for some tags.</p>
+because Apple software may display crazy values if the time zone is missing
+for some tags.</p>
<p>See
<a href="https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/">https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/</a>
@@ -1547,9 +1549,9 @@ this table support alternate languages which are accessed by adding a
3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
country code to the tag name (eg. &quot;ItemList:Title-fra&quot; or
&quot;ItemList::Title-fra-FR&quot;). When creating a new Meta box to contain the
-ItemList directory, by default ExifTool does not specify a
-<a href="QuickTime.html#Handler">Handler</a>, but the
-API <a href="../ExifTool.html#QuickTimeHandler">QuickTimeHandler</a> option may be used to include an &#39;mdir&#39; Handler box.</p>
+ItemList directory, by default ExifTool adds an &#39;mdir&#39; (Metadata) Handler
+box because Apple software may ignore ItemList tags otherwise, but the API
+<a href="../ExifTool.html#QuickTimeHandler">QuickTimeHandler</a> option may be set to 0 to avoid this.</p>
<blockquote>
<table class=frame><tr><td>
<table class=inner cellspacing=1>
@@ -8703,7 +8705,7 @@ yaw, pitch and roll angles in degrees)</span></span></td></tr>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Jan 21, 2021</i>
+<br><i>Last revised Feb 18, 2021</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Shortcuts.html b/html/TagNames/Shortcuts.html
index 2b901de7..7bdf049c 100644
--- a/html/TagNames/Shortcuts.html
+++ b/html/TagNames/Shortcuts.html
@@ -277,11 +277,24 @@ block or prevent it from being copied)</span></span></td></tr>
<td><span class=s><span class=n>(<i>Unsafe</i> tags in JPEG images which are normally not copied. Defined here
as a shortcut to use when rebuilding JPEG EXIF from scratch. See
<a href="../faq.html#Q20">FAQ number 20</a> for more information)</span></span></td></tr>
+<tr class=b>
+<td>ls-l</td>
+<td class=c>yes</td>
+<td class=n>FilePermissions
+ <br>FileHardLinks
+ <br>FileUserID
+ <br>FileGroupID
+ <br>FileSize#
+ <br>FileModifyDate
+ <br>FileName</td>
+<td><span class=s><span class=n>(mimics columns shown by Unix &quot;ls -l&quot; command. Includes some tags which are
+extracted only if the API <a href="../ExifTool.html#SystemTags">SystemTags</a> option
+is enabled)</span></span></td></tr>
</table></td></tr></table></blockquote>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Oct 22, 2019</i>
+<br><i>Last revised Feb 18, 2021</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/Sony.html b/html/TagNames/Sony.html
index 4242359b..9ae5fe0f 100644
--- a/html/TagNames/Sony.html
+++ b/html/TagNames/Sony.html
@@ -748,6 +748,7 @@ toward magenta)</span></span></td></tr>
<td class=c>int16u</td>
<td><span class=s>0 = Compressed RAW
<br>1 = Uncompressed RAW
+ <br>2 = Lossless Compressed RAW
<br>65535 = n/a</span></td></tr>
<tr>
<td title='0x202a = 8234'>0x202a</td>
@@ -4893,6 +4894,7 @@ multi-frame noise reduction)</span></span></td></tr>
</tr><tr><td>50522</td><td>= Sigma 105mm F2.8 DG DN MACRO | A</td>
</tr><tr><td>50523</td><td>= Sigma 65mm F2 DG DN | C</td>
</tr><tr><td>50524</td><td>= Sigma 35mm F2 DG DN | C</td>
+</tr><tr><td>50525</td><td>= Sigma 24mm F3.5 DG DN | C</td>
</tr><tr><td>50992</td><td>= Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III</td>
</tr><tr><td>50993</td><td>= Voigtlander HELIAR-HYPER WIDE 10mm F5.6</td>
</tr><tr><td>50994</td><td>= Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III</td>
@@ -11600,7 +11602,7 @@ some models when the <a href="../ExifTool.html#ExtractEmbedded">ExtractEmbedded<
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 9, 2021</i>
+<br><i>Last revised Feb 18, 2021</i>
<p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
</body>
</html>
diff --git a/html/TagNames/index.html b/html/TagNames/index.html
index f32a1dda..ed6a2d82 100644
--- a/html/TagNames/index.html
+++ b/html/TagNames/index.html
@@ -10,7 +10,7 @@
<h2 class=top>ExifTool Tag Names</h2>
<p>
The tables listed below give the names of all tags recognized by ExifTool.
-They contain a total of 24077 tags, with 15588 unique tag names.
+They contain a total of 24079 tags, with 15589 unique tag names.
</p>
<blockquote>
<table width='100%' class=frame><tr><td>
@@ -233,7 +233,7 @@ ExifTool. A big thanks to everyone who has helped with this so far!)</i>
<hr>
(This document generated automatically by Image::ExifTool::BuildTagLookup)
<br><i>Created Feb 15, 2005</i>
-<br><i>Last revised Feb 9, 2021</i>
+<br><i>Last revised Feb 18, 2021</i>
<p class=lf><a href='../index.html'>&lt;-- Back to ExifTool home page</a></p>
</body>
</html>
diff --git a/html/ancient_history.html b/html/ancient_history.html
index 85c6af6d..2c89557f 100644
--- a/html/ancient_history.html
+++ b/html/ancient_history.html
@@ -13,6 +13,186 @@
<p><b>Note:</b> This page gives the history of older exiftool versions. See
<a href="history.html">history.html</a> for the recent history.</p>
+<a name='v11.99'><b>May 11, 2020 - Version 11.99</b></a>
+<ul>
+<li>Added a new Nikon LensID (thanks Mykyta Kozlov)
+<li>Added a new Canon LensType
+<li>Added a newn PentaxModelID
+<li>Decode a few new QuickTime tags
+<li>Decode new ID3 Grouping tag
+<li>Decode a few more MinoltaRaw tags (thanks LibRaw)
+<li>Fixed runtime warning which could occur when reading corrupted RTF files
+<li>Fixed another potential pitfall in M2TS Duration calculation
+<li>Fixed problem extracting some unknown QuickTime:Keys tags
+<li>Fixed problem decoding Nikon D850 orientation tags
+<li>Fixed bug where TIFF image data may not be padded to an even number of bytes
+</ul>
+
+<a name='v11.98'><b>May 1, 2020 - Version 11.98</b></a>
+<ul>
+<li>Added a new Nikon LensID (thanks Warren Hatch)
+<li>Added a new Sony LensType (thanks LibRaw)
+<li>Added a new Canon LensType
+<li>Patched to extract EXIF with an "Exif\0\0" header from WebP images
+<li>Enhanced -efile option and added to the documentation
+<li>Minor tweak to -htmlDump output (disallow locking of empty selection)
+<li>Fixed problem determining Duration of some M2TS videos
+</ul>
+
+<a name='v11.97'><b>Apr. 27, 2020 - Version 11.97</b></a>
+<ul>
+<li>Added experimental -efile option (undocumented)
+<li>Decode NMEA GGA sentence from streaming GPS of some dashcam videos
+</ul>
+
+<a name='v11.96'><b>Apr. 24, 2020 - Version 11.96</b></a>
+<ul>
+<li>Decode streaming GPS from Lucas LK-7900 Ace AVI videos
+<li>Changed new Exit/ExitDir function names to End/EndDir
+<li>Fixed inconsistencies when using "-use mwg" together with the -wm option
+</ul>
+
+<a name='v11.95'><b>Apr. 23, 2020 - Version 11.95</b></a>
+<ul>
+<li>Added Exit() and ExitDir() functions for use in -if conditions (NOTE: these
+ function names changed to End() and EndDir() in ExifTool 11.96)
+<li>Enhanced -geotag feature to support a more flexible input CSV file format
+<li>Enhanced -if and <a href="ExifTool.html#Filter">API Filter</a> options to allow access to ExifTool object via
+ $self
+<li>Fixed problem reading HEIC Exif with a missing header
+</ul>
+
+<a name='v11.94'><b>Apr. 17, 2020 - Version 11.94</b></a>
+<ul>
+<li>Added support for QuickTime ItemList:GPSCoordinates
+<li>Added additional Validate test for overlapping EXIF values
+<li>Added a new Sony LensType (thanks Jos Roost)
+<li>Added a new Nikon LensID
+<li>Decode a few more Nikon tags (thanks Warren Hatch)
+<li>Decode Pentax ShutterType
+<li>Changed color of locked highlighted selection in <a href="htmldump.html">-htmlDump output</a>
+<li>Fixed problem reading PDF files written by Microsoft Print-to-PDF
+<li>Fixed problem where -X output would produce invalid XML for MP4 files
+ containing an HTCTrack
+</ul>
+
+<a name='v11.93'><b>Apr. 3, 2020 - Version 11.93</b></a>
+<ul>
+<li>Added new config file to the distribution for writing Pix4D XMP-Camera tags
+ (config_files/pix4d.config)
+<li>Added support for the DOSCyrillic (cp866) character set
+<li>Added IO::String to the Windows EXE version
+<li>Improved identification of Canon RF lenses (thanks LibRaw)
+<li>Enhanced -htmlDump output to add "File offset" entry for EXIF tags and
+ ability lock highlighted selection by clicking the mouse
+<li>Enhanced -srcfile option to generate OriginalFileName and OriginalDirectory
+ UserParam tags
+<li>Patched HEIC writer to add missing pitm box if necessary
+<li>Fixed problem adding back EXIF after deleting it from HEIC file
+<li>Fixed minor problem with incorrect number of bytes being reported for
+ invalid header in corrupt files
+<li>API Changes:
+ <ul>
+ <li>Enhanced UserParam option to allow parameters to be extracted as if
+ they were normal tags
+ </ul>
+</ul>
+
+<a name='v11.92'><b>Mar. 19, 2020 - Version 11.92</b></a>
+<ul>
+<li>Added a new Nikon LensID (thanks Wolfgang Exler)
+<li>Decode a few new Leica tags (thanks Tim Gray)
+<li>Decode AccelerometerData from Samsung Gear 360 videos
+<li>Fixed a couple of problems decoding timed GPS metadata from NextBase dashcam
+ videos
+<li>Fixed problem where -X option could produce invalid XML when reading
+ corrupted XMP
+</ul>
+
+<a name='v11.91'><b>Mar. 5, 2020 - Version 11.91</b></a>
+<ul>
+<li>Decode a couple of new Panasonic tags
+<li>Documented -ec option (available since version 11.54)
+<li>Reverted -htmlDump fix of 11.90 because it broke more than it fixed, and
+ instead applied a targeted patch to fix this problem for RW2 files
+</ul>
+
+<a name='v11.90'><b>Mar. 3, 2020 - Version 11.90</b></a>
+<ul>
+<li>Added a new Sony LensType (thanks LibRaw and Jos Roost)
+<li>Added two new Olympus LensType values
+<li>Added a new Canon LensType
+<li>Added some new Canon RecordMode values
+<li>Added some new QuickTime GeneralProfileIDC values
+<li>Added new values for a couple of FujiFilm tags
+<li>Added a number of new QuickTime GenreID values
+<li>Decode Nikon Z6/Z7 phase-detect AF points (thanks Andy Dragon)
+<li>Patched to avoid possible "Undefined subroutine" error in MacOS 10.15
+<li>Fixed incorrect offsets in -htmlDump output for some file types
+</ul>
+
+<a name='v11.89'><b>Feb. 25, 2020 - Version 11.89</b></a>
+<ul>
+<li>Added support for Exif 2.32 for XMP
+<li>Recognize the HIF file extension
+<li>Improved verbose output for QuickTime iref items
+<li>Patched to create new GPS metadata in Canon CR3 images using a default byte
+ order that is the same as existing EXIF boxes
+<li>Patched to add missing newline that could occur in XMP with the API <a href="ExifTool.html#Compact">Compact</a>
+ Shorthand option
+</ul>
+
+<a name='v11.88'><b>Feb. 20, 2020 - Version 11.88</b></a>
+<ul>
+<li>Added write support for new <a href="TagNames/XMP.html#Device">Google depth-map XMP tags</a>
+<li>Added config_files/depthmap.config to the distribution
+<li>Added minor error when attempting to write FFF images due to incompatibility
+ with Hasselblad Phocus software
+<li>Patched to avoid "Invalid iloc offset size" error when writing some
+ QuickTime-based files
+<li>Fixed incorrect ColumnCount for CSV files
+<li>Fixed various spelling errors (thanks Jens Schleusener)
+<li>Fixed bug writing QuickTime:Rotation in HEIC files
+</ul>
+
+<a name='v11.87'><b>Feb. 13, 2020 - Version 11.87</b></a>
+<ul>
+<li>Added read support for CSV files
+<li>Added "--" option to indicate the end of options
+<li>Added ability to read/write/copy/delete the JPEG trailer as a block
+<li>Added new Olympus CameraType and LensType values (thanks LibRaw)
+<li>Decode a few more FujiFilm tags
+<li>Enhanced -fast option (API <a href="ExifTool.html#FastScan">FastScan</a>) to bypass PNG CRC validation when
+ writing
+</ul>
+
+<a name='v11.86'><b>Feb. 4, 2020 - Version 11.86</b></a>
+<ul>
+<li>Added support for DNG version 1.5
+<li>Added config_files/acdsee.config to the full distribution (thanks StarGeek)
+<li>Added a new Sony LensType (thanks Jos Roost and LibRaw)
+<li>Decode two more bits from Nikon LensType (thanks LibRaw)
+<li>Decode QuickTime MovieFragmentSequence
+<li>Patched HEIC writer to add missing iref box if necessary
+<li>Fixed typo in a Canon LensType value
+<li>API Changes:
+ <ul>
+ <li>Patched ImageInfo() to recognize a stringified object as a file name
+ </ul>
+</ul>
+
+<a name='v11.85'><b>Jan. 28, 2020 - Version 11.85</b></a> <span class=grn>(production release)</span>
+<ul>
+<li>Added a new Sony LensType (thanks Jos Roost)
+<li>Added a new Olympus CameraType (thanks LibRaw)
+<li>Added a two new Pentax LensType values
+<li>Added a new FujiFilm FocusMode
+<li>Decode timed GPS from Akaso dashcam MOV videos
+<li>Decode Insta360 trailer from INSP images and made Insta360 a deletable group
+<li>Patched kml.fmt file to limit maximum image size (thanks Fedor Kotov)
+<li>Fixed problem decoding values from Leica M10 and S maker notes
+</ul>
+
<a name='v11.84'><b>Jan. 10, 2020 - Version 11.84</b></a>
<ul>
<li>Decode accelerometer data from timed metadata of more dashcam videos
diff --git a/html/exiftool_pod.html b/html/exiftool_pod.html
index 666bcb31..21d836bb 100644
--- a/html/exiftool_pod.html
+++ b/html/exiftool_pod.html
@@ -267,6 +267,7 @@
-echo[NUM] TEXT Echo text to stdout or stderr
-efile[NUM][!] ERRFILE Save names of files with errors
-execute[NUM] Execute multiple commands on one line
+ -list_dir List directories, not their contents
-srcfile FMT Process a different source file
-stay_open FLAG Keep reading -@ argfile even after EOF
-userParam PARAM[[^]=[VAL]] Set user parameter (API UserParam opt)</code></pre>
@@ -682,7 +683,7 @@
<p>produces output like this:</p>
-<pre><code> -- Generated by ExifTool 12.18 --
+<pre><code> -- Generated by ExifTool 12.19 --
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
@@ -1291,6 +1292,16 @@
<p>Execute command for all arguments up to this point on the command line (plus any arguments specified by <b>-common_args</b>). The result is as if the commands were executed as separate command lines (with the exception of the <b>-config</b> and <b>-use</b> options which remain in effect for subsequent commands). Allows multiple commands to be executed from a single command line. <i>NUM</i> is an optional number that is echoed in the &quot;{ready}&quot; message when using the <b>-stay_open</b> feature. If a <i>NUM</i> is specified, the <b>-q</b> option no longer suppresses the output &quot;{readyNUM}&quot; message.</p>
</dd>
+<dt id="list_dir"><b>-list_dir</b></dt>
+<dd>
+
+<p>List directories themselves instead of their contents. This option effectively causes directories to be treated as normal files when reading and writing. For example, with this option the output of the <code>ls -la</code> command on Mac/Linux may be approximated by this exiftool command:</p>
+
+<pre><code> exiftool -list_dir -T -ls-l -api systemtags -fast5 .* *</code></pre>
+
+<p>(The <b>-T</b> option formats the output in tab-separated columns, <b>-ls-l</b> is a <a>shortcut tag</a>, the API SystemTags option is required to extract some necessary tags, and the <b>-fast5</b> option is added for speed since only system tags are being extracted.)</p>
+
+</dd>
<dt id="srcfile-FMT"><b>-srcfile</b> <i>FMT</i></dt>
<dd>
diff --git a/html/exiftool_pod.pdf b/html/exiftool_pod.pdf
index 55463791..5c51e14c 100644
--- a/html/exiftool_pod.pdf
+++ b/html/exiftool_pod.pdf
@@ -12,7 +12,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 1)Tj
+( -- ExifTool 12.19 -- 1)Tj
/TT4 1 Tf
0 -1.6333 TD
(EXIFTOOL\(1\) User Contributed Perl Documentation EXIFTOOL\(1\))Tj
@@ -637,7 +637,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 2)Tj
+( -- ExifTool 12.19 -- 2)Tj
/TT4 1 Tf
0 -1.6333 TD
( AVIF r/w | FITS r | MEF r/w | PEF r/w | TORRENT r)Tj
@@ -834,7 +834,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 3)Tj
+( -- ExifTool 12.19 -- 3)Tj
/TT4 1 Tf
0 -1.6333 TD
( -charset [[TYPE=]CHARSET] Specify encoding for special characters)Tj
@@ -981,7 +981,7 @@ endobj
endobj
15 0 obj
<<
-/Length 6113
+/Length 5919
>>
stream
BT
@@ -991,7 +991,7 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 4)Tj
+( -- ExifTool 12.19 -- 4)Tj
/TT4 1 Tf
0 -1.6333 TD
( -globalTimeShift SHIFT Shift all formatted date/time values)Tj
@@ -1018,6 +1018,8 @@ T*
T*
( -execute[NUM] Execute multiple commands on one line)Tj
T*
+( -list_dir List directories, not their contents)Tj
+T*
( -srcfile FMT Process a different source file)Tj
T*
( -stay_open FLAG Keep reading -@ argfile even after EOF)Tj
@@ -1253,34 +1255,6 @@ T*
( from a group delete \(unless a family 2 group is specified, see)Tj
T*
( note 4 below\). Instead, individual tags may be recovered using)Tj
-T*
-( the -)Tj
-9.6 0 TD
-(-t)Tj
-0.6 0 TD
-(ta)Tj
-0.6 0 TD
-(ag)Tj
-0.6 0 TD
-(gs)Tj
-0.6 0 TD
-(sF)Tj
-0.6 0 TD
-(Fr)Tj
-0.6 0 TD
-(ro)Tj
-0.6 0 TD
-(om)Tj
-0.6 0 TD
-(mF)Tj
-0.6 0 TD
-(Fi)Tj
-0.6 0 TD
-(il)Tj
-0.6 0 TD
-(le)Tj
-0.6 0 TD
-(e option \(eg. "-all= -tagsfromfile @ -artist"\).)Tj
ET
endstream
endobj
@@ -1298,7 +1272,7 @@ endobj
endobj
18 0 obj
<<
-/Length 6203
+/Length 6412
>>
stream
BT
@@ -1308,9 +1282,37 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 5)Tj
+( -- ExifTool 12.19 -- 5)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( the -)Tj
+9.6 0 TD
+(-t)Tj
+0.6 0 TD
+(ta)Tj
+0.6 0 TD
+(ag)Tj
+0.6 0 TD
+(gs)Tj
+0.6 0 TD
+(sF)Tj
+0.6 0 TD
+(Fr)Tj
+0.6 0 TD
+(ro)Tj
+0.6 0 TD
+(om)Tj
+0.6 0 TD
+(mF)Tj
+0.6 0 TD
+(Fi)Tj
+0.6 0 TD
+(il)Tj
+0.6 0 TD
+(le)Tj
+0.6 0 TD
+(e option \(eg. "-all= -tagsfromfile @ -artist"\).)Tj
+-16.8 -2.2 TD
( -)Tj
4.2 0 TD
(-_)Tj
@@ -1586,8 +1588,6 @@ T*
( and in this case is it possible to exclude individual tags from a)Tj
T*
( mass delete. For example, "-time:all --Exif:Time:All" removes all)Tj
-T*
-( deletable Time tags except those in the EXIF. This difference)Tj
ET
endstream
endobj
@@ -1605,7 +1605,7 @@ endobj
endobj
21 0 obj
<<
-/Length 7366
+/Length 7355
>>
stream
BT
@@ -1615,11 +1615,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 6)Tj
+( -- ExifTool 12.19 -- 6)Tj
/TT4 1 Tf
0 -1.6333 TD
-( also applies if family 2 is specified when deleting all groups.)Tj
+( deletable Time tags except those in the EXIF. This difference)Tj
0 -1.1 TD
+( also applies if family 2 is specified when deleting all groups.)Tj
+T*
( For example, "-2all:all=" deletes tags individually, while)Tj
T*
( "-all:all=" deletes entire blocks.)Tj
@@ -2023,8 +2025,6 @@ T*
(T string examples.)Tj
-8.4 -2.2 TD
( A powerful redirection feature allows a destination tag to be)Tj
-0 -1.1 TD
-( specified for each copied tag. With this feature, information may)Tj
ET
endstream
endobj
@@ -2042,7 +2042,7 @@ endobj
endobj
24 0 obj
<<
-/Length 7677
+/Length 7680
>>
stream
BT
@@ -2052,11 +2052,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 7)Tj
+( -- ExifTool 12.19 -- 7)Tj
/TT4 1 Tf
0 -1.6333 TD
-( be written to a tag with a different name or group. This is done)Tj
+( specified for each copied tag. With this feature, information may)Tj
0 -1.1 TD
+( be written to a tag with a different name or group. This is done)Tj
+T*
( using "'-_)Tj
12.6 0 TD
(D_)Tj
@@ -2510,8 +2512,6 @@ T*
( because each copy operation on a tag overrides any previous)Tj
T*
( operations. While this avoids duplicate list items when copying)Tj
-T*
-( groups of tags from a file containing redundant information, it)Tj
ET
endstream
endobj
@@ -2529,7 +2529,7 @@ endobj
endobj
27 0 obj
<<
-/Length 7247
+/Length 7250
>>
stream
BT
@@ -2539,11 +2539,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 8)Tj
+( -- ExifTool 12.19 -- 8)Tj
/TT4 1 Tf
0 -1.6333 TD
-( also prevents values of different tags from being copied into the)Tj
+( groups of tags from a file containing redundant information, it)Tj
0 -1.1 TD
+( also prevents values of different tags from being copied into the)Tj
+T*
( same list when this is the intent. So a -)Tj
31.8 0 TD
(-a)Tj
@@ -2993,8 +2995,6 @@ T*
( Note: Be careful when copying information with this technique)Tj
0 -1.1 TD
( since it is easy to write tags which are normally considered)Tj
-T*
-( "unsafe". For instance, the FileName and Directory tags are)Tj
ET
endstream
endobj
@@ -3012,7 +3012,7 @@ endobj
endobj
30 0 obj
<<
-/Length 6326
+/Length 6341
>>
stream
BT
@@ -3022,11 +3022,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 9)Tj
+( -- ExifTool 12.19 -- 9)Tj
/TT4 1 Tf
0 -1.6333 TD
-( excluded in the example above to avoid renaming and moving the)Tj
+( "unsafe". For instance, the FileName and Directory tags are)Tj
0 -1.1 TD
+( excluded in the example above to avoid renaming and moving the)Tj
+T*
( destination file. Also note that the second command above will)Tj
T*
( produce warning messages for any tags which are not writable.)Tj
@@ -3338,8 +3340,6 @@ T*
( DOSLatinUS cp437 DOS Latin US)Tj
T*
( DOSLatin1 cp850 DOS Latin1)Tj
-T*
-( DOSCyrillic cp866 DOS Cyrillic)Tj
ET
endstream
endobj
@@ -3357,7 +3357,7 @@ endobj
endobj
33 0 obj
<<
-/Length 6205
+/Length 6186
>>
stream
BT
@@ -3367,11 +3367,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 10)Tj
+( -- ExifTool 12.19 -- 10)Tj
/TT4 1 Tf
0 -1.6333 TD
-( MacRoman cp10000, Roman Macintosh Roman)Tj
+( DOSCyrillic cp866 DOS Cyrillic)Tj
0 -1.1 TD
+( MacRoman cp10000, Roman Macintosh Roman)Tj
+T*
( MacLatin2 cp10029 Macintosh Latin2 \(Central Europe\))Tj
T*
( MacCyrillic cp10007 Macintosh Cyrillic)Tj
@@ -3633,8 +3635,6 @@ T*
(b option may be added to)Tj
-32.4 -1.1 TD
( output binary data, encoded in base64 if necessary \(indicated by)Tj
-T*
-( ASCII "base64:" as the first 7 bytes of the value\). Values may)Tj
ET
endstream
endobj
@@ -3652,7 +3652,7 @@ endobj
endobj
36 0 obj
<<
-/Length 7527
+/Length 7579
>>
stream
BT
@@ -3662,9 +3662,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 11)Tj
+( -- ExifTool 12.19 -- 11)Tj
/TT4 1 Tf
0 -1.6333 TD
+( ASCII "base64:" as the first 7 bytes of the value\). Values may)Tj
+0 -1.1 TD
( also be encoded in base64 if the -)Tj
27 0 TD
(-c)Tj
@@ -4130,8 +4132,6 @@ T*
(L_)Tj
0.6 0 TD
(E)Tj
--45.6 -1.1 TD
-( feature.)Tj
ET
endstream
endobj
@@ -4149,7 +4149,7 @@ endobj
endobj
41 0 obj
<<
-/Length 8815
+/Length 8647
>>
stream
BT
@@ -4159,9 +4159,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 12)Tj
+( -- ExifTool 12.19 -- 12)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( feature.)Tj
+0 -2.2 TD
( -)Tj
4.2 0 TD
(-g)Tj
@@ -4731,24 +4733,6 @@ T*
( UTF-8 validation is disabled if a character set other than UTF-8)Tj
T*
( is specified.)Tj
-0 -2.2 TD
-( If _)Tj
-9 0 TD
-(J_)Tj
-0.6 0 TD
-(S_)Tj
-0.6 0 TD
-(O_)Tj
-0.6 0 TD
-(N_)Tj
-0.6 0 TD
-(F_)Tj
-0.6 0 TD
-(I_)Tj
-0.6 0 TD
-(L_)Tj
-0.6 0 TD
-(E is specified, the file is imported and the tag)Tj
ET
endstream
endobj
@@ -4766,7 +4750,7 @@ endobj
endobj
44 0 obj
<<
-/Length 6100
+/Length 6226
>>
stream
BT
@@ -4776,11 +4760,29 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 13)Tj
+( -- ExifTool 12.19 -- 13)Tj
/TT4 1 Tf
0 -1.6333 TD
+( If _)Tj
+9 0 TD
+(J_)Tj
+0.6 0 TD
+(S_)Tj
+0.6 0 TD
+(O_)Tj
+0.6 0 TD
+(N_)Tj
+0.6 0 TD
+(F_)Tj
+0.6 0 TD
+(I_)Tj
+0.6 0 TD
+(L_)Tj
+0.6 0 TD
+(E is specified, the file is imported and the tag)Tj
+-13.2 -1.1 TD
( definitions from the file are used to set tag values on a per-file)Tj
-0 -1.1 TD
+T*
( basis. The special "SourceFile" entry in each JSON object)Tj
T*
( associates the information with a specific target file. An object)Tj
@@ -5100,8 +5102,6 @@ T*
( require Image::ExifTool::TagInfoXML;)Tj
T*
( my $file = shift or die "Expected XML file name\\n";)Tj
-T*
-( $Image::ExifTool::TagInfoXML::makeMissing = shift;)Tj
ET
endstream
endobj
@@ -5129,9 +5129,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 14)Tj
+( -- ExifTool 12.19 -- 14)Tj
/TT4 1 Tf
0 -1.6333 TD
+( $Image::ExifTool::TagInfoXML::makeMissing = shift;)Tj
+0 -1.1 TD
( Image::ExifTool::TagInfoXML::BuildLangModules\($file,8\);)Tj
0 -2.2 TD
( 5. Run the 'import.pl' script to Import the XML file, generating)Tj
@@ -5367,8 +5369,6 @@ T*
( contains $directory\). Lines beginning with "#[BODY]" and lines)Tj
T*
( not beginning with "#" are output for each processed file. Lines)Tj
-T*
-( beginning with "#[IF]" are not output, but all BODY lines are)Tj
ET
endstream
endobj
@@ -5386,7 +5386,7 @@ endobj
endobj
50 0 obj
<<
-/Length 6149
+/Length 6151
>>
stream
BT
@@ -5396,11 +5396,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 15)Tj
+( -- ExifTool 12.19 -- 15)Tj
/TT4 1 Tf
0 -1.6333 TD
-( skipped if any tag on an IF line doesn't exist. Other lines)Tj
+( beginning with "#[IF]" are not output, but all BODY lines are)Tj
0 -1.1 TD
+( skipped if any tag on an IF line doesn't exist. Other lines)Tj
+T*
( beginning with "#" are ignored. For example, this format file:)Tj
0 -2.2 TD
( # this is a comment line)Tj
@@ -5419,7 +5421,7 @@ T*
T*
( produces output like this:)Tj
T*
-( -- Generated by ExifTool 12.18 --)Tj
+( -- Generated by ExifTool 12.19 --)Tj
0 -1.1 TD
( File: a.jpg - 2003:10:31 15:44:19)Tj
T*
@@ -5778,8 +5780,6 @@ T*
(r\))Tj
-15.6 -1.1 TD
( Specify separator string for items in list-type tags. When)Tj
-T*
-( reading, the default is to join list items with ", ". When)Tj
ET
endstream
endobj
@@ -5797,7 +5797,7 @@ endobj
endobj
53 0 obj
<<
-/Length 8030
+/Length 8023
>>
stream
BT
@@ -5807,11 +5807,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 16)Tj
+( -- ExifTool 12.19 -- 16)Tj
/TT4 1 Tf
0 -1.6333 TD
-( writing, this option causes values assigned to list-type tags to)Tj
+( reading, the default is to join list items with ", ". When)Tj
0 -1.1 TD
+( writing, this option causes values assigned to list-type tags to)Tj
+T*
( be split into individual items at each substring matching _)Tj
42 0 TD
(S_)Tj
@@ -6301,8 +6303,6 @@ T*
(T string may be used to)Tj
-32.4 -1.1 TD
( give more control over the output file name and directory. In the)Tj
-T*
-( format string, %d, %f and %e represent the directory, filename and)Tj
ET
endstream
endobj
@@ -6320,7 +6320,7 @@ endobj
endobj
56 0 obj
<<
-/Length 4904
+/Length 4990
>>
stream
BT
@@ -6330,11 +6330,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 17)Tj
+( -- ExifTool 12.19 -- 17)Tj
/TT4 1 Tf
0 -1.6333 TD
-( extension of the source file, and %c represents a copy number)Tj
+( format string, %d, %f and %e represent the directory, filename and)Tj
0 -1.1 TD
+( extension of the source file, and %c represents a copy number)Tj
+T*
( which is automatically incremented if the file already exists. %d)Tj
T*
( includes the trailing '/' if necessary, but %e does not include)Tj
@@ -6537,7 +6539,7 @@ endobj
endobj
59 0 obj
<<
-/Length 5719
+/Length 5657
>>
stream
BT
@@ -6547,9 +6549,9 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 18)Tj
+( -- ExifTool 12.19 -- 18)Tj
/TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
( Source Dir Format Result Notes)Tj
0 -1.1 TD
( ------------ ------ ---------- ------------------)Tj
@@ -6751,8 +6753,6 @@ T*
( number \(eg. %g1\), otherwise family 0 is assumed. The substring)Tj
T*
( width/position/case specifiers may be used with these format codes)Tj
-T*
-( in exactly the same way as with %f and %e.)Tj
ET
endstream
endobj
@@ -6770,7 +6770,7 @@ endobj
endobj
62 0 obj
<<
-/Length 8265
+/Length 8243
>>
stream
BT
@@ -6780,9 +6780,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 19)Tj
+( -- ExifTool 12.19 -- 19)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( in exactly the same way as with %f and %e.)Tj
+0 -2.2 TD
( 3\) The argument for -)Tj
19.2 0 TD
(-W)Tj
@@ -7334,8 +7336,6 @@ T*
(-X)Tj
0.6 0 TD
(X options are used or the Duplicates option is enabled in)Tj
--12 -1.1 TD
-( the configuration file. This option has an affect when writing)Tj
ET
endstream
endobj
@@ -7353,7 +7353,7 @@ endobj
endobj
65 0 obj
<<
-/Length 6949
+/Length 7031
>>
stream
BT
@@ -7363,11 +7363,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 20)Tj
+( -- ExifTool 12.19 -- 20)Tj
/TT4 1 Tf
0 -1.6333 TD
-( only to allow duplicate Warning messages to be shown. Duplicate)Tj
+( the configuration file. This option has an affect when writing)Tj
0 -1.1 TD
+( only to allow duplicate Warning messages to be shown. Duplicate)Tj
+T*
( tags are always extracted when copying.)Tj
0 -2.2 TD
( -)Tj
@@ -7788,9 +7790,9 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 21)Tj
+( -- ExifTool 12.19 -- 21)Tj
/TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
( -)Tj
4.2 0 TD
(-f)Tj
@@ -8339,7 +8341,7 @@ endobj
endobj
72 0 obj
<<
-/Length 6067
+/Length 5984
>>
stream
BT
@@ -8349,9 +8351,9 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 22)Tj
+( -- ExifTool 12.19 -- 22)Tj
/TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
( # extract shutterspeed from all Canon images in a directory)Tj
0 -1.1 TD
( exiftool -shutterspeed -if '$make eq "Canon"' dir)Tj
@@ -8631,8 +8633,6 @@ T*
( up to you to make the final decision. Minor errors and warnings)Tj
T*
( are indicated by "[minor]" at the start of the message. Warnings)Tj
-T*
-( which affect processing when ignored are indicated by "[Minor]")Tj
ET
endstream
endobj
@@ -8650,7 +8650,7 @@ endobj
endobj
75 0 obj
<<
-/Length 8390
+/Length 8270
>>
stream
BT
@@ -8660,11 +8660,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 23)Tj
+( -- ExifTool 12.19 -- 23)Tj
/TT4 1 Tf
0 -1.6333 TD
-( \(with a capital "M"\). Note that this causes missing values in)Tj
+( which affect processing when ignored are indicated by "[Minor]")Tj
0 -1.1 TD
+( \(with a capital "M"\). Note that this causes missing values in)Tj
+T*
( -)Tj
7.2 0 TD
(-t)Tj
@@ -9220,30 +9222,6 @@ T*
(l option when also writing the FileName and/or)Tj
-18 -1.1 TD
( Directory tags.)Tj
-0 -2.2 TD
-( -)Tj
-4.2 0 TD
-(-P)Tj
-0.6 0 TD
-(P \(-)Tj
-1.8 0 TD
-(-p)Tj
-0.6 0 TD
-(pr)Tj
-0.6 0 TD
-(re)Tj
-0.6 0 TD
-(es)Tj
-0.6 0 TD
-(se)Tj
-0.6 0 TD
-(er)Tj
-0.6 0 TD
-(rv)Tj
-0.6 0 TD
-(ve)Tj
-0.6 0 TD
-(e\))Tj
ET
endstream
endobj
@@ -9261,7 +9239,7 @@ endobj
endobj
78 0 obj
<<
-/Length 7903
+/Length 7900
>>
stream
BT
@@ -9271,11 +9249,35 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 24)Tj
+( -- ExifTool 12.19 -- 24)Tj
/TT4 1 Tf
0 -1.6333 TD
+( -)Tj
+4.2 0 TD
+(-P)Tj
+0.6 0 TD
+(P \(-)Tj
+1.8 0 TD
+(-p)Tj
+0.6 0 TD
+(pr)Tj
+0.6 0 TD
+(re)Tj
+0.6 0 TD
+(es)Tj
+0.6 0 TD
+(se)Tj
+0.6 0 TD
+(er)Tj
+0.6 0 TD
+(rv)Tj
+0.6 0 TD
+(ve)Tj
+0.6 0 TD
+(e\))Tj
+-11.4 -1.1 TD
( Preserve the filesystem modification date/time \("FileModifyDate"\))Tj
-0 -1.1 TD
+T*
( of the original file when writing. Note that some filesystems)Tj
T*
( store a creation date \(ie. "FileCreateDate" on Windows and Mac)Tj
@@ -9759,30 +9761,6 @@ T*
( \(such as XMP\), since unknown tags are extracted automatically from)Tj
T*
( these formats.)Tj
-0 -2.2 TD
-( -)Tj
-4.2 0 TD
-(-U)Tj
-0.6 0 TD
-(U \(-)Tj
-1.8 0 TD
-(-u)Tj
-0.6 0 TD
-(un)Tj
-0.6 0 TD
-(nk)Tj
-0.6 0 TD
-(kn)Tj
-0.6 0 TD
-(no)Tj
-0.6 0 TD
-(ow)Tj
-0.6 0 TD
-(wn)Tj
-0.6 0 TD
-(n2)Tj
-0.6 0 TD
-(2\))Tj
ET
endstream
endobj
@@ -9800,7 +9778,7 @@ endobj
endobj
81 0 obj
<<
-/Length 7174
+/Length 7187
>>
stream
BT
@@ -9810,11 +9788,35 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 25)Tj
+( -- ExifTool 12.19 -- 25)Tj
/TT4 1 Tf
0 -1.6333 TD
+( -)Tj
+4.2 0 TD
+(-U)Tj
+0.6 0 TD
+(U \(-)Tj
+1.8 0 TD
+(-u)Tj
+0.6 0 TD
+(un)Tj
+0.6 0 TD
+(nk)Tj
+0.6 0 TD
+(kn)Tj
+0.6 0 TD
+(no)Tj
+0.6 0 TD
+(ow)Tj
+0.6 0 TD
+(wn)Tj
+0.6 0 TD
+(n2)Tj
+0.6 0 TD
+(2\))Tj
+-11.4 -1.1 TD
( Extract values of unknown tags as well as unknown information from)Tj
-0 -1.1 TD
+T*
( some binary data blocks. This is the same as two -)Tj
37.2 0 TD
(-u)Tj
@@ -10276,20 +10278,6 @@ T*
(tf)Tj
0.6 0 TD
(f\), all)Tj
--38.4 -1.1 TD
-( recognized file extensions \(-)Tj
-24 0 TD
-(-l)Tj
-0.6 0 TD
-(li)Tj
-0.6 0 TD
-(is)Tj
-0.6 0 TD
-(st)Tj
-0.6 0 TD
-(tr)Tj
-0.6 0 TD
-(r\), all writable file extensions)Tj
ET
endstream
endobj
@@ -10307,7 +10295,7 @@ endobj
endobj
84 0 obj
<<
-/Length 7497
+/Length 7599
>>
stream
BT
@@ -10317,9 +10305,23 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 26)Tj
+( -- ExifTool 12.19 -- 26)Tj
/TT4 1 Tf
0 -1.6333 TD
+( recognized file extensions \(-)Tj
+24 0 TD
+(-l)Tj
+0.6 0 TD
+(li)Tj
+0.6 0 TD
+(is)Tj
+0.6 0 TD
+(st)Tj
+0.6 0 TD
+(tr)Tj
+0.6 0 TD
+(r\), all writable file extensions)Tj
+-27 -1.1 TD
( \(-)Tj
7.8 0 TD
(-l)Tj
@@ -10747,8 +10749,6 @@ T*
( GPSImgDirection, GPSImgDirectionRef, GPSPitch, GPSRoll,)Tj
T*
( AmbientTemperature and CameraElevationAngle. By default, tags are)Tj
-T*
-( created in EXIF, and updated in XMP only if they already exist.)Tj
ET
endstream
endobj
@@ -10766,7 +10766,7 @@ endobj
endobj
87 0 obj
<<
-/Length 6628
+/Length 6626
>>
stream
BT
@@ -10776,11 +10776,13 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 27)Tj
+( -- ExifTool 12.19 -- 27)Tj
/TT4 1 Tf
0 -1.6333 TD
-( However, "EXIF:Geotime" or "XMP:Geotime" may be specified to write)Tj
+( created in EXIF, and updated in XMP only if they already exist.)Tj
0 -1.1 TD
+( However, "EXIF:Geotime" or "XMP:Geotime" may be specified to write)Tj
+T*
( only EXIF or XMP tags respectively. Note that GPSPitch and)Tj
T*
( GPSRoll are non-standard, and require user-defined tags in order)Tj
@@ -11164,8 +11166,6 @@ T*
( specified files from their original copies by renaming the)Tj
T*
( "_original" files to replace the edited versions. For example,)Tj
-T*
-( the following command restores the originals of all JPG images in)Tj
ET
endstream
endobj
@@ -11183,7 +11183,7 @@ endobj
endobj
90 0 obj
<<
-/Length 9203
+/Length 9091
>>
stream
BT
@@ -11193,9 +11193,11 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 28)Tj
+( -- ExifTool 12.19 -- 28)Tj
/TT4 1 Tf
0 -1.6333 TD
+( the following command restores the originals of all JPG images in)Tj
+0 -1.1 TD
( directory "DIR":)Tj
0 -2.2 TD
( exiftool -restore_original -ext jpg DIR)Tj
@@ -11875,30 +11877,6 @@ T*
(le)Tj
0.6 0 TD
(e option if applicable.)Tj
--24.6 -2.2 TD
-( -)Tj
-4.2 0 TD
-(-e)Tj
-0.6 0 TD
-(ex)Tj
-0.6 0 TD
-(xe)Tj
-0.6 0 TD
-(ec)Tj
-0.6 0 TD
-(cu)Tj
-0.6 0 TD
-(ut)Tj
-0.6 0 TD
-(te)Tj
-0.6 0 TD
-(e[_)Tj
-1.2 0 TD
-(N_)Tj
-0.6 0 TD
-(U_)Tj
-0.6 0 TD
-(M])Tj
ET
endstream
endobj
@@ -11916,7 +11894,7 @@ endobj
endobj
93 0 obj
<<
-/Length 7907
+/Length 7789
>>
stream
BT
@@ -11926,11 +11904,35 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 29)Tj
+( -- ExifTool 12.19 -- 29)Tj
/TT4 1 Tf
0 -1.6333 TD
+( -)Tj
+4.2 0 TD
+(-e)Tj
+0.6 0 TD
+(ex)Tj
+0.6 0 TD
+(xe)Tj
+0.6 0 TD
+(ec)Tj
+0.6 0 TD
+(cu)Tj
+0.6 0 TD
+(ut)Tj
+0.6 0 TD
+(te)Tj
+0.6 0 TD
+(e[_)Tj
+1.2 0 TD
+(N_)Tj
+0.6 0 TD
+(U_)Tj
+0.6 0 TD
+(M])Tj
+-10.8 -1.1 TD
( Execute command for all arguments up to this point on the command)Tj
-0 -1.1 TD
+T*
( line \(plus any arguments specified by -)Tj
30 0 TD
(-c)Tj
@@ -12031,6 +12033,72 @@ T*
0 -2.2 TD
( -)Tj
4.2 0 TD
+(-l)Tj
+0.6 0 TD
+(li)Tj
+0.6 0 TD
+(is)Tj
+0.6 0 TD
+(st)Tj
+0.6 0 TD
+(t_)Tj
+0.6 0 TD
+(_d)Tj
+0.6 0 TD
+(di)Tj
+0.6 0 TD
+(ir)Tj
+0.6 0 TD
+(r)Tj
+-9 -1.1 TD
+( List directories themselves instead of their contents. This)Tj
+T*
+( option effectively causes directories to be treated as normal)Tj
+T*
+( files when reading and writing. For example, with this option the)Tj
+T*
+( output of the "ls -la" command on Mac/Linux may be approximated by)Tj
+T*
+( this exiftool command:)Tj
+0 -2.2 TD
+( exiftool -list_dir -T -ls-l -api systemtags -fast5 .* *)Tj
+T*
+( \(The -)Tj
+10.2 0 TD
+(-T)Tj
+0.6 0 TD
+(T option formats the output in tab-separated columns, -)Tj
+32.4 0 TD
+(-l)Tj
+0.6 0 TD
+(ls)Tj
+0.6 0 TD
+(s-)Tj
+0.6 0 TD
+(-l)Tj
+0.6 0 TD
+(l)Tj
+-45.6 -1.1 TD
+( is a shortcut tag, the API SystemTags option is required to)Tj
+T*
+( extract some necessary tags, and the -)Tj
+29.4 0 TD
+(-f)Tj
+0.6 0 TD
+(fa)Tj
+0.6 0 TD
+(as)Tj
+0.6 0 TD
+(st)Tj
+0.6 0 TD
+(t5)Tj
+0.6 0 TD
+(5 option is added for)Tj
+-32.4 -1.1 TD
+( speed since only system tags are being extracted.\))Tj
+0 -2.2 TD
+( -)Tj
+4.2 0 TD
(-s)Tj
0.6 0 TD
(sr)Tj
@@ -12348,7 +12416,36 @@ T*
( using buffered output.\) ExifTool will then execute the command)Tj
T*
( with the arguments received up to this point, send a "{ready}")Tj
-T*
+ET
+endstream
+endobj
+94 0 obj
+<<
+/ProcSet [/PDF /Text ]
+/Font <<
+/TT2 4 0 R
+/TT4 5 0 R
+>>
+/ExtGState <<
+/GS1 6 0 R
+>>
+>>
+endobj
+96 0 obj
+<<
+/Length 7580
+>>
+stream
+BT
+/TT2 1 Tf
+10 0 0 10 29 806.3333 Tm
+0 g
+/GS1 gs
+0 Tc
+0 Tw
+( -- ExifTool 12.19 -- 30)Tj
+/TT4 1 Tf
+0 -1.6333 TD
( message to stdout when done \(unless the -)Tj
31.2 0 TD
(-q)Tj
@@ -12436,36 +12533,7 @@ T*
( when done. This will cause exiftool to process any remaining)Tj
T*
( command-line arguments then exit normally.)Tj
-ET
-endstream
-endobj
-94 0 obj
-<<
-/ProcSet [/PDF /Text ]
-/Font <<
-/TT2 4 0 R
-/TT4 5 0 R
->>
-/ExtGState <<
-/GS1 6 0 R
->>
->>
-endobj
-96 0 obj
-<<
-/Length 6873
->>
-stream
-BT
-/TT2 1 Tf
-10 0 0 10 29 806.3333 Tm
-0 g
-/GS1 gs
-0 Tc
-0 Tw
-( -- ExifTool 12.18 -- 30)Tj
-/TT4 1 Tf
-0 -1.6333 TD
+0 -2.2 TD
( The input _)Tj
13.2 0 TD
(A_)Tj
@@ -12869,28 +12937,6 @@ T*
( exiftool -p '${make;tr/ /_/;s/__+/_/g}' image.jpg)Tj
T*
( An "@" may be added after the tag name to make the expression act on)Tj
-0 -1.1 TD
-( individual list items for list-type tags, simplifying list processing.)Tj
-T*
-( Set $_ to undef to remove an item from the list. As an example, the)Tj
-T*
-( following command returns all subjects not containing the string "xxx":)Tj
-0 -2.2 TD
-( exiftool -p '${subject@;$_=undef if /xxx/}' image.jpg)Tj
-T*
-( A default expression of "tr\(/\\\\?*:|"<>\\0\)\(\)d" is assumed if the)Tj
-0 -1.1 TD
-( expression is empty \(ie. "${TAG;}"\). This removes the characters / \\ ?)Tj
-T*
-( * : | < > and null from the printed value. \(These characters are)Tj
-T*
-( illegal in Windows file names, so this feature is useful if tag values)Tj
-T*
-( are used in file names.\))Tj
-0 -2.2 TD
-( Helper functions)Tj
-T*
-( "DateFmt")Tj
ET
endstream
endobj
@@ -12908,7 +12954,7 @@ endobj
endobj
99 0 obj
<<
-/Length 4908
+/Length 4702
>>
stream
BT
@@ -12918,9 +12964,31 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 31)Tj
+( -- ExifTool 12.19 -- 31)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( individual list items for list-type tags, simplifying list processing.)Tj
+0 -1.1 TD
+( Set $_ to undef to remove an item from the list. As an example, the)Tj
+T*
+( following command returns all subjects not containing the string "xxx":)Tj
+0 -2.2 TD
+( exiftool -p '${subject@;$_=undef if /xxx/}' image.jpg)Tj
+T*
+( A default expression of "tr\(/\\\\?*:|"<>\\0\)\(\)d" is assumed if the)Tj
+0 -1.1 TD
+( expression is empty \(ie. "${TAG;}"\). This removes the characters / \\ ?)Tj
+T*
+( * : | < > and null from the printed value. \(These characters are)Tj
+T*
+( illegal in Windows file names, so this feature is useful if tag values)Tj
+T*
+( are used in file names.\))Tj
+0 -2.2 TD
+( Helper functions)Tj
+T*
+( "DateFmt")Tj
+T*
( Simplifies reformatting of individual date/time values. This function)Tj
0 -1.1 TD
( acts on a standard EXIF-formatted date/time value in $_ and formats it)Tj
@@ -13088,7 +13156,36 @@ T*
( properly encoded file names on the Windows command line \(see)Tj
T*
( <https://exiftool.org/faq.html#Q18> for details\), so placing them in a)Tj
-T*
+ET
+endstream
+endobj
+100 0 obj
+<<
+/ProcSet [/PDF /Text ]
+/Font <<
+/TT2 4 0 R
+/TT4 5 0 R
+>>
+/ExtGState <<
+/GS1 6 0 R
+>>
+>>
+endobj
+103 0 obj
+<<
+/Length 6905
+>>
+stream
+BT
+/TT2 1 Tf
+10 0 0 10 29 806.3333 Tm
+0 g
+/GS1 gs
+0 Tc
+0 Tw
+( -- ExifTool 12.19 -- 32)Tj
+/TT4 1 Tf
+0 -1.6333 TD
( UTF-8 encoded -)Tj
12.6 0 TD
(-@)Tj
@@ -13124,36 +13221,7 @@ T*
(L_)Tj
0.6 0 TD
(E arguments as well as)Tj
-ET
-endstream
-endobj
-100 0 obj
-<<
-/ProcSet [/PDF /Text ]
-/Font <<
-/TT2 4 0 R
-/TT4 5 0 R
->>
-/ExtGState <<
-/GS1 6 0 R
->>
->>
-endobj
-103 0 obj
-<<
-/Length 6835
->>
-stream
-BT
-/TT2 1 Tf
-10 0 0 10 29 806.3333 Tm
-0 g
-/GS1 gs
-0 Tc
-0 Tw
-( -- ExifTool 12.18 -- 32)Tj
-/TT4 1 Tf
-0 -1.6333 TD
+-31.2 -1.1 TD
( filename arguments of -)Tj
17.4 0 TD
(-@)Tj
@@ -13579,30 +13647,6 @@ T*
( unknown tags, sorted by group \(for family 1\). For performance)Tj
T*
( reasons, this command may not extract all available metadata.)Tj
-T*
-( \(Metadata in embedded documents, metadata extracted by external)Tj
-T*
-( utilities, and metadata requiring excessive processing time may)Tj
-T*
-( not be extracted\). Add "-ee" and "-api RequestAll=3" to the)Tj
-T*
-( command to extract absolutely everything available.)Tj
-0 -2.2 TD
-( exiftool -common dir)Tj
-0 -1.1 TD
-( Print common meta information for all images in "dir". "-common")Tj
-T*
-( is a shortcut tag representing common EXIF meta information.)Tj
-0 -2.2 TD
-( exiftool -T -createdate -aperture -shutterspeed -iso dir > out.txt)Tj
-0 -1.1 TD
-( List specified meta information in tab-delimited column form for)Tj
-T*
-( all images in "dir" to an output text file named "out.txt".)Tj
-0 -2.2 TD
-( exiftool -s -ImageSize -ExposureTime b.jpg)Tj
-0 -1.1 TD
-( Print ImageSize and ExposureTime tag names and values.)Tj
ET
endstream
endobj
@@ -13620,7 +13664,7 @@ endobj
endobj
106 0 obj
<<
-/Length 4221
+/Length 3960
>>
stream
BT
@@ -13630,9 +13674,33 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 33)Tj
+( -- ExifTool 12.19 -- 33)Tj
/TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+( \(Metadata in embedded documents, metadata extracted by external)Tj
+0 -1.1 TD
+( utilities, and metadata requiring excessive processing time may)Tj
+T*
+( not be extracted\). Add "-ee" and "-api RequestAll=3" to the)Tj
+T*
+( command to extract absolutely everything available.)Tj
+0 -2.2 TD
+( exiftool -common dir)Tj
+0 -1.1 TD
+( Print common meta information for all images in "dir". "-common")Tj
+T*
+( is a shortcut tag representing common EXIF meta information.)Tj
+0 -2.2 TD
+( exiftool -T -createdate -aperture -shutterspeed -iso dir > out.txt)Tj
+0 -1.1 TD
+( List specified meta information in tab-delimited column form for)Tj
+T*
+( all images in "dir" to an output text file named "out.txt".)Tj
+0 -2.2 TD
+( exiftool -s -ImageSize -ExposureTime b.jpg)Tj
+0 -1.1 TD
+( Print ImageSize and ExposureTime tag names and values.)Tj
+0 -2.2 TD
( exiftool -l -canon c.jpg d.jpg)Tj
0 -1.1 TD
( Print standard Canon information from two image files.)Tj
@@ -13714,9 +13782,38 @@ T*
( same name and an extension of ".icc".)Tj
0 -2.2 TD
( exiftool -htmldump -w tmp/%f_%e.html t/images)Tj
-0 -1.1 TD
+ET
+endstream
+endobj
+107 0 obj
+<<
+/ProcSet [/PDF /Text ]
+/Font <<
+/TT2 4 0 R
+/TT4 5 0 R
+>>
+/ExtGState <<
+/GS1 6 0 R
+>>
+>>
+endobj
+109 0 obj
+<<
+/Length 4378
+>>
+stream
+BT
+/TT2 1 Tf
+10 0 0 10 29 806.3333 Tm
+0 g
+/GS1 gs
+0 Tc
+0 Tw
+( -- ExifTool 12.19 -- 34)Tj
+/TT4 1 Tf
+0 -1.6333 TD
( Generate HTML pages from a hex dump of EXIF information in all)Tj
-T*
+0 -1.1 TD
( images from the "t/images" directory. The output HTML files are)Tj
T*
( written to the "tmp" directory \(which is created if it didn't)Tj
@@ -13770,38 +13867,9 @@ T*
( special characters such as ">", "<" or any white space. These quoting)Tj
T*
( techniques are shell dependent, but the examples below will work for)Tj
-ET
-endstream
-endobj
-107 0 obj
-<<
-/ProcSet [/PDF /Text ]
-/Font <<
-/TT2 4 0 R
-/TT4 5 0 R
->>
-/ExtGState <<
-/GS1 6 0 R
->>
->>
-endobj
-109 0 obj
-<<
-/Length 4060
->>
-stream
-BT
-/TT2 1 Tf
-10 0 0 10 29 806.3333 Tm
-0 g
-/GS1 gs
-0 Tc
-0 Tw
-( -- ExifTool 12.18 -- 34)Tj
-/TT4 1 Tf
-0 -1.6333 TD
+T*
( most Unix shells. With the Windows cmd shell however, double quotes)Tj
-0 -1.1 TD
+T*
( should be used \(eg. -Comment="This is a new comment"\).)Tj
0 -2.2 TD
( exiftool -Comment='This is a new comment' dst.jpg)Tj
@@ -13883,30 +13951,6 @@ T*
( exiftool '-ThumbnailImage<=thumb.jpg' dst.jpg)Tj
0 -1.1 TD
( Set the thumbnail image from specified file \(Note: The quotes are)Tj
-T*
-( necessary to prevent shell redirection\).)Tj
-0 -2.2 TD
-( exiftool '-JpgFromRaw<=%d%f_JFR.JPG' -ext NEF -r .)Tj
-0 -1.1 TD
-( Recursively write JPEG images with filenames ending in "_JFR.JPG")Tj
-T*
-( to the JpgFromRaw tag of like-named files with extension ".NEF" in)Tj
-T*
-( the current directory. \(This is the inverse of the "-JpgFromRaw")Tj
-T*
-( command of the "READING EXAMPLES" section above.\))Tj
-0 -2.2 TD
-( exiftool -DateTimeOriginal-='0:0:0 1:30:0' dir)Tj
-0 -1.1 TD
-( Adjust original date/time of all images in directory "dir" by)Tj
-T*
-( subtracting one hour and 30 minutes. \(This is equivalent to)Tj
-T*
-( "-DateTimeOriginal-=1.5". See Image::ExifTool::Shift.pl for)Tj
-T*
-( details.\))Tj
-0 -2.2 TD
-( exiftool -createdate+=3 -modifydate+=3 a.jpg b.jpg)Tj
ET
endstream
endobj
@@ -13924,7 +13968,7 @@ endobj
endobj
112 0 obj
<<
-/Length 4318
+/Length 4324
>>
stream
BT
@@ -13934,11 +13978,35 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 35)Tj
+( -- ExifTool 12.19 -- 35)Tj
/TT4 1 Tf
0 -1.6333 TD
-( Add 3 hours to the CreateDate and ModifyDate timestamps of two)Tj
+( necessary to prevent shell redirection\).)Tj
+0 -2.2 TD
+( exiftool '-JpgFromRaw<=%d%f_JFR.JPG' -ext NEF -r .)Tj
+0 -1.1 TD
+( Recursively write JPEG images with filenames ending in "_JFR.JPG")Tj
+T*
+( to the JpgFromRaw tag of like-named files with extension ".NEF" in)Tj
+T*
+( the current directory. \(This is the inverse of the "-JpgFromRaw")Tj
+T*
+( command of the "READING EXAMPLES" section above.\))Tj
+0 -2.2 TD
+( exiftool -DateTimeOriginal-='0:0:0 1:30:0' dir)Tj
0 -1.1 TD
+( Adjust original date/time of all images in directory "dir" by)Tj
+T*
+( subtracting one hour and 30 minutes. \(This is equivalent to)Tj
+T*
+( "-DateTimeOriginal-=1.5". See Image::ExifTool::Shift.pl for)Tj
+T*
+( details.\))Tj
+0 -2.2 TD
+( exiftool -createdate+=3 -modifydate+=3 a.jpg b.jpg)Tj
+0 -1.1 TD
+( Add 3 hours to the CreateDate and ModifyDate timestamps of two)Tj
+T*
( images.)Tj
0 -2.2 TD
( exiftool -AllDates+=1:30 -if '$make eq "Canon"' dir)Tj
@@ -14050,30 +14118,6 @@ T*
( exiftool -TagsFromFile src.jpg -all:all dst.jpg)Tj
0 -1.1 TD
( Copy the values of all writable tags from "src.jpg" to "dst.jpg",)Tj
-T*
-( preserving the original tag groups.)Tj
-0 -2.2 TD
-( exiftool -all= -tagsfromfile src.jpg -exif:all dst.jpg)Tj
-0 -1.1 TD
-( Erase all meta information from "dst.jpg" image, then copy EXIF)Tj
-T*
-( tags from "src.jpg".)Tj
-0 -2.2 TD
-( exiftool -exif:all= -tagsfromfile @ -all:all -unsafe bad.jpg)Tj
-0 -1.1 TD
-( Rebuild all EXIF meta information from scratch in an image. This)Tj
-T*
-( technique can be used in JPEG images to repair corrupted EXIF)Tj
-T*
-( information which otherwise could not be written due to errors.)Tj
-T*
-( The "Unsafe" tag is a shortcut for unsafe EXIF tags in JPEG images)Tj
-T*
-( which are not normally copied. See the tag name documentation for)Tj
-T*
-( more details about unsafe tags.)Tj
-0 -2.2 TD
-( exiftool -Tagsfromfile a.jpg out.xmp)Tj
ET
endstream
endobj
@@ -14091,7 +14135,7 @@ endobj
endobj
115 0 obj
<<
-/Length 4736
+/Length 4704
>>
stream
BT
@@ -14101,11 +14145,35 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 36)Tj
+( -- ExifTool 12.19 -- 36)Tj
/TT4 1 Tf
0 -1.6333 TD
-( Copy meta information from "a.jpg" to an XMP data file. If the)Tj
+( preserving the original tag groups.)Tj
+0 -2.2 TD
+( exiftool -all= -tagsfromfile src.jpg -exif:all dst.jpg)Tj
0 -1.1 TD
+( Erase all meta information from "dst.jpg" image, then copy EXIF)Tj
+T*
+( tags from "src.jpg".)Tj
+0 -2.2 TD
+( exiftool -exif:all= -tagsfromfile @ -all:all -unsafe bad.jpg)Tj
+0 -1.1 TD
+( Rebuild all EXIF meta information from scratch in an image. This)Tj
+T*
+( technique can be used in JPEG images to repair corrupted EXIF)Tj
+T*
+( information which otherwise could not be written due to errors.)Tj
+T*
+( The "Unsafe" tag is a shortcut for unsafe EXIF tags in JPEG images)Tj
+T*
+( which are not normally copied. See the tag name documentation for)Tj
+T*
+( more details about unsafe tags.)Tj
+0 -2.2 TD
+( exiftool -Tagsfromfile a.jpg out.xmp)Tj
+0 -1.1 TD
+( Copy meta information from "a.jpg" to an XMP data file. If the)Tj
+T*
( XMP data file "out.xmp" already exists, it will be updated with)Tj
T*
( the new information. Otherwise the XMP data file will be created.)Tj
@@ -14219,30 +14287,6 @@ T*
( exiftool '-keywords+<make' image.jpg)Tj
0 -1.1 TD
( Add camera make to list of keywords.)Tj
-0 -2.2 TD
-( exiftool '-comment<ISO=$exif:iso Exposure=${shutterspeed}' dir)Tj
-0 -1.1 TD
-( Set the Comment tag of all images in "dir" from the values of the)Tj
-T*
-( EXIF:ISO and ShutterSpeed tags. The resulting comment will be in)Tj
-T*
-( the form "ISO=100 Exposure=1/60".)Tj
-0 -2.2 TD
-( exiftool -TagsFromFile src.jpg -icc_profile dst.jpg)Tj
-0 -1.1 TD
-( Copy ICC_Profile from one image to another.)Tj
-0 -2.2 TD
-( exiftool -TagsFromFile src.jpg -all:all dst.mie)Tj
-0 -1.1 TD
-( Copy all meta information in its original form from a JPEG image)Tj
-T*
-( to a MIE file. The MIE file will be created if it doesn't exist.)Tj
-T*
-( This technique can be used to store the metadata of an image so it)Tj
-T*
-( can be inserted back into the image \(with the inverse command\))Tj
-T*
-( later in a workflow.)Tj
ET
endstream
endobj
@@ -14260,7 +14304,7 @@ endobj
endobj
118 0 obj
<<
-/Length 5623
+/Length 5505
>>
stream
BT
@@ -14270,9 +14314,33 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 37)Tj
+( -- ExifTool 12.19 -- 37)Tj
/TT4 1 Tf
0 -2.7333 TD
+( exiftool '-comment<ISO=$exif:iso Exposure=${shutterspeed}' dir)Tj
+0 -1.1 TD
+( Set the Comment tag of all images in "dir" from the values of the)Tj
+T*
+( EXIF:ISO and ShutterSpeed tags. The resulting comment will be in)Tj
+T*
+( the form "ISO=100 Exposure=1/60".)Tj
+0 -2.2 TD
+( exiftool -TagsFromFile src.jpg -icc_profile dst.jpg)Tj
+0 -1.1 TD
+( Copy ICC_Profile from one image to another.)Tj
+0 -2.2 TD
+( exiftool -TagsFromFile src.jpg -all:all dst.mie)Tj
+0 -1.1 TD
+( Copy all meta information in its original form from a JPEG image)Tj
+T*
+( to a MIE file. The MIE file will be created if it doesn't exist.)Tj
+T*
+( This technique can be used to store the metadata of an image so it)Tj
+T*
+( can be inserted back into the image \(with the inverse command\))Tj
+T*
+( later in a workflow.)Tj
+0 -2.2 TD
( exiftool -o dst.mie -all:all src.jpg)Tj
0 -1.1 TD
( This command performs exactly the same task as the command above,)Tj
@@ -14466,32 +14534,6 @@ T*
( Rename all files in "dir" by adding the camera model name to the)Tj
T*
( file name. The semicolon after the tag name inside the braces)Tj
-T*
-( causes characters which are invalid in Windows file names to be)Tj
-T*
-( deleted from the tag value \(see the "Advanced formatting feature")Tj
-T*
-( for an explanation\).)Tj
-0 -2.2 TD
-( exiftool '-FileName<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e dir)Tj
-0 -1.1 TD
-( Rename all images in "dir" according to the "CreateDate" date and)Tj
-T*
-( time, adding a copy number with leading '-' if the file already)Tj
-T*
-( exists \("%-c"\), and preserving the original file extension \(%e\).)Tj
-T*
-( Note the extra '%' necessary to escape the filename codes \(%c and)Tj
-T*
-( %e\) in the date format string.)Tj
-0 -2.2 TD
-( exiftool -r '-FileName<CreateDate' -d %Y-%m-%d/%H%M_%%f.%%e dir)Tj
-0 -1.1 TD
-( Both the directory and the filename may be changed together via)Tj
-T*
-( the "FileName" tag if the new "FileName" contains a '/'. The)Tj
-T*
-( example above recursively renames all images in a directory by)Tj
ET
endstream
endobj
@@ -14509,7 +14551,7 @@ endobj
endobj
121 0 obj
<<
-/Length 4514
+/Length 4663
>>
stream
BT
@@ -14519,11 +14561,37 @@ BT
/GS1 gs
0 Tc
0 Tw
-( -- ExifTool 12.18 -- 38)Tj
+( -- ExifTool 12.19 -- 38)Tj
/TT4 1 Tf
0 -1.6333 TD
-( adding a "CreateDate" timestamp to the start of the filename, then)Tj
+( causes characters which are invalid in Windows file names to be)Tj
+0 -1.1 TD
+( deleted from the tag value \(see the "Advanced formatting feature")Tj
+T*
+( for an explanation\).)Tj
+0 -2.2 TD
+( exiftool '-FileName<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e dir)Tj
+0 -1.1 TD
+( Rename all images in "dir" according to the "CreateDate" date and)Tj
+T*
+( time, adding a copy number with leading '-' if the file already)Tj
+T*
+( exists \("%-c"\), and preserving the original file extension \(%e\).)Tj
+T*
+( Note the extra '%' necessary to escape the filename codes \(%c and)Tj
+T*
+( %e\) in the date format string.)Tj
+0 -2.2 TD
+( exiftool -r '-FileName<CreateDate' -d %Y-%m-%d/%H%M_%%f.%%e dir)Tj
0 -1.1 TD
+( Both the directory and the filename may be changed together via)Tj
+T*
+( the "FileName" tag if the new "FileName" contains a '/'. The)Tj
+T*
+( example above recursively renames all images in a directory by)Tj
+T*
+( adding a "CreateDate" timestamp to the start of the filename, then)Tj
+T*
( moves them into new directories named by date.)Tj
0 -2.2 TD
( exiftool '-FileName<${CreateDate}_$filenumber.jpg' -d %Y%m%d -ext jpg .)Tj
@@ -14643,7 +14711,36 @@ T*
( exiftool -geotag a.log -geotag b.log -r dir)Tj
0 -1.1 TD
( Combine multiple track logs and geotag an entire directory tree of)Tj
-T*
+ET
+endstream
+endobj
+122 0 obj
+<<
+/ProcSet [/PDF /Text ]
+/Font <<
+/TT2 4 0 R
+/TT4 5 0 R
+>>
+/ExtGState <<
+/GS1 6 0 R
+>>
+>>
+endobj
+124 0 obj
+<<
+/Length 5173
+>>
+stream
+BT
+/TT2 1 Tf
+10 0 0 10 29 806.3333 Tm
+0 g
+/GS1 gs
+0 Tc
+0 Tw
+( -- ExifTool 12.19 -- 39)Tj
+/TT4 1 Tf
+0 -1.6333 TD
( images.)Tj
0 -2.2 TD
( exiftool -geotag 'tracks/*.log' -r dir)Tj
@@ -14693,36 +14790,7 @@ T*
( cat a.jpg | exiftool -)Tj
T*
( Extract information from stdin.)Tj
-ET
-endstream
-endobj
-122 0 obj
-<<
-/ProcSet [/PDF /Text ]
-/Font <<
-/TT2 4 0 R
-/TT4 5 0 R
->>
-/ExtGState <<
-/GS1 6 0 R
->>
->>
-endobj
-124 0 obj
-<<
-/Length 4285
->>
-stream
-BT
-/TT2 1 Tf
-10 0 0 10 29 806.3333 Tm
-0 g
-/GS1 gs
-0 Tc
-0 Tw
-( -- ExifTool 12.18 -- 39)Tj
-/TT4 1 Tf
-0 -1.6333 TD
+0 -2.2 TD
( exiftool image.jpg -thumbnailimage -b | exiftool -)Tj
0 -1.1 TD
( Extract information from an embedded thumbnail image.)Tj
@@ -15035,7 +15103,7 @@ T*
0.6 0 TD
(s\(3pm\), Image::ExifTool::Shift.pl)Tj
-19.2 -4.4 TD
-(perl v5.18.4 2021-02-09 EXIFTOOL\(1\))Tj
+(perl v5.18.4 2021-02-18 EXIFTOOL\(1\))Tj
ET
endstream
endobj
@@ -15495,8 +15563,8 @@ endobj
endobj
130 0 obj
<<
-/CreationDate (D:20210209104356-05'00')
-/ModDate (D:20210209104356-05'00')
+/CreationDate (D:20210218154807-05'00')
+/ModDate (D:20210218154807-05'00')
/Producer (Apple pstopdf)
>>
endobj
@@ -15510,144 +15578,144 @@ endobj
xref
0 132
0000000000 65535 f
-0000260775 00000 n
+0000262068 00000 n
0000000016 00000 n
0000007984 00000 n
-0000259786 00000 n
-0000260175 00000 n
-0000259251 00000 n
-0000264141 00000 n
-0000260855 00000 n
+0000261079 00000 n
+0000261468 00000 n
+0000260544 00000 n
+0000265434 00000 n
+0000262148 00000 n
0000008090 00000 n
0000013524 00000 n
-0000260936 00000 n
+0000262229 00000 n
0000013631 00000 n
0000018994 00000 n
-0000261019 00000 n
+0000262312 00000 n
0000019101 00000 n
-0000025267 00000 n
-0000261102 00000 n
-0000025374 00000 n
-0000031630 00000 n
-0000261185 00000 n
-0000031737 00000 n
-0000039156 00000 n
-0000261268 00000 n
-0000039263 00000 n
-0000046993 00000 n
-0000261351 00000 n
-0000047100 00000 n
-0000054400 00000 n
-0000261434 00000 n
-0000054507 00000 n
-0000060886 00000 n
-0000261517 00000 n
-0000060993 00000 n
-0000067251 00000 n
-0000261600 00000 n
-0000067358 00000 n
-0000074938 00000 n
-0000264691 00000 n
-0000264276 00000 n
-0000261684 00000 n
-0000075045 00000 n
-0000083913 00000 n
-0000261768 00000 n
-0000084020 00000 n
-0000090173 00000 n
-0000261852 00000 n
-0000090280 00000 n
-0000095562 00000 n
-0000261936 00000 n
-0000095669 00000 n
-0000101871 00000 n
-0000262020 00000 n
-0000101978 00000 n
-0000110061 00000 n
-0000262104 00000 n
-0000110168 00000 n
-0000115125 00000 n
-0000262188 00000 n
-0000115232 00000 n
-0000121004 00000 n
-0000262272 00000 n
-0000121111 00000 n
-0000129429 00000 n
-0000262356 00000 n
-0000129536 00000 n
-0000136538 00000 n
-0000262440 00000 n
-0000136645 00000 n
-0000145105 00000 n
-0000264414 00000 n
-0000262524 00000 n
-0000145212 00000 n
-0000151332 00000 n
-0000262608 00000 n
-0000151439 00000 n
-0000159882 00000 n
-0000262692 00000 n
-0000159989 00000 n
-0000167945 00000 n
-0000262776 00000 n
-0000168052 00000 n
-0000175279 00000 n
-0000262860 00000 n
-0000175386 00000 n
-0000182936 00000 n
-0000262944 00000 n
-0000183043 00000 n
-0000189724 00000 n
-0000263028 00000 n
-0000189831 00000 n
-0000199087 00000 n
-0000263112 00000 n
-0000199194 00000 n
-0000207154 00000 n
-0000263196 00000 n
-0000207261 00000 n
-0000214187 00000 n
-0000263280 00000 n
-0000214294 00000 n
-0000219255 00000 n
-0000264552 00000 n
-0000263366 00000 n
-0000219363 00000 n
-0000226252 00000 n
-0000263454 00000 n
-0000226360 00000 n
-0000230635 00000 n
-0000263542 00000 n
-0000230743 00000 n
-0000234857 00000 n
-0000263630 00000 n
-0000234965 00000 n
-0000239337 00000 n
-0000263718 00000 n
-0000239445 00000 n
-0000244235 00000 n
-0000263806 00000 n
-0000244343 00000 n
-0000250020 00000 n
-0000263894 00000 n
-0000250128 00000 n
-0000254696 00000 n
-0000263982 00000 n
-0000254804 00000 n
-0000259143 00000 n
-0000259391 00000 n
-0000259594 00000 n
-0000264070 00000 n
-0000264099 00000 n
-0000264797 00000 n
-0000264921 00000 n
+0000025073 00000 n
+0000262395 00000 n
+0000025180 00000 n
+0000031645 00000 n
+0000262478 00000 n
+0000031752 00000 n
+0000039160 00000 n
+0000262561 00000 n
+0000039267 00000 n
+0000047000 00000 n
+0000262644 00000 n
+0000047107 00000 n
+0000054410 00000 n
+0000262727 00000 n
+0000054517 00000 n
+0000060911 00000 n
+0000262810 00000 n
+0000061018 00000 n
+0000067257 00000 n
+0000262893 00000 n
+0000067364 00000 n
+0000074996 00000 n
+0000265984 00000 n
+0000265569 00000 n
+0000262977 00000 n
+0000075103 00000 n
+0000083803 00000 n
+0000263061 00000 n
+0000083910 00000 n
+0000090189 00000 n
+0000263145 00000 n
+0000090296 00000 n
+0000095578 00000 n
+0000263229 00000 n
+0000095685 00000 n
+0000101889 00000 n
+0000263313 00000 n
+0000101996 00000 n
+0000110072 00000 n
+0000263397 00000 n
+0000110179 00000 n
+0000115222 00000 n
+0000263481 00000 n
+0000115329 00000 n
+0000121039 00000 n
+0000263565 00000 n
+0000121146 00000 n
+0000129442 00000 n
+0000263649 00000 n
+0000129549 00000 n
+0000136633 00000 n
+0000263733 00000 n
+0000136740 00000 n
+0000145200 00000 n
+0000265707 00000 n
+0000263817 00000 n
+0000145307 00000 n
+0000151344 00000 n
+0000263901 00000 n
+0000151451 00000 n
+0000159774 00000 n
+0000263985 00000 n
+0000159881 00000 n
+0000167834 00000 n
+0000264069 00000 n
+0000167941 00000 n
+0000175181 00000 n
+0000264153 00000 n
+0000175288 00000 n
+0000182940 00000 n
+0000264237 00000 n
+0000183047 00000 n
+0000189726 00000 n
+0000264321 00000 n
+0000189833 00000 n
+0000198977 00000 n
+0000264405 00000 n
+0000199084 00000 n
+0000206926 00000 n
+0000264489 00000 n
+0000207033 00000 n
+0000214666 00000 n
+0000264573 00000 n
+0000214773 00000 n
+0000219528 00000 n
+0000265845 00000 n
+0000264659 00000 n
+0000219636 00000 n
+0000226595 00000 n
+0000264747 00000 n
+0000226703 00000 n
+0000230717 00000 n
+0000264835 00000 n
+0000230825 00000 n
+0000235257 00000 n
+0000264923 00000 n
+0000235365 00000 n
+0000239743 00000 n
+0000265011 00000 n
+0000239851 00000 n
+0000244609 00000 n
+0000265099 00000 n
+0000244717 00000 n
+0000250276 00000 n
+0000265187 00000 n
+0000250384 00000 n
+0000255101 00000 n
+0000265275 00000 n
+0000255209 00000 n
+0000260436 00000 n
+0000260684 00000 n
+0000260887 00000 n
+0000265363 00000 n
+0000265392 00000 n
+0000266090 00000 n
+0000266214 00000 n
trailer
<<
/Size 132
/Root 131 0 R
/Info 130 0 R
-/ID [<bc825e53e4b604879a843c55647f425b><bc825e53e4b604879a843c55647f425b>]
+/ID [<833ed2547a88ad4934a3bc6017145728><833ed2547a88ad4934a3bc6017145728>]
>>
startxref
-264993
+266286
%%EOF
diff --git a/html/faq.html b/html/faq.html
index 8e5b84af..9327c514 100644
--- a/html/faq.html
+++ b/html/faq.html
@@ -1728,7 +1728,7 @@ this is performance; extracting these tags will significantly increase
processing time for some files. The following command extracts everything
possible with ExifTool:
-<pre>exiftool -ee3 -u -G3:1 -api requestall=3 -api largefilesupport FILE</pre>
+<pre>exiftool -ee3 -U -G3:1 -api requestall=3 -api largefilesupport FILE</pre>
(The <code>-G3:1</code> option is included in the above command only to give an
indication of where the metadata was stored.)</blockquote>
diff --git a/html/history.html b/html/history.html
index e9e115c1..d4c22ac9 100644
--- a/html/history.html
+++ b/html/history.html
@@ -17,6 +17,27 @@ considered development releases, and are not uploaded to <a href="https://metacp
<!-- Use line width of 80 -->
<!-- *********************************************************************** -->
+<a name='v12.19'><b>Feb. 18, 2021 - Version 12.19</b></a>
+<ul>
+<li>Added -list_dir option
+<li>Added the "ls-l" <a href="TagNames/Shortcuts.html">Shortcut tag</a>
+<li>Extract Comment and History from FITS files
+<li>Enhanced FilePermissions to include device type (similar to "ls -l")
+<li>Changed the name of Apple ContentIdentifier tag to MediaGroupUUID
+ (thanks Neal Krawetz)
+<li>Fixed a potential "substr outside of string" runtime error when reading
+ corrupted EXIF
+<li>Fixed edge case where NikonScanIFD may not be copied properly when copying
+ MakerNotes to another file
+<li>API Changes:
+ <ul>
+ <li>Added ability to read/write System tags of directories
+ <li>Enhanced GetAllGroups() to support family 7 and take optional ExifTool
+ reference
+ <li>Changed QuickTimeHandler option default to 1
+ </ul>
+</ul>
+
<a name='v12.18'><b>Feb. 9, 2021 - Version 12.18</b></a>
<ul>
<li>Added a new SonyModelID
@@ -334,186 +355,6 @@ considered development releases, and are not uploaded to <a href="https://metacp
</ul>
</ul>
-<a name='v11.99'><b>May 11, 2020 - Version 11.99</b></a>
-<ul>
-<li>Added a new Nikon LensID (thanks Mykyta Kozlov)
-<li>Added a new Canon LensType
-<li>Added a newn PentaxModelID
-<li>Decode a few new QuickTime tags
-<li>Decode new ID3 Grouping tag
-<li>Decode a few more MinoltaRaw tags (thanks LibRaw)
-<li>Fixed runtime warning which could occur when reading corrupted RTF files
-<li>Fixed another potential pitfall in M2TS Duration calculation
-<li>Fixed problem extracting some unknown QuickTime:Keys tags
-<li>Fixed problem decoding Nikon D850 orientation tags
-<li>Fixed bug where TIFF image data may not be padded to an even number of bytes
-</ul>
-
-<a name='v11.98'><b>May 1, 2020 - Version 11.98</b></a>
-<ul>
-<li>Added a new Nikon LensID (thanks Warren Hatch)
-<li>Added a new Sony LensType (thanks LibRaw)
-<li>Added a new Canon LensType
-<li>Patched to extract EXIF with an "Exif\0\0" header from WebP images
-<li>Enhanced -efile option and added to the documentation
-<li>Minor tweak to -htmlDump output (disallow locking of empty selection)
-<li>Fixed problem determining Duration of some M2TS videos
-</ul>
-
-<a name='v11.97'><b>Apr. 27, 2020 - Version 11.97</b></a>
-<ul>
-<li>Added experimental -efile option (undocumented)
-<li>Decode NMEA GGA sentence from streaming GPS of some dashcam videos
-</ul>
-
-<a name='v11.96'><b>Apr. 24, 2020 - Version 11.96</b></a>
-<ul>
-<li>Decode streaming GPS from Lucas LK-7900 Ace AVI videos
-<li>Changed new Exit/ExitDir function names to End/EndDir
-<li>Fixed inconsistencies when using "-use mwg" together with the -wm option
-</ul>
-
-<a name='v11.95'><b>Apr. 23, 2020 - Version 11.95</b></a>
-<ul>
-<li>Added Exit() and ExitDir() functions for use in -if conditions (NOTE: these
- function names changed to End() and EndDir() in ExifTool 11.96)
-<li>Enhanced -geotag feature to support a more flexible input CSV file format
-<li>Enhanced -if and <a href="ExifTool.html#Filter">API Filter</a> options to allow access to ExifTool object via
- $self
-<li>Fixed problem reading HEIC Exif with a missing header
-</ul>
-
-<a name='v11.94'><b>Apr. 17, 2020 - Version 11.94</b></a>
-<ul>
-<li>Added support for QuickTime ItemList:GPSCoordinates
-<li>Added additional Validate test for overlapping EXIF values
-<li>Added a new Sony LensType (thanks Jos Roost)
-<li>Added a new Nikon LensID
-<li>Decode a few more Nikon tags (thanks Warren Hatch)
-<li>Decode Pentax ShutterType
-<li>Changed color of locked highlighted selection in <a href="htmldump.html">-htmlDump output</a>
-<li>Fixed problem reading PDF files written by Microsoft Print-to-PDF
-<li>Fixed problem where -X output would produce invalid XML for MP4 files
- containing an HTCTrack
-</ul>
-
-<a name='v11.93'><b>Apr. 3, 2020 - Version 11.93</b></a>
-<ul>
-<li>Added new config file to the distribution for writing Pix4D XMP-Camera tags
- (config_files/pix4d.config)
-<li>Added support for the DOSCyrillic (cp866) character set
-<li>Added IO::String to the Windows EXE version
-<li>Improved identification of Canon RF lenses (thanks LibRaw)
-<li>Enhanced -htmlDump output to add "File offset" entry for EXIF tags and
- ability lock highlighted selection by clicking the mouse
-<li>Enhanced -srcfile option to generate OriginalFileName and OriginalDirectory
- UserParam tags
-<li>Patched HEIC writer to add missing pitm box if necessary
-<li>Fixed problem adding back EXIF after deleting it from HEIC file
-<li>Fixed minor problem with incorrect number of bytes being reported for
- invalid header in corrupt files
-<li>API Changes:
- <ul>
- <li>Enhanced UserParam option to allow parameters to be extracted as if
- they were normal tags
- </ul>
-</ul>
-
-<a name='v11.92'><b>Mar. 19, 2020 - Version 11.92</b></a>
-<ul>
-<li>Added a new Nikon LensID (thanks Wolfgang Exler)
-<li>Decode a few new Leica tags (thanks Tim Gray)
-<li>Decode AccelerometerData from Samsung Gear 360 videos
-<li>Fixed a couple of problems decoding timed GPS metadata from NextBase dashcam
- videos
-<li>Fixed problem where -X option could produce invalid XML when reading
- corrupted XMP
-</ul>
-
-<a name='v11.91'><b>Mar. 5, 2020 - Version 11.91</b></a>
-<ul>
-<li>Decode a couple of new Panasonic tags
-<li>Documented -ec option (available since version 11.54)
-<li>Reverted -htmlDump fix of 11.90 because it broke more than it fixed, and
- instead applied a targeted patch to fix this problem for RW2 files
-</ul>
-
-<a name='v11.90'><b>Mar. 3, 2020 - Version 11.90</b></a>
-<ul>
-<li>Added a new Sony LensType (thanks LibRaw and Jos Roost)
-<li>Added two new Olympus LensType values
-<li>Added a new Canon LensType
-<li>Added some new Canon RecordMode values
-<li>Added some new QuickTime GeneralProfileIDC values
-<li>Added new values for a couple of FujiFilm tags
-<li>Added a number of new QuickTime GenreID values
-<li>Decode Nikon Z6/Z7 phase-detect AF points (thanks Andy Dragon)
-<li>Patched to avoid possible "Undefined subroutine" error in MacOS 10.15
-<li>Fixed incorrect offsets in -htmlDump output for some file types
-</ul>
-
-<a name='v11.89'><b>Feb. 25, 2020 - Version 11.89</b></a>
-<ul>
-<li>Added support for Exif 2.32 for XMP
-<li>Recognize the HIF file extension
-<li>Improved verbose output for QuickTime iref items
-<li>Patched to create new GPS metadata in Canon CR3 images using a default byte
- order that is the same as existing EXIF boxes
-<li>Patched to add missing newline that could occur in XMP with the API <a href="ExifTool.html#Compact">Compact</a>
- Shorthand option
-</ul>
-
-<a name='v11.88'><b>Feb. 20, 2020 - Version 11.88</b></a>
-<ul>
-<li>Added write support for new <a href="TagNames/XMP.html#Device">Google depth-map XMP tags</a>
-<li>Added config_files/depthmap.config to the distribution
-<li>Added minor error when attempting to write FFF images due to incompatibility
- with Hasselblad Phocus software
-<li>Patched to avoid "Invalid iloc offset size" error when writing some
- QuickTime-based files
-<li>Fixed incorrect ColumnCount for CSV files
-<li>Fixed various spelling errors (thanks Jens Schleusener)
-<li>Fixed bug writing QuickTime:Rotation in HEIC files
-</ul>
-
-<a name='v11.87'><b>Feb. 13, 2020 - Version 11.87</b></a>
-<ul>
-<li>Added read support for CSV files
-<li>Added "--" option to indicate the end of options
-<li>Added ability to read/write/copy/delete the JPEG trailer as a block
-<li>Added new Olympus CameraType and LensType values (thanks LibRaw)
-<li>Decode a few more FujiFilm tags
-<li>Enhanced -fast option (API <a href="ExifTool.html#FastScan">FastScan</a>) to bypass PNG CRC validation when
- writing
-</ul>
-
-<a name='v11.86'><b>Feb. 4, 2020 - Version 11.86</b></a>
-<ul>
-<li>Added support for DNG version 1.5
-<li>Added config_files/acdsee.config to the full distribution (thanks StarGeek)
-<li>Added a new Sony LensType (thanks Jos Roost and LibRaw)
-<li>Decode two more bits from Nikon LensType (thanks LibRaw)
-<li>Decode QuickTime MovieFragmentSequence
-<li>Patched HEIC writer to add missing iref box if necessary
-<li>Fixed typo in a Canon LensType value
-<li>API Changes:
- <ul>
- <li>Patched ImageInfo() to recognize a stringified object as a file name
- </ul>
-</ul>
-
-<a name='v11.85'><b>Jan. 28, 2020 - Version 11.85</b></a> <span class=grn>(production release)</span>
-<ul>
-<li>Added a new Sony LensType (thanks Jos Roost)
-<li>Added a new Olympus CameraType (thanks LibRaw)
-<li>Added a two new Pentax LensType values
-<li>Added a new FujiFilm FocusMode
-<li>Decode timed GPS from Akaso dashcam MOV videos
-<li>Decode Insta360 trailer from INSP images and made Insta360 a deletable group
-<li>Patched kml.fmt file to limit maximum image size (thanks Fedor Kotov)
-<li>Fixed problem decoding values from Leica M10 and S maker notes
-</ul>
-
<a name='ancient' href="ancient_history.html"><b>History of older versions</b> (back to 1.00) --></a><br><br>
<hr>
diff --git a/html/index.html b/html/index.html
index c4868989..5e21090b 100644
--- a/html/index.html
+++ b/html/index.html
@@ -81,9 +81,9 @@ span.sup { font-size: 0.8em; font-weight: normal; position: relative; top
</div>
<blockquote><table class='dl lg'><tr><td><b>
-<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.18.tar.gz/download">
-Download Version 12.18</a> (4.7 MB) -
-<a href="history.html">Feb. 9, 2021</a></b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.19.tar.gz/download">
+Download Version 12.19</a> (4.7 MB) -
+<a href="history.html">Feb. 18, 2021</a></b></td></tr></table></blockquote>
<p><b>ExifTool is a platform-independent <a href="ExifTool.html">Perl
library</a> plus a <a href="exiftool_pod.html">command-line application</a> for
@@ -136,8 +136,8 @@ distribution above.)</i></p>
<blockquote><table class='dl lg'><tr><td><b>
<a name="alone">Windows Executable:</a>
-<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.18.zip/download">
- exiftool-12.18.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.19.zip/download">
+ exiftool-12.19.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
<p><b>The stand-alone Windows executable</b> does not require Perl. Just
download and un-zip the archive then double-click on
@@ -155,7 +155,7 @@ if you have any problems/comments with this version.)</i></p>
<blockquote><table class='dl lg'><tr><td><b>
MacOS Package:
<a href="http://sourceforge.net/projects/exiftool/files/ExifTool-9.70.dmg/download">
- ExifTool-12.18.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
+ ExifTool-12.19.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
<p><b>The MacOS package</b> installs the ExifTool command-line application and
libraries in /usr/local/bin. After installing, type "<code>exiftool</code>" in a
@@ -1390,6 +1390,7 @@ three droplets to extract information [exiftool must be installed] (thanks to Ro
<li><a href="https://bitbucket.org/P_W999/j-exiftool/wiki/Home">J-ExifTool</a>: Open-source, cross platform Java7 library to read/write Exif tags in images</li>
<li><a href="https://github.com/mceachen/exiftool-vendored">exiftool-vendored</a>: Blazing-fast, cross-platform Node.js access to ExifTool</li>
<li><a href="https://exiftool.org/gui/articles/delphi01.html">How to call ExifTool from Delphi</a>, by Bogdan Hrastnik</li>
+<li><a href="https://github.com/philvl/ZExifTool">Qt5 and Qt6 interface for ExifTool</a>, by Philippe Vianney-Liaud</li>
</ul>
<h3><a name="other_links">Other Links</a></h3>
diff --git a/html/install.html b/html/install.html
index 933e5c41..8729334d 100644
--- a/html/install.html
+++ b/html/install.html
@@ -52,10 +52,10 @@ documentation or some other files of the full distribution.</p>
<h3>Stand-Alone Executable</h3>
<ol>
<li><b>Download</b> the <b>Windows Executable</b> from the <a href="index.html">ExifTool home page</a>.
-<br><span class=lt>(The file you download should be named "<code>exiftool-12.18.zip</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>exiftool-12.19.zip</code>".)</span></li>
<li><b>Extract "<code>exiftool(-k).exe</code>"</b> from the
"<code>.zip</code>" file, and place it <b>on your Desktop</b>.
-<br><span class=lt>(Double-click on "<code>exiftool-12.18.zip</code>" to open
+<br><span class=lt>(Double-click on "<code>exiftool-12.19.zip</code>" to open
the archive, then drag "<code>exiftool(-k).exe</code>" to your Desktop.)</span></li>
</ol>
<p>You can now double-click on "<code>exiftool(-k).exe</code>" to read the
@@ -109,7 +109,7 @@ can be downloaded from
<a href="http://www.activestate.com/activeperl/">activeperl.com</a>.)</p>
<ol>
<li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.18.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.19.tar.gz</code>".)</span></li>
<li><b>Extract the ExifTool files</b> from the archive.
<br><span class=lt>(The archive is a gzipped tar file, and can be opened with
various Windows utilities, including WinZip.)</span></li>
@@ -151,7 +151,7 @@ in the MacOS package. Both versions run natively on PPC and Intel Macs.</p>
<h3>MacOS Package</h3>
<ol>
<li><b>Download</b> the <b>ExifTool MacOS Package</b> from the <a href="index.html">ExifTool home page</a>.
-<br><span class=lt>(The file you download should be named "<code>ExifTool-12.18.dmg</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>ExifTool-12.19.dmg</code>".)</span></li>
<li><b>Install</b> as a normal <b>MacOS package</b>.
<br><span class=lt>(Open the disk image, double-click on the install package, and follow the instructions.
See the second item in the Notes section below if you are stopped with an "unidentified developer" message.)
@@ -167,12 +167,12 @@ See the second item in the Notes section below if you are stopped with an "unide
<ol>
<li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
to your Desktop.
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.18.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.19.tar.gz</code>".)</span></li>
<li><b>Launch</b> the <b>Terminal</b> application from the Utilities folder in your Applications folder.</li>
<li>In the Terminal window, <b>type the following</b>:
<pre class='code'> cd ~/Desktop
- tar -xzf Image-ExifTool-12.18.tar.gz
- cd Image-ExifTool-12.18
+ tar -xzf Image-ExifTool-12.19.tar.gz
+ cd Image-ExifTool-12.19
sudo cp -r exiftool lib /usr/local/bin
</pre>
<span class=lt>(Note: The last step above will require you to enter your
@@ -188,7 +188,7 @@ your Perl version. If both sets of libraries exist, /usr/local/bin/lib takes
precedence for exiftool, but /Library/Perl/#.#.# is the default for any other
Perl scripts.</li>
<li>In MacOS 10.8 or later, you may see this message when you try to open the install package:
-<blockquote class=red>"ExifTool-12.18.pkg" can't be opened because it is from an
+<blockquote class=red>"ExifTool-12.19.pkg" can't be opened because it is from an
unidentified developer.</blockquote> The solution is to control-click on the pkg
then select "Open" from the pop-up menu instead of just double-clicking. An alternative
is to lower the security settings by changing "Allow applications downloaded from" to
@@ -215,11 +215,11 @@ have the wrong "<code>lib</code>" folder.</li>
<ol>
<li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.18.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.19.tar.gz</code>".)</span></li>
<li><b>Unpack the distribution</b> and <b>make it your current directory</b> by typing:
<pre class='code'> cd <i>&lt;your download directory&gt;</i>
- gzip -dc Image-ExifTool-12.18.tar.gz | tar -xf -
- cd Image-ExifTool-12.18
+ gzip -dc Image-ExifTool-12.19.tar.gz | tar -xf -
+ cd Image-ExifTool-12.19
</pre>
<span class=lt>(At this point you may run exiftool by typing
"<code>./exiftool <i>&lt;image file name&gt;</i></code>".)</span></li>
diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm
index 4869c884..a1efa357 100644
--- a/lib/Image/ExifTool.pm
+++ b/lib/Image/ExifTool.pm
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
%jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
-$VERSION = '12.18';
+$VERSION = '12.19';
$RELEASE = '';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
@@ -70,7 +70,7 @@ sub SetFileName($$;$$$);
sub SetSystemTags($$);
sub GetAllTags(;$);
sub GetWritableTags(;$);
-sub GetAllGroups($);
+sub GetAllGroups($;$);
sub GetNewGroups($);
sub GetDeleteGroups();
sub AddUserDefinedTags($%);
@@ -266,6 +266,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
DIB => ['BMP', 'Device Independent Bitmap'],
DIC => 'DICM',
DICM => ['DICOM','Digital Imaging and Communications in Medicine'],
+ DIR => ['DIR', 'Directory'],
DIVX => ['ASF', 'DivX media format'],
DJV => 'DJVU',
DJVU => ['AIFF', 'DjVu image'],
@@ -1270,10 +1271,19 @@ my %systemTagsNotes = (
WritePseudo => 1,
DelCheck => q{"Can't delete"},
Protected => 1, # all writable pseudo-tags must be protected!
- ValueConv => 'sprintf("%.3o", $val & 0777)',
- ValueConvInv => 'oct($val)',
+ ValueConv => 'sprintf("%.3o", $val)',
+ ValueConvInv => 'oct($val & 07777)',
PrintConv => sub {
- my ($mask, $str, $val) = (0400, '', oct(shift));
+ my ($mask, $val) = (0400, oct(shift));
+ my %types = (
+ 0010000 => 'p',
+ 0020000 => 'c',
+ 0040000 => 'd',
+ 0060000 => 'b',
+ 0120000 => 'l',
+ 0140000 => 's',
+ );
+ my $str = $types{$val & 0170000} || '-';
while ($mask) {
foreach (qw(r w x)) {
$str .= $val & $mask ? $_ : '-';
@@ -1284,6 +1294,7 @@ my %systemTagsNotes = (
},
PrintConvInv => sub {
my ($bit, $val, $str) = (8, 0, shift);
+ $str = substr($str, 1) if length($str) == 10;
return undef if length($str) != 9;
while ($bit >= 0) {
foreach (qw(r w x)) {
@@ -2271,7 +2282,7 @@ sub ClearOptions($)
NoPDFList => undef, # flag to avoid splitting PDF List-type tag values
Password => undef, # password for password-protected PDF documents
PrintConv => 1, # flag to enable print conversion
- QuickTimeHandler => undef, # flag to add mdir Handler to newly created Meta box
+ QuickTimeHandler => 1, # flag to add mdir Handler to newly created Meta box
QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
RequestAll => undef, # extract all tags that must be specifically requested
RequestTags => undef, # extra tags to request (on top of those in the tag list)
@@ -2321,7 +2332,7 @@ sub ExtractInfo($;@)
my $fast = $$options{FastScan} || 0;
my $req = $$self{REQ_TAG_LOOKUP};
my $reqAll = $$options{RequestAll} || 0;
- my (%saveOptions, $reEntry, $rsize, $type, @startTime, $saveOrder);
+ my (%saveOptions, $reEntry, $rsize, $type, @startTime, $saveOrder, $isDir);
# check for internal ReEntry option to allow recursive calls to ExtractInfo
if (ref $_[1] eq 'HASH' and $_[1]{ReEntry} and
@@ -2417,6 +2428,8 @@ sub ExtractInfo($;@)
# in Windows cmd shell pipe even though it really failed
$$raf{TESTED} = -1 if $filename eq '-' or $filename =~ /\|$/;
$$self{RAF} = $raf;
+ } elsif ($self->IsDirectory($filename)) {
+ $isDir = 1;
} else {
$self->Error('Error opening file');
}
@@ -2425,28 +2438,30 @@ sub ExtractInfo($;@)
}
}
- while ($raf) {
- my (@stat, $fileSize);
+ while ($raf or $isDir) {
+ my (@stat, $plainFile);
if ($reEntry) {
# we already set these tags
+ } elsif (not $raf) {
+ @stat = stat $filename;
} elsif (not $$raf{FILE_PT}) {
# get file size from image in memory
$self->FoundTag('FileSize', length ${$$raf{BUFF_PT}});
} elsif (-f $$raf{FILE_PT}) {
# get file tags if this is a plain file
- $fileSize = -s _;
@stat = stat _;
- my ($aTime, $mTime, $cTime) = $self->GetFileTime($$raf{FILE_PT});
- $self->FoundTag('FileSize', $fileSize) if defined $fileSize;
- $self->FoundTag('ResourceForkSize', $rsize) if $rsize;
- $self->FoundTag('FileModifyDate', $mTime) if defined $mTime;
- $self->FoundTag('FileAccessDate', $aTime) if defined $aTime;
- my $cTag = $^O eq 'MSWin32' ? 'FileCreateDate' : 'FileInodeChangeDate';
- $self->FoundTag($cTag, $cTime) if defined $cTime;
- $self->FoundTag('FilePermissions', $stat[2]) if defined $stat[2];
+ $plainFile = 1;
} else {
@stat = stat $$raf{FILE_PT};
}
+ my $fileSize = $stat[7];
+ $self->FoundTag('FileSize', $stat[7]) if defined $stat[7];
+ $self->FoundTag('ResourceForkSize', $rsize) if $rsize;
+ $self->FoundTag('FileModifyDate', $stat[9]) if defined $stat[9];
+ $self->FoundTag('FileAccessDate', $stat[8]) if defined $stat[8];
+ my $cTag = $^O eq 'MSWin32' ? 'FileCreateDate' : 'FileInodeChangeDate';
+ $self->FoundTag($cTag, $stat[10]) if defined $stat[10];
+ $self->FoundTag('FilePermissions', $stat[2]) if defined $stat[2];
# extract more system info if SystemTags option is set
if (@stat) {
my $sys = $$options{SystemTags} || ($reqAll and not defined $$options{SystemTags});
@@ -2486,11 +2501,18 @@ sub ExtractInfo($;@)
if ($crDate or $mdItem or $xattr) {
require Image::ExifTool::MacOS;
Image::ExifTool::MacOS::GetFileCreateDate($self, $filename) if $crDate;
- Image::ExifTool::MacOS::ExtractMDItemTags($self, $filename) if $mdItem;
+ Image::ExifTool::MacOS::ExtractMDItemTags($self, $filename) if $mdItem and $plainFile;
Image::ExifTool::MacOS::ExtractXAttrTags($self, $filename) if $xattr;
}
}
-
+ # do whatever else we can with directories, then return
+ if ($isDir or (defined $stat[2] and ($stat[2] & 0170000) == 0040000)) {
+ $self->FoundTag('FileType', 'DIR');
+ $self->FoundTag('FileTypeExtension', '');
+ $self->BuildCompositeTags() if $$options{Composite};
+ $raf->Close() if $raf;
+ return 1;
+ }
# get list of file types to check
my ($tiffType, %noMagic, $recognizedExt);
my $ext = $$self{FILE_EXT} = GetFileExtension($realname);
@@ -4079,7 +4101,14 @@ sub GetFileTime($$)
# open file by name if necessary
unless (ref $file) {
local *FH;
- $self->Open(\*FH, $file) or $self->Warn("GetFileTime error for '${file}'"), return ();
+ unless ($self->Open(\*FH, $file)) {
+ if ($self->IsDirectory($file)) {
+ my @rtn = (stat $file)[8, 9, 10];
+ return @rtn if defined $rtn[0];
+ }
+ $self->Warn("GetFileTime error for '${file}'");
+ return ();
+ }
$file = *FH; # (not \*FH, so *FH will be kept open until $file goes out of scope)
}
# on Windows, try to work around incorrect file times when daylight saving time is in effect
diff --git a/lib/Image/ExifTool.pod b/lib/Image/ExifTool.pod
index e7c054fb..2f2dfcb0 100644
--- a/lib/Image/ExifTool.pod
+++ b/lib/Image/ExifTool.pod
@@ -737,8 +737,8 @@ group names.
=item HexTagIDs
-Use hexadecimal instead of decimal for the family 7 group names of tags with
-numerical ID's.
+Return hexadecimal instead of decimal for the family 7 group names of tags
+with numerical ID's.
=item HtmlDump
@@ -843,8 +843,9 @@ print conversion for writing. Default is 1.
Flag set to add an 'mdir' Handler to a newly created Meta box when adding
QuickTime ItemList tags. Adobe Bridge does not add this Handler, but it is
-commonly found in samples from other software, so it is possible that this
-could affect the interoperability of ItemList tags. Default is undef.
+commonly found in samples from other software, and it has been reported that
+Apple QuickTime Player and Photos.apps will ignore ItemList tags if this is
+missing. Default is 1.
=item QuickTimeUTC
@@ -2049,6 +2050,7 @@ The group family numbers are currently available:
4) Instance Number (eg. Copy1, Copy2, Copy3...)
5) Metadata Path (eg. JPEG-APP1-IFD0-ExifIFD)
6) EXIF/TIFF Format (eg. int8u, int32u, undef, string)
+ 7) Tag ID (eg. ID-271, ID-rights, ID-a9aut)
Families 0 and 1 are based on the file structure, and are similar except
that family 1 is more specific and sub-divides some groups to give more
@@ -2092,13 +2094,14 @@ Family 6 is currently used only for EXIF/TIFF metadata, and gives the format
type of the extracted value. Generated only if the L</SaveFormat> option is
used when extracting.
-Family 7 is used for tag ID's. The group names are "ID-" followed by the
-tag ID with characters other than [-_A-Za-z0-9] converted to hex. Numerical
-tag ID's are given in hex if the L</HexTagIDs> option is set. When
-specifying a family 7 group name, numerical ID's may be in hex or decimal,
-and non-numercal ID's may or may not have characters other than
-[-_A-Za-z0-9] converted to hex. Note that unlike other group names, family
-7 group names are case sensitive (except for the leading "ID-").
+Family 7 is used for tag ID's. The group names are the actual tag ID's,
+with a leading "ID-" string. Non-numerical ID's have characters other than
+[-_A-Za-z0-9] converted to hex. Numerical tag ID's are returned in hex if
+the L</HexTagIDs> option is set, otherwise decimal is used. When specifying
+a family 7 group name, numerical ID's may be in hex or decimal, and
+non-numerical ID's may or may not have characters other than [-_A-Za-z0-9]
+converted to hex. Note that unlike other group names, the tag ID's of
+family 7 group names are case sensitive (but the leading "ID-" is not).
See L</GetAllGroups [static]> for complete lists of group names.
@@ -2255,7 +2258,7 @@ Get list of all group names in specified family.
=item Inputs:
-0) Group family number (0-4)
+0) Group family number (0-7)
=item Return Values:
@@ -2344,12 +2347,16 @@ rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
=item Family 7 (Tag ID):
-ID-xxx (where xxx is the tag ID. Numerical ID's are given in hex with a
-leading "0x" if the HexTagIDs option is set, as are characters in
-non-numerical ID's which are not valid in a group name)
+ID-xxx (Where xxx is the tag ID. Numerical ID's are returned in hex with a
+leading "0x" if the HexTagIDs option is set, or decimal otherwise.
+Characters in non-numerical ID's which are not valid in a group name are
+returned as 2 hex digits.)
=back
+Note: This function may also be called as an ExifTool member function to
+allow the HexTagIDs option to be set when retrieving family 7 group names.
+
=head2 GetDeleteGroups [static]
Get list of all deletable group names.
diff --git a/lib/Image/ExifTool/Apple.pm b/lib/Image/ExifTool/Apple.pm
index f1030df8..db3fad90 100644
--- a/lib/Image/ExifTool/Apple.pm
+++ b/lib/Image/ExifTool/Apple.pm
@@ -15,7 +15,7 @@ use vars qw($VERSION);
use Image::ExifTool::Exif;
use Image::ExifTool::PLIST;
-$VERSION = '1.04';
+$VERSION = '1.05';
# Apple iPhone metadata (ref PH)
%Image::ExifTool::Apple::Main = (
@@ -72,7 +72,8 @@ $VERSION = '1.04';
# 0x000f - int32s: 2,3
# 0x0010 - int32s: 1
0x0011 => {
- Name => 'ContentIdentifier', #forum8750
+ Name => 'MediaGroupUUID', #NealKrawetz private communication
+ # (changed in 12.19 from Name => 'ContentIdentifier', #forum8750)
Writable => 'string',
},
# 0x0014 - int32s: 1,2,3,4,5 (iPhone 6s, iOS 6.1)
diff --git a/lib/Image/ExifTool/BuildTagLookup.pm b/lib/Image/ExifTool/BuildTagLookup.pm
index 50deee71..3d63456c 100644
--- a/lib/Image/ExifTool/BuildTagLookup.pm
+++ b/lib/Image/ExifTool/BuildTagLookup.pm
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
use Image::ExifTool::Validate;
use Image::ExifTool::MacOS;
-$VERSION = '3.41';
+$VERSION = '3.42';
@ISA = qw(Exporter);
sub NumbersFirst($$);
@@ -431,11 +431,13 @@ L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags>, and
finally in L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags>,
but this order may be changed by setting the PREFERRED level of the
appropriate table in the config file (see
-L<example.config|../config.html#PREF> in the full distribution for
-an example). ExifTool currently writes only top-level metadata in
-QuickTime-based files; it extracts other track-specific and timed
-metadata, but can not yet edit tags in these locations (with the
-exception of track-level date/time tags).
+L<example.config|../config.html#PREF> in the full distribution for an
+example). Note that some tags with the same name but different ID's may
+exist in the same location, but the family 7 group names may be used to
+differentiate these. ExifTool currently writes only top-level metadata in
+QuickTime-based files; it extracts other track-specific and timed metadata,
+but can not yet edit tags in these locations (with the exception of
+track-level date/time tags).
Alternate language tags may be accessed for
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
@@ -460,8 +462,8 @@ local time when extracting.
When writing string-based date/time tags, the system time zone is added if
the PrintConv option is enabled and no time zone is specified. This is
-because Apple software may display a crazy values if the time zone is
-missing for some tags.
+because Apple software may display crazy values if the time zone is missing
+for some tags.
See
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
@@ -699,6 +701,11 @@ my %shortcutNotes = (
large binary data tags which may be excluded to reduce memory usage if
memory limitations are a problem
},
+ 'ls-l' => q{
+ mimics columns shown by Unix "ls -l" command. Includes some tags which are
+ extracted only if the API L<SystemTags|../ExifTool.html#SystemTags> option
+ is enabled
+ },
);
diff --git a/lib/Image/ExifTool/Exif.pm b/lib/Image/ExifTool/Exif.pm
index 57527189..e6257525 100644
--- a/lib/Image/ExifTool/Exif.pm
+++ b/lib/Image/ExifTool/Exif.pm
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::MakerNotes;
-$VERSION = '4.32';
+$VERSION = '4.33';
sub ProcessExif($$$);
sub WriteExif($$$);
@@ -1452,6 +1452,7 @@ my %opcodeInfo = (
1 => 'Sony Uncompressed 12-bit RAW', #IB
2 => 'Sony Compressed RAW', # (lossy, ref IB)
3 => 'Sony Lossless Compressed RAW', #IB
+ 4 => 'Sony Lossless Compressed RAW 2', #JR (ILCE-1)
},
},
# 0x7001 - int16u[1] (in SubIFD of Sony ARW images) - values: 0,1
@@ -1472,6 +1473,7 @@ my %opcodeInfo = (
PrintConv => {
256 => 'Off',
257 => 'Auto',
+ 272 => 'Auto (ILCE-1)', #JR
511 => 'No correction params available',
},
},
@@ -5796,7 +5798,8 @@ sub ProcessExif($$$)
$numEntries = Get16u($dataPt, $dirStart);
} else {
$et->Warn("Bad $dir directory", $inMakerNotes);
- return 0 unless $inMakerNotes and $dirLen >= 14;
+ return 0 unless $inMakerNotes and $dirLen >= 14 and $dirStart >= 0 and
+ $dirStart + $dirLen <= length($$dataPt);
$dirSize = $dirLen;
$numEntries = int(($dirSize - 2) / 12); # read what we can
Set16u($numEntries, $dataPt, $dirStart);
diff --git a/lib/Image/ExifTool/FITS.pm b/lib/Image/ExifTool/FITS.pm
index 71e737e4..ac372656 100644
--- a/lib/Image/ExifTool/FITS.pm
+++ b/lib/Image/ExifTool/FITS.pm
@@ -14,7 +14,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.00';
+$VERSION = '1.01';
# FITS tags (ref 1)
%Image::ExifTool::FITS::Main = (
@@ -36,6 +36,8 @@ $VERSION = '1.00';
'TIME-OBS'=> { Name => 'ObservationTime', Groups => { 2 => 'Time' } },
'DATE-END'=> { Name => 'ObservationDateEnd', Groups => { 2 => 'Time' } },
'TIME-END'=> { Name => 'ObservationTimeEnd', Groups => { 2 => 'Time' } },
+ COMMENT => 'Comment',
+ HISTORY => 'History',
);
#------------------------------------------------------------------------------
@@ -67,7 +69,8 @@ sub ProcessFITS($$)
last if $key eq 'END';
# make sure the key is valid
$key =~ /^[-_A-Z0-9]*$/ or $et->Warn('Format error in FITS header'), last;
- next unless substr($buff,8,2) eq '= '; # ignore comment lines
+ # ignore lines other than tags, COMMENT or HISTORY
+ next unless substr($buff,8,2) eq '= ' or $key eq 'COMMENT' or $key eq 'HISTORY';
# save tag name (avoiding potential conflict with ExifTool variables)
$tag = $Image::ExifTool::specialTags{$key} ? "_$key" : $key;
# add to tag table if necessary
diff --git a/lib/Image/ExifTool/ICC_Profile.pm b/lib/Image/ExifTool/ICC_Profile.pm
index d8ae97e7..998e7704 100644
--- a/lib/Image/ExifTool/ICC_Profile.pm
+++ b/lib/Image/ExifTool/ICC_Profile.pm
@@ -24,7 +24,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.35';
+$VERSION = '1.36';
sub ProcessICC($$);
sub ProcessICC_Profile($$$);
@@ -1225,7 +1225,7 @@ sub ProcessICC_Profile($$$)
my $type = substr($$dataPt, $valuePtr, 4);
#### eval Validate ($type)
if (defined $$subdir{Validate} and not eval $$subdir{Validate}) {
- $et->Warn("Invalid $name data");
+ $et->Warn("Invalid ICC $name data");
} else {
$et->ProcessDirectory(\%subdirInfo, $newTagTable, $$subdir{ProcessProc});
}
diff --git a/lib/Image/ExifTool/QuickTime.pm b/lib/Image/ExifTool/QuickTime.pm
index ed04991e..2a395519 100644
--- a/lib/Image/ExifTool/QuickTime.pm
+++ b/lib/Image/ExifTool/QuickTime.pm
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
-$VERSION = '2.58';
+$VERSION = '2.59';
sub ProcessMOV($$;$);
sub ProcessKeys($$$);
@@ -3000,9 +3000,9 @@ my %eeBox2 = (
3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
country code to the tag name (eg. "ItemList:Title-fra" or
"ItemList::Title-fra-FR"). When creating a new Meta box to contain the
- ItemList directory, by default ExifTool does not specify a
- L<Handler|Image::ExifTool::TagNames/QuickTime Handler Tags>, but the
- API L<QuickTimeHandler|../ExifTool.html#QuickTimeHandler> option may be used to include an 'mdir' Handler box.
+ ItemList directory, by default ExifTool adds an 'mdir' (Metadata) Handler
+ box because Apple software may ignore ItemList tags otherwise, but the API
+ L<QuickTimeHandler|../ExifTool.html#QuickTimeHandler> option may be set to 0 to avoid this.
},
# in this table, binary 1 and 2-byte "data"-type tags are interpreted as
# int8u and int16u. Multi-byte binary "data" tags are extracted as binary data.
diff --git a/lib/Image/ExifTool/Shortcuts.pm b/lib/Image/ExifTool/Shortcuts.pm
index 92bae893..23552daf 100644
--- a/lib/Image/ExifTool/Shortcuts.pm
+++ b/lib/Image/ExifTool/Shortcuts.pm
@@ -265,6 +265,15 @@ $VERSION = '1.65';
'XMP',
'ZoomedPreviewImage',
],
+ 'ls-l' => [
+ 'FilePermissions',
+ 'FileHardLinks',
+ 'FileUserID',
+ 'FileGroupID',
+ 'FileSize#',
+ 'FileModifyDate',
+ 'FileName',
+ ],
);
#------------------------------------------------------------------------------
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index dc0cb9b4..f1980e91 100644
--- a/lib/Image/ExifTool/Sony.pm
+++ b/lib/Image/ExifTool/Sony.pm
@@ -222,6 +222,7 @@ sub PrintInvLensSpec($;$$);
50522 => 'Sigma 105mm F2.8 DG DN MACRO | A', #JR (020)
50523 => 'Sigma 65mm F2 DG DN | C', #IB (020)
50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
+ 50525 => 'Sigma 24mm F3.5 DG DN | C', #JR (021)
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
@@ -1405,6 +1406,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
PrintConv => {
0 => 'Compressed RAW',
1 => 'Uncompressed RAW',
+ 2 => 'Lossless Compressed RAW', #JR (NC) seen for ILCE-1
65535 => 'n/a', # seen for ILCE-7SM3 JPEG-only
},
},
diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm
index 2a483bef..62ef5f95 100644
--- a/lib/Image/ExifTool/TagLookup.pm
+++ b/lib/Image/ExifTool/TagLookup.pm
@@ -1711,7 +1711,6 @@ my %tagLookup = (
'contentcreatedate' => { 362 => "\xa9day", 370 => ['@day',"\xa9day"] },
'contentdistributorid' => { 370 => 'cdis' },
'contentid' => { 370 => 'ccid' },
- 'contentidentifier' => { 1 => 0x11 },
'contentlocationcode' => { 129 => 0x1a },
'contentlocationname' => { 129 => 0x1b },
'contenttype' => { 483 => 'contentType' },
@@ -3974,6 +3973,7 @@ my %tagLookup = (
'mediaconstraints' => { 297 => 'MediaConstraints' },
'mediacreatedate' => { 366 => 0x1 },
'mediaeventiddate' => { 457 => 'MediaEventIdDate' },
+ 'mediagroupuuid' => { 1 => 0x11 },
'mediamodifydate' => { 366 => 0x2 },
'mediasummarycode' => { 297 => 'MediaSummaryCode' },
'mediatype' => { 362 => 'stik' },
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index e79605f2..7a2fc251 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
=head1 TAG TABLES
The tables listed below give the names of all tags recognized by ExifTool.
-They contain a total of 24077 tags, with 15588 unique tag names.
+They contain a total of 24079 tags, with 15589 unique tag names.
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -5886,7 +5886,7 @@ Tags extracted from the maker notes of iPhone images.
0x0008 AccelerationVector rational64s[3]
0x000a HDRImageType int32s
0x000b BurstUUID string
- 0x0011 ContentIdentifier string
+ 0x0011 MediaGroupUUID string
0x0015 ImageUniqueID string
=head3 Apple RunTime Tags
@@ -25697,11 +25697,13 @@ L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags>, and
finally in L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags>,
but this order may be changed by setting the PREFERRED level of the
appropriate table in the config file (see
-example.config in the full distribution for
-an example). ExifTool currently writes only top-level metadata in
-QuickTime-based files; it extracts other track-specific and timed
-metadata, but can not yet edit tags in these locations (with the
-exception of track-level date/time tags).
+example.config in the full distribution for an
+example). Note that some tags with the same name but different ID's may
+exist in the same location, but the family 7 group names may be used to
+differentiate these. ExifTool currently writes only top-level metadata in
+QuickTime-based files; it extracts other track-specific and timed metadata,
+but can not yet edit tags in these locations (with the exception of
+track-level date/time tags).
Alternate language tags may be accessed for
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
@@ -25726,8 +25728,8 @@ local time when extracting.
When writing string-based date/time tags, the system time zone is added if
the PrintConv option is enabled and no time zone is specified. This is
-because Apple software may display a crazy values if the time zone is
-missing for some tags.
+because Apple software may display crazy values if the time zone is missing
+for some tags.
See
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
@@ -26167,9 +26169,9 @@ this table support alternate languages which are accessed by adding a
3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
country code to the tag name (eg. "ItemList:Title-fra" or
"ItemList::Title-fra-FR"). When creating a new Meta box to contain the
-ItemList directory, by default ExifTool does not specify a
-L<Handler|Image::ExifTool::TagNames/QuickTime Handler Tags>, but the
-API QuickTimeHandler option may be used to include an 'mdir' Handler box.
+ItemList directory, by default ExifTool adds an 'mdir' (Metadata) Handler
+box because Apple software may ignore ItemList tags otherwise, but the API
+QuickTimeHandler option may be set to 0 to avoid this.
Tag ID Tag Name Writable
------ -------- --------
@@ -33740,9 +33742,11 @@ L<https://fits.gsfc.nasa.gov/fits_standard.html> for the specification.
------ -------- --------
'AUTHOR' Author no
'BACKGRND' Background no
+ 'COMMENT' Comment no
'DATE' CreateDate no
'DATE-END' ObservationDateEnd no
'DATE-OBS' ObservationDate no
+ 'HISTORY' History no
'INSTRUME' Instrument no
'OBJECT' Object no
'OBSERVER' Observer no
@@ -35656,6 +35660,13 @@ for more details.
InteropIFD:InteropVersion
InteropIFD:RelatedImageWidth
InteropIFD:RelatedImageHeight
+ ls-l FilePermissions yes
+ FileHardLinks
+ FileUserID
+ FileGroupID
+ FileSize#
+ FileModifyDate
+ FileName
=head2 MWG Tags
diff --git a/lib/Image/ExifTool/WriteExif.pl b/lib/Image/ExifTool/WriteExif.pl
index 00caa724..2d5adfeb 100644
--- a/lib/Image/ExifTool/WriteExif.pl
+++ b/lib/Image/ExifTool/WriteExif.pl
@@ -548,7 +548,7 @@ sub WriteExif($$$)
my $mustRead;
if ($dirStart < 0 or $dirStart > $dataLen-2) {
$mustRead = 1;
- } elsif ($dirLen > 2) {
+ } elsif ($dirLen >= 2) {
my $len = 2 + 12 * Get16u($dataPt, $dirStart);
$mustRead = 1 if $dirStart + $len > $dataLen;
}
diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl
index 63f1e4d3..9dba6e03 100644
--- a/lib/Image/ExifTool/Writer.pl
+++ b/lib/Image/ExifTool/Writer.pl
@@ -2639,12 +2639,14 @@ GWTInfo: foreach $tagInfo (@infoArray) {
#------------------------------------------------------------------------------
# Get list of all group names
-# Inputs: 0) Group family number
+# Inputs: 0) [optional] ExifTool ref, 1) Group family number
# Returns: List of group names (sorted alphabetically)
-sub GetAllGroups($)
+sub GetAllGroups($;$)
{
local $_;
my $family = shift || 0;
+ my $self;
+ ref $family and $self = $family, $family = shift || 0;
$family == 3 and return('Doc#', 'Main');
$family == 4 and return('Copy#');
@@ -2663,9 +2665,23 @@ sub GetAllGroups($)
$allGroups{$grp} = 1 if ($grps = $$table{GROUPS}) and ($grp = $$grps{$family});
foreach $tag (TagTableKeys($table)) {
my @infoArray = GetTagInfoList($table, $tag);
- foreach $tagInfo (@infoArray) {
- next unless ($grps = $$tagInfo{Groups}) and ($grp = $$grps{$family});
- $allGroups{$grp} = 1;
+ if ($family == 7) {
+ foreach $tagInfo (@infoArray) {
+ my $id = $$tagInfo{TagID};
+ if (not defined $id) {
+ $id = ''; # (just to be safe)
+ } elsif ($id =~ /^\d+$/) {
+ $id = sprintf('0x%x', $id) if $self and $$self{OPTIONS}{HexTagIDs};
+ } else {
+ $id =~ s/([^-_A-Za-z0-9])/sprintf('%.2x',ord $1)/ge;
+ }
+ $allGroups{'ID-' . $id} = 1;
+ }
+ } else {
+ foreach $tagInfo (@infoArray) {
+ next unless ($grps = $$tagInfo{Groups}) and ($grp = $$grps{$family});
+ $allGroups{$grp} = 1;
+ }
}
}
}
@@ -6632,7 +6648,17 @@ sub SetFileTime($$;$$$$)
# open file by name if necessary
unless (ref $file) {
# (file will be automatically closed when *FH goes out of scope)
- $self->Open(\*FH, $file, '+<') or $self->Warn('Error opening file for update'), return 0;
+ unless ($self->Open(\*FH, $file, '+<')) {
+ my $success;
+ if (defined $atime or defined $mtime) {
+ my ($a, $m, $c) = $self->GetFileTime($file);
+ $atime = $a unless defined $atime;
+ $mtime = $m unless defined $mtime;
+ $success = eval { utime($atime, $mtime, $file) } if defined $atime and defined $mtime;
+ }
+ $self->Warn('Error opening file for update') unless $success;
+ return $success;
+ }
$saveFile = $file;
$file = \*FH;
}
diff --git a/perl-Image-ExifTool.spec b/perl-Image-ExifTool.spec
index 077a1580..9a4cdb65 100644
--- a/perl-Image-ExifTool.spec
+++ b/perl-Image-ExifTool.spec
@@ -1,6 +1,6 @@
Summary: perl module for image data extraction
Name: perl-Image-ExifTool
-Version: 12.18
+Version: 12.19
Release: 1
License: Artistic/GPL
Group: Development/Libraries/Perl
diff --git a/pp_build_exe.args b/pp_build_exe.args
index a8447deb..f1d2d7d1 100644
--- a/pp_build_exe.args
+++ b/pp_build_exe.args
@@ -21,10 +21,10 @@
# 10) Copy zip archive to web servers.
# 11) Update zip file version in link and text of html/index.html.
#------------------------------------------------------------------------------
--T exiftool-12.18
-#--info=FileVersion=12.1.8.0
-#--info=ProductVersion=12.1.8.0
-##"--info=Build Date=2021:02:09 10:21:42-05:00"
+-T exiftool-12.19
+#--info=FileVersion=12.1.9.0
+#--info=ProductVersion=12.1.9.0
+##"--info=Build Date=2021:02:18 15:13:32-05:00"
##"--info=Bundled Perl Version=ActivePerl 5.24.0"
##"--info=LegalCopyright=Copyright (c) 2003-2021, Phil Harvey"
##"--info=ProductName=ExifTool"
diff --git a/t/FITS_2.out b/t/FITS_2.out
index f11a80ec..8d8f6db0 100644
--- a/t/FITS_2.out
+++ b/t/FITS_2.out
@@ -1,17 +1,22 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.19
[File, System, Other] FileName - File Name: FITS.fits
[File, System, Other] Directory - Directory: t/images
[File, System, Other] FileSize - File Size: 3.0 KiB
[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:07 12:31:28-05:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:27-05:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2021:02:18 14:49:22-05:00
[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:03:08 22:54:13-05:00
-[File, System, Other] FilePermissions - File Permissions: rw-r--r--
+[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
[File, File, Other] FileType - File Type: FITS
[File, File, Other] FileTypeExtension - File Type Extension: fits
[File, File, Other] MIMEType - MIME Type: image/fits
[FITS, FITS, Image] BITPIX - Bitpix: 8
[FITS, FITS, Image] NAXIS - Naxis: 0
[FITS, FITS, Image] EXTEND - Extend: T
+[FITS, FITS, Image] COMMENT - Comment: +------------------+
+[FITS, FITS, Image] COMMENT - Comment: | HEXTE INDEX |
+[FITS, FITS, Image] COMMENT - Comment: | XTE - FITS File |
+[FITS, FITS, Image] COMMENT - Comment: | Generated by XFF |
+[FITS, FITS, Image] COMMENT - Comment: +------------------+
[FITS, FITS, Image] ORIGIN - Origin: XTE-SOC
[FITS, FITS, Image] CREATOR - Creator: XFF - Revision: 5.3.2
[FITS, FITS, Time] DATE - Create Date: 28/01/97
@@ -22,6 +27,7 @@
[FITS, FITS, Image] TIMESYS - Timesys: TT
[FITS, FITS, Image] MJDREFI - Mjdrefi: 49353
[FITS, FITS, Image] MJDREFF - Mjdreff: 6.965740740000e-04
+[FITS, FITS, Image] COMMENT - Comment: MJD = JD - 2400000.5
[FITS, FITS, Image] TIMEZERO - Timezero: 3.37843167e+00
[FITS, FITS, Image] TIMEUNIT - Timeunit: s
[FITS, FITS, Image] TIMEREF - Timeref: LOCAL
diff --git a/t/QuickTime_10.out b/t/QuickTime_10.out
index ee85c56e..a348d797 100644
--- a/t/QuickTime_10.out
+++ b/t/QuickTime_10.out
@@ -13,10 +13,11 @@
[QuickTime, QuickTime, Video] 22 - Selection Duration: 0 s
[QuickTime, QuickTime, Video] 23 - Current Time: 0 s
[QuickTime, QuickTime, Video] 24 - Next Track ID: 3
+[QuickTime, QuickTime, Video] 8 - Handler Type: Metadata
[QuickTime, ItemList, Audio] ŠART - Artist: me
[QuickTime, UserData, Video] Šarg - Arranger: arr
[QuickTime, QuickTime, Video] 8 - Handler Type: Metadata Tags
[QuickTime, Keys, Other] 1.1 - Director: dir
[QuickTime, QuickTime, Video] mdat-size - Media Data Size: 0
-[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 2002
+[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 2034
[QuickTime, QuickTime, Video] mdat - Media Data: (Binary data 0 bytes)
diff --git a/t/QuickTime_14.out b/t/QuickTime_14.out
index 7b18d825..ee5de54c 100644
--- a/t/QuickTime_14.out
+++ b/t/QuickTime_14.out
@@ -13,9 +13,10 @@
[QuickTime, QuickTime, Video] 22 - Selection Duration: 0 s
[QuickTime, QuickTime, Video] 23 - Current Time: 0 s
[QuickTime, QuickTime, Video] 24 - Next Track ID: 3
+[QuickTime, QuickTime, Video] 8 - Handler Type: Metadata
[QuickTime, ItemList, Audio] Špub - Publisher: pub
[QuickTime, QuickTime, Video] mdat-size - Media Data Size: 0
-[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 4711
+[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 4743
[QuickTime, QuickTime, Video] mdat - Media Data: (Binary data 0 bytes)
-[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.81
+[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.19
[XMP, XMP-dc, Author] publisher - Publisher: pub
diff --git a/windows_exiftool b/windows_exiftool
index 425c4e59..10deb1db 100755
--- a/windows_exiftool
+++ b/windows_exiftool
@@ -10,7 +10,7 @@
use strict;
require 5.004;
-my $version = '12.18';
+my $version = '12.19';
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
my $exeDir;
@@ -158,6 +158,7 @@ my $isWriting; # flag set if we are writing tags
my $joinLists; # flag set to join list values into a single string
my $json; # flag for JSON/PHP output format (1=JSON, 2=PHP)
my $langOpt; # language option
+my $listDir; # treat a directory as a regular file
my $listItem; # item number for extracting single item from a list
my $listSep; # list item separator (', ' by default)
my $mt; # main ExifTool object
@@ -707,7 +708,7 @@ for (;;) {
} else { # 'g(\d*)'
# list all groups in specified family
my $family = $2 || 0;
- PrintTagList("Groups in family $family", GetAllGroups($family));
+ PrintTagList("Groups in family $family", $mt->GetAllGroups($family));
}
next;
}
@@ -892,6 +893,7 @@ for (;;) {
}
(/^D$/ or $a eq 'decimal') and $showTagID = 'D', next;
/^delete_original(!?)$/i and $deleteOrig = ($1 ? 2 : 1), next;
+ /^list_dir$/i and $listDir = 1, next;
(/^e$/ or $a eq '-composite') and $mt->Options(Composite => 0), next;
(/^-e$/ or $a eq 'composite') and $mt->Options(Composite => 1), next;
(/^E$/ or $a eq 'escapehtml') and require Image::ExifTool::HTML and $escapeHTML = 1, next;
@@ -2708,7 +2710,7 @@ sub SetImageInfo($$$)
return 0;
}
}
- if (not $isStdout and ($et->IsDirectory($outfile) or $outfile =~ /\/$/)) {
+ if (not $isStdout and (($et->IsDirectory($outfile) and not $listDir) or $outfile =~ /\/$/)) {
$outfile .= '/' unless $outfile =~ /\/$/;
my $name = $file;
$name =~ s/^.*\///s; # remove directory name
@@ -2911,6 +2913,10 @@ sub SetImageInfo($$$)
unless (defined $tmpFile) {
# count the number of tags and pseudo-tags we are writing
my ($numSet, $numPseudo) = $et->CountNewValues();
+ if ($numSet != $numPseudo and $et->IsDirectory($file)) {
+ print $vout "Can't write real tags to a directory - $infile\n" if defined $verbose;
+ $numSet = $numPseudo;
+ }
if ($et->Exists($file)) {
unless ($numSet) {
# no need to write if no tags set
@@ -3585,7 +3591,7 @@ sub ProcessFiles($;$)
++$progressCount;
$progStr = " [$progressCount/$progressMax]" if $progress;
}
- if ($et->IsDirectory($file)) {
+ if ($et->IsDirectory($file) and not $listDir) {
$multiFile = $validFile = 1;
ScanDir($et, $file, $list);
} elsif ($filterFlag and not AcceptFile($file)) {
@@ -3689,7 +3695,7 @@ sub ScanDir($$;$)
$dir =~ /\/$/ or $dir .= '/'; # make sure directory name ends with '/'
foreach $file (@fileList) {
my $path = "$dir$file";
- if ($et->IsDirectory($path)) {
+ if ($et->IsDirectory($path) and not $listDir) {
next unless $recurse;
# ignore directories starting with "." by default
next if $file =~ /^\./ and ($recurse == 1 or $file eq '.' or $file eq '..');
@@ -4634,6 +4640,7 @@ OPTIONS
-echo[NUM] TEXT Echo text to stdout or stderr
-efile[NUM][!] ERRFILE Save names of files with errors
-execute[NUM] Execute multiple commands on one line
+ -list_dir List directories, not their contents
-srcfile FMT Process a different source file
-stay_open FLAG Keep reading -@ argfile even after EOF
-userParam PARAM[[^]=[VAL]] Set user parameter (API UserParam opt)
@@ -5393,7 +5400,7 @@ OPTIONS
produces output like this:
- -- Generated by ExifTool 12.18 --
+ -- Generated by ExifTool 12.19 --
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
@@ -6352,6 +6359,20 @@ OPTIONS
feature. If a *NUM* is specified, the -q option no longer
suppresses the output "{readyNUM}" message.
+ -list_dir
+ List directories themselves instead of their contents. This option
+ effectively causes directories to be treated as normal files when
+ reading and writing. For example, with this option the output of
+ the "ls -la" command on Mac/Linux may be approximated by this
+ exiftool command:
+
+ exiftool -list_dir -T -ls-l -api systemtags -fast5 .* *
+
+ (The -T option formats the output in tab-separated columns, -ls-l
+ is a shortcut tag, the API SystemTags option is required to extract
+ some necessary tags, and the -fast5 option is added for speed since
+ only system tags are being extracted.)
+
-srcfile *FMT*
Specify a different source file to be processed based on the name
of the original *FILE*. This may be useful in some special