exiftool_vendored 12.32.0 → 12.36.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +77 -3
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +57 -39
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -2
- data/bin/lib/Image/ExifTool/CBOR.pm +85 -31
- data/bin/lib/Image/ExifTool/Canon.pm +28 -3
- data/bin/lib/Image/ExifTool/Charset.pm +2 -0
- data/bin/lib/Image/ExifTool/Exif.pm +109 -3
- data/bin/lib/Image/ExifTool/FLIR.pm +33 -8
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
- data/bin/lib/Image/ExifTool/JSON.pm +4 -2
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +111 -12
- data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +637 -16
- data/bin/lib/Image/ExifTool/NikonCustom.pm +5 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +67 -11
- data/bin/lib/Image/ExifTool/Olympus.pm +5 -1
- data/bin/lib/Image/ExifTool/PDF.pm +5 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +21 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
- data/bin/lib/Image/ExifTool/README +6 -2
- data/bin/lib/Image/ExifTool/Sony.pm +31 -11
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +9 -4
- data/bin/lib/Image/ExifTool/TagLookup.pm +5054 -4455
- data/bin/lib/Image/ExifTool/TagNames.pod +1185 -23
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -0
- data/bin/lib/Image/ExifTool/Writer.pl +45 -3
- data/bin/lib/Image/ExifTool/XMP.pm +111 -25
- data/bin/lib/Image/ExifTool/XMP2.pl +3 -1
- data/bin/lib/Image/ExifTool.pm +83 -19
- data/bin/lib/Image/ExifTool.pod +9 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 860e8f065a884ee45be833825836c1ffc919cae259edd1c4436c87524e714f49
|
4
|
+
data.tar.gz: b3fc9dd82c202b55b7a6952938996255560035b8cf45645e00a42c9d9a05747f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b233fba0025620a972fee0c757fd1176ce3a64f208441a9bc95169c13d57270720f3fe2808643ab301feaacccc0ae471244374ccfba1dc34e885efc64b180ec
|
7
|
+
data.tar.gz: fd4dfe483295162f230ffae226867295c79f89848af21c0f0b69fe95924bbb0e09d944dc6af71acded089c4b2230687f23a6c92cd2d471a64eda08d54a6bc8a4
|
data/bin/Changes
CHANGED
@@ -7,6 +7,77 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 12.30. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Nov. 16, 2021 - Version 12.36
|
11
|
+
|
12
|
+
- IMPORTANT: Fixed bug introduced in 12.35 which corrupted JPEG 2000 images
|
13
|
+
when removing all metadata with -all=
|
14
|
+
- Added feature to bypass processing of specified XMP namespaces and
|
15
|
+
properties (to improve performance in cases where the XMP suffers from
|
16
|
+
Adobe-editing bloat)
|
17
|
+
- Added a number of new XMP tags used by Lightroom 11.0
|
18
|
+
- Decode a number of new Nikon tags (thanks Warren Hatch)
|
19
|
+
- Made the Composite GPSPosition tag writable
|
20
|
+
- Fixed erroneous "Skipped unknown bytes after JPEG SOS" warning
|
21
|
+
- Fixed group for new writable Jpeg2000 color tags in -listx output
|
22
|
+
- Fixed problem finding files in windows when using wildcards in file name and
|
23
|
+
a drive letter with no slash
|
24
|
+
|
25
|
+
Nov. 11, 2021 - Version 12.35
|
26
|
+
|
27
|
+
- Added ability to write ICC_Profile (and other color specifications) to
|
28
|
+
Jpeg2000 images
|
29
|
+
- Added %o code to -W option format string
|
30
|
+
- Added %f code to -d option for fractional seconds
|
31
|
+
- Added a couple of new Sony LensType values (thanks Jos Roost)
|
32
|
+
- Added a new CanonModelID (thanks Norbert Wasser)
|
33
|
+
- Added a new Nikon LensID
|
34
|
+
- Decode more Nikon MakerNotes tags for some new models (thanks Warren Hatch)
|
35
|
+
- Extract ThumbnailImage from some DJI drone videos
|
36
|
+
- Enhanced -ee option to extract metadata from all frames in a SEQ file
|
37
|
+
- Patched to avoid possible "Use of uninitialized value" runtime warning
|
38
|
+
- Fixed a couple of misspelt new ICC_Profile tag names (thanks Herb)
|
39
|
+
- Fixed problem generating the correct file extension when extracting
|
40
|
+
OriginalRawImage from a DNG file using the -W option with the %s format code
|
41
|
+
- Fixed bug introduced in 11.91 where exiftool couldn't find its libraries
|
42
|
+
when run via a soft link. Also changed to look for config file in the link
|
43
|
+
target directory instead of the directory of the link itself
|
44
|
+
|
45
|
+
Oct. 27, 2021 - Version 12.34
|
46
|
+
|
47
|
+
- Added support for ICC.2:2019 (Profile version 5.0.0 - iccMAX) color profiles
|
48
|
+
- Added ability to detect/delete a Windows Zone.Identifier alternate data
|
49
|
+
stream (ADS) via the new ZoneIdentifier tag (thanks Alex Xu)
|
50
|
+
- Added support for the Sony ILCE-7M4 (thanks Jos Roost)
|
51
|
+
- Added a new Sony lens (thanks LibRaw and Jos Roost)
|
52
|
+
- Added a new SonyModelID (thanks LibRaw)
|
53
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
54
|
+
- Improved handling of some SVG files
|
55
|
+
- Patched -overwrite_original_in_place option to open the output file in
|
56
|
+
update mode rather than write mode (to allow some write optimizations on
|
57
|
+
certain filesystems) (thanks Joel Low)
|
58
|
+
- Fixed case of tag ID for new XMP-iptcExt:EventID (thanks Michael Steidl)
|
59
|
+
- Fixed problem extracting ICC_Profile information from some PDF files
|
60
|
+
- API Changes:
|
61
|
+
- Added QuickTimePad option
|
62
|
+
|
63
|
+
Oct. 16, 2021 - Version 12.33
|
64
|
+
|
65
|
+
- Added support for DNG version 1.6.0.0
|
66
|
+
- Added two new Sony LensType values (thanks Jos Roost and LibRaw)
|
67
|
+
- Added some new elements to the XMP-crs:Look structure (thanks Herb)
|
68
|
+
- Added a few new IPTC XMP tags (thanks Michael Steidl)
|
69
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
70
|
+
- Decode Canon ShutterMode (thanks John Moyer)
|
71
|
+
- Extract LensModel from some Olympus MOV videos
|
72
|
+
- Generate MediaDataOffset/Size for MOV videos with zero-sized MDAT chunk
|
73
|
+
- Improvements to CBOR reader, including hex dump with -v3 option
|
74
|
+
- Recognize Final Cut Pro XML files
|
75
|
+
- Allow binary data of Protected tags to be extracted with the -X -j and -php
|
76
|
+
options with -b by setting the API RequestAll option to 3
|
77
|
+
- Changed name of "Canon EF 80-200mm f/4.5-5.6" lens with LensType 38 to add
|
78
|
+
"II" to the name (Exiv2 issue 1906)
|
79
|
+
- Fixed runtime warning when processing files with a .DIR extension
|
80
|
+
|
10
81
|
Sept. 30, 2021 - Version 12.32
|
11
82
|
|
12
83
|
- Added support for CBOR-format metadata in JUMBF (note that JUMBF support is
|
@@ -117,6 +188,8 @@ May 20, 2021 - Version 12.26 (production release)
|
|
117
188
|
- Fixed problem which could cause a "Wide character" warning and generate a
|
118
189
|
corrupted output file when writing some illegal values
|
119
190
|
|
191
|
+
History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
|
192
|
+
|
120
193
|
Apr. 22, 2021 - Version 12.25
|
121
194
|
|
122
195
|
- JPEG XL support is now official
|
@@ -599,6 +672,7 @@ Mar. 19, 2020 - Version 11.92
|
|
599
672
|
|
600
673
|
Mar. 5, 2020 - Version 11.91
|
601
674
|
|
675
|
+
- Added undocumented -xpath option for use by alternate Windows version
|
602
676
|
- Decode a couple of new Panasonic tags
|
603
677
|
- Documented -ec option (available since version 11.54)
|
604
678
|
- Reverted -htmlDump fix of 11.90 because it broke more than it fixed, and
|
@@ -1484,8 +1558,8 @@ Oct. 9, 2018 - Version 11.13
|
|
1484
1558
|
- Added a new Canon LensType (thanks LibRaw)
|
1485
1559
|
- Minor improvements to verbose dump of streaming GPS metadata
|
1486
1560
|
- Reverted change of version 10.71 which resulted in Windows not recognizing
|
1487
|
-
PNG CreationTime as written by ExifTool (added this feature to the
|
1488
|
-
StrictDate
|
1561
|
+
PNG CreationTime as written by ExifTool (added this feature to the API
|
1562
|
+
StrictDate option instead)
|
1489
1563
|
- Improved decoding of Nikon CropHiSpeed (thanks LibRaw)
|
1490
1564
|
- Improved -fast option to reduce memory usage when reading JPG, PNG,
|
1491
1565
|
QuickTime-based and RIFF-based files via a sequential stream
|
@@ -1599,7 +1673,7 @@ June 21, 2018 - Version 11.03
|
|
1599
1673
|
June 13, 2018 - Version 11.02
|
1600
1674
|
|
1601
1675
|
- Added support for a different format of Apple iWorks files
|
1602
|
-
- Added undocumented FixCorruptedMOV
|
1676
|
+
- Added undocumented API FixCorruptedMOV option to allow fixing MOV videos
|
1603
1677
|
with multiple 'mdat' atoms which were corrupted by ExifTool
|
1604
1678
|
- Decode more QuickTime tags
|
1605
1679
|
- Decode more PanasonicRaw tags (thanks Klaus Homeister)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
|
|
107
107
|
terminal window to extract and run ExifTool:
|
108
108
|
|
109
109
|
cd ~/Desktop
|
110
|
-
gzip -dc Image-ExifTool-12.
|
111
|
-
cd Image-ExifTool-12.
|
110
|
+
gzip -dc Image-ExifTool-12.36.tar.gz | tar -xf -
|
111
|
+
cd Image-ExifTool-12.36
|
112
112
|
./exiftool t/images/ExifTool.jpg
|
113
113
|
|
114
114
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -10,24 +10,26 @@
|
|
10
10
|
use strict;
|
11
11
|
require 5.004;
|
12
12
|
|
13
|
-
my $version = '12.
|
13
|
+
my $version = '12.36';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
|
-
my $exeDir;
|
17
16
|
BEGIN {
|
18
17
|
# (undocumented -xpath option added in 11.91, must come before other options)
|
19
|
-
$
|
18
|
+
my $exePath = @ARGV && lc($ARGV[0]) eq '-xpath' && shift() ? $^X : $0;
|
20
19
|
# get exe directory
|
21
|
-
$exeDir = ($
|
20
|
+
my $exeDir = ($exePath =~ /(.*)[\\\/]/) ? $1 : '.';
|
21
|
+
my $incDir = ($0 =~ /(.*)[\\\/]/) ? "$1/lib" : './lib';
|
22
22
|
if (-l $0) {
|
23
23
|
my $lnk = eval { readlink $0 };
|
24
24
|
if (defined $lnk) {
|
25
25
|
my $lnkDir = ($lnk =~ /(.*)[\\\/]/) ? $1 : '.';
|
26
26
|
$exeDir = (($lnk =~ m(^/)) ? '' : $exeDir . '/') . $lnkDir;
|
27
|
+
$incDir = "$exeDir/lib";
|
27
28
|
}
|
28
29
|
}
|
30
|
+
$Image::ExifTool::exeDir = $exeDir; # use our exeDir for loading config file
|
29
31
|
# add lib directory at start of include path
|
30
|
-
unshift @INC,
|
32
|
+
unshift @INC, $incDir;
|
31
33
|
# load or disable config file if specified
|
32
34
|
if (@ARGV and lc($ARGV[0]) eq '-config') {
|
33
35
|
shift;
|
@@ -757,7 +759,7 @@ for (;;) {
|
|
757
759
|
}
|
758
760
|
my $fp = ($stayOpen == 1 ? \*STAYOPEN : \*ARGFILE);
|
759
761
|
unless ($mt->Open($fp, $argFile)) {
|
760
|
-
unless ($argFile !~ /^\// and $mt->Open($fp, "$exeDir/$argFile")) {
|
762
|
+
unless ($argFile !~ /^\// and $mt->Open($fp, "$Image::ExifTool::exeDir/$argFile")) {
|
761
763
|
Error "Error opening arg file $argFile\n";
|
762
764
|
$badCmd = 1;
|
763
765
|
next
|
@@ -1235,7 +1237,7 @@ for (;;) {
|
|
1235
1237
|
$textOverwrite += 2 if $t2 =~ /\+/; # append
|
1236
1238
|
if ($t1 ne 'W' and lc($t1) ne 'tagout') {
|
1237
1239
|
undef $tagOut;
|
1238
|
-
} elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[
|
1240
|
+
} elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[tgso]/) {
|
1239
1241
|
$tagOut = 0; # append tags to one file
|
1240
1242
|
} else {
|
1241
1243
|
$tagOut = 1; # separate file for each tag
|
@@ -1619,7 +1621,7 @@ if (@newValues) {
|
|
1619
1621
|
next;
|
1620
1622
|
}
|
1621
1623
|
my %opts = ( Shift => 0 ); # shift values if possible instead of adding/deleting
|
1622
|
-
# allow writing of '
|
1624
|
+
# allow writing of 'Unsafe' tags unless specified by wildcard
|
1623
1625
|
$opts{Protected} = 1 unless $tag =~ /[?*]/;
|
1624
1626
|
|
1625
1627
|
if ($tag =~ s/<// and defined $newVal) {
|
@@ -2285,7 +2287,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2285
2287
|
# avoid extracting Protected binary tags (eg. data blocks) [insider information]
|
2286
2288
|
my $lcTag = lc $tag;
|
2287
2289
|
$lcTag =~ s/ .*//;
|
2288
|
-
next unless $$et{REQ_TAG_LOOKUP}{$lcTag};
|
2290
|
+
next unless $$et{REQ_TAG_LOOKUP}{$lcTag} or ($$et{OPTIONS}{RequestAll} || 0) > 2;
|
2289
2291
|
}
|
2290
2292
|
$val = ConvertBinary($val); # convert SCALAR references
|
2291
2293
|
next unless defined $val;
|
@@ -2365,7 +2367,8 @@ TAG: foreach $tag (@foundTags) {
|
|
2365
2367
|
}
|
2366
2368
|
my @groups = $et->GetGroup($tag);
|
2367
2369
|
$outfile and close($fp), undef($tmpText); # (shouldn't happen)
|
2368
|
-
|
2370
|
+
my $org = $et->GetValue('OriginalRawFileName') || $et->GetValue('OriginalFileName');
|
2371
|
+
($fp, $outfile, $append) = OpenOutputFile($orig, $tagName, \@groups, $ext, $org);
|
2369
2372
|
$fp or ++$countBad, next TAG;
|
2370
2373
|
$tmpText = $outfile unless $append;
|
2371
2374
|
}
|
@@ -3061,12 +3064,14 @@ sub SetImageInfo($$$)
|
|
3061
3064
|
# temporarily disable CTRL-C during this critical operation
|
3062
3065
|
$critical = 1;
|
3063
3066
|
undef $tmpFile; # handle deletion of temporary file ourself
|
3064
|
-
if ($et->Open(\*ORIG_FILE, $file, '
|
3067
|
+
if ($et->Open(\*ORIG_FILE, $file, '+<')) {
|
3065
3068
|
binmode(ORIG_FILE);
|
3066
3069
|
while (read(NEW_FILE, $buff, 65536)) {
|
3067
3070
|
print ORIG_FILE $buff or $err = 1;
|
3068
3071
|
}
|
3069
3072
|
close(NEW_FILE);
|
3073
|
+
# Handle files being shorter than the original
|
3074
|
+
eval { truncate(ORIG_FILE, tell(ORIG_FILE)) } or $err = 1;
|
3070
3075
|
close(ORIG_FILE) or $err = 1;
|
3071
3076
|
if ($err) {
|
3072
3077
|
Warn "Couldn't overwrite in place - $file\n";
|
@@ -3801,7 +3806,7 @@ sub FindFileWindows($$)
|
|
3801
3806
|
my $enc = $et->Options('CharsetFileName');
|
3802
3807
|
$wildfile = $et->Decode($wildfile, $enc, undef, 'UTF8') if $enc and $enc ne 'UTF8';
|
3803
3808
|
$wildfile =~ tr/\\/\//; # use forward slashes
|
3804
|
-
my ($dir, $wildname) = ($wildfile =~ m{(
|
3809
|
+
my ($dir, $wildname) = ($wildfile =~ m{(.*[:/])(.*)}) ? ($1, $2) : ('', $wildfile);
|
3805
3810
|
if ($dir =~ /[*?]/) {
|
3806
3811
|
Warn "Wildcards don't work in the directory specification\n";
|
3807
3812
|
return ();
|
@@ -3941,7 +3946,7 @@ sub SuggestedExtension($$$)
|
|
3941
3946
|
$ext = 'xml';
|
3942
3947
|
} elsif ($$valPt =~ /^RIFF....WAVE/s) {
|
3943
3948
|
$ext = 'wav';
|
3944
|
-
} elsif ($tag eq '
|
3949
|
+
} elsif ($tag eq 'OriginalRawImage' and defined($ext = $et->GetValue('OriginalRawFileName'))) {
|
3945
3950
|
$ext =~ s/^.*\.//s;
|
3946
3951
|
$ext = $ext ? lc($ext) : 'raw';
|
3947
3952
|
} elsif ($tag eq 'EXIF') {
|
@@ -3993,14 +3998,15 @@ sub LoadPrintFormat($)
|
|
3993
3998
|
# A sort of sprintf for filenames
|
3994
3999
|
# Inputs: 0) format string (%d=dir, %f=file name, %e=ext),
|
3995
4000
|
# 1) source filename or undef to test format string
|
3996
|
-
# 2-4) [%t %g %s only] tag name, ref to array of group names,
|
4001
|
+
# 2-4) [%t %g %s %o only] tag name, ref to array of group names,
|
4002
|
+
# suggested extension, original raw file name
|
3997
4003
|
# Returns: new filename or undef on error (or if no file and fmt contains token)
|
3998
4004
|
sub FilenameSPrintf($;$@)
|
3999
4005
|
{
|
4000
4006
|
my ($fmt, $file, @extra) = @_;
|
4001
4007
|
local $_;
|
4002
4008
|
# return format string straight away if no tokens
|
4003
|
-
return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[
|
4009
|
+
return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[dDfFeEtgso]/;
|
4004
4010
|
return undef unless defined $file;
|
4005
4011
|
CleanFilename($file); # make sure we are using forward slashes
|
4006
4012
|
# split filename into directory, file, extension
|
@@ -4014,9 +4020,9 @@ sub FilenameSPrintf($;$@)
|
|
4014
4020
|
}
|
4015
4021
|
$part{F} = $part{f} . $part{E};
|
4016
4022
|
($part{D} = $part{d}) =~ s{/+$}{};
|
4017
|
-
@part{qw(t g s)} = @extra;
|
4023
|
+
@part{qw(t g s o)} = @extra;
|
4018
4024
|
my ($filename, $pos) = ('', 0);
|
4019
|
-
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([
|
4025
|
+
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgso]))/g) {
|
4020
4026
|
$filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
|
4021
4027
|
$pos = pos($fmt);
|
4022
4028
|
my ($sign, $wid, $dot, $skip, $mod, $code) = ($2, $3, $4, $5 || 0, $6, $7);
|
@@ -4179,7 +4185,7 @@ sub OpenOutputFile($;@)
|
|
4179
4185
|
if ($textOut) {
|
4180
4186
|
$outfile = $file;
|
4181
4187
|
CleanFilename($outfile);
|
4182
|
-
if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[
|
4188
|
+
if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[dDfFeEtgsocC]/ or defined $tagOut) {
|
4183
4189
|
# make filename from printf-like $textOut
|
4184
4190
|
$outfile = FilenameSPrintf($textOut, $file, @args);
|
4185
4191
|
return () unless defined $outfile;
|
@@ -4716,6 +4722,14 @@ group delete (unless a family 2 group is specified, see note 4 below).
|
|
4716
4722
|
Instead, individual tags may be recovered using the B<-tagsFromFile> option
|
4717
4723
|
(eg. C<-all= -tagsfromfile @ -artist>).
|
4718
4724
|
|
4725
|
+
To speed processing when reading XMP, exclusions in XMP groups also bypass
|
4726
|
+
processing of the corresponding XMP property and any contained properties.
|
4727
|
+
For example, C<--xmp-crs:all> may speed processing significantly in cases
|
4728
|
+
where a large number of XMP-crs tags exist. To use this feature to bypass
|
4729
|
+
processing of a specific XMP property, the property name must be used
|
4730
|
+
instead of the ExifTool tag name (eg. C<--xmp-crs:dabs>). Also, C<XMP-all>
|
4731
|
+
may be used to to indicate any XMP namespace (eg. <C--xmp-all:dabs>).
|
4732
|
+
|
4719
4733
|
=item B<->I<TAG>[+-^]B<=>[I<VALUE>]
|
4720
4734
|
|
4721
4735
|
Write a new value for the specified tag (eg. C<-comment=wow>), or delete the
|
@@ -4732,11 +4746,11 @@ I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
|
|
4732
4746
|
prefixed by optional family numbers, and separated colons. If no group name
|
4733
4747
|
is specified, the tag is created in the preferred group, and updated in any
|
4734
4748
|
other location where a same-named tag already exists. The preferred group
|
4735
|
-
is the first group in the following list
|
4736
|
-
IPTC, 3) XMP.
|
4749
|
+
in JPEG and TIFF-format images is the first group in the following list
|
4750
|
+
where I<TAG> is valid: 1) EXIF, 2) IPTC, 3) XMP.
|
4737
4751
|
|
4738
4752
|
The wildcards C<*> and C<?> may be used in tag names to assign the same
|
4739
|
-
value to multiple tags. When specified with wildcards, "
|
4753
|
+
value to multiple tags. When specified with wildcards, "Unsafe" tags are
|
4740
4754
|
not written. A tag name of C<All> is equivalent to C<*> (except that it
|
4741
4755
|
doesn't require quoting, while arguments with wildcards do on systems with
|
4742
4756
|
shell globbing), and is often used when deleting all metadata (ie. C<-All=>)
|
@@ -4882,10 +4896,10 @@ See L</COPYING EXAMPLES> for examples using B<-tagsFromFile>.
|
|
4882
4896
|
Notes:
|
4883
4897
|
|
4884
4898
|
1) Some tags (generally tags which may affect the appearance of the image)
|
4885
|
-
are considered "
|
4899
|
+
are considered "Unsafe" to write, and are only copied if specified
|
4886
4900
|
explicitly (ie. no wildcards). See the
|
4887
4901
|
L<tag name documentation|Image::ExifTool::TagNames> for more details about
|
4888
|
-
"
|
4902
|
+
"Unsafe" tags.
|
4889
4903
|
|
4890
4904
|
2) Be aware of the difference between excluding a tag from being copied
|
4891
4905
|
(--I<TAG>), and deleting a tag (-I<TAG>=). Excluding a tag prevents it from
|
@@ -4983,7 +4997,7 @@ intermediate file (C<out.args> in this example):
|
|
4983
4997
|
exiftool -@ out.args -sep ', ' dst.jpg
|
4984
4998
|
|
4985
4999
|
Note: Be careful when copying information with this technique since it is
|
4986
|
-
easy to write tags which are normally considered "
|
5000
|
+
easy to write tags which are normally considered "Unsafe". For instance,
|
4987
5001
|
the FileName and Directory tags are excluded in the example above to avoid
|
4988
5002
|
renaming and moving the destination file. Also note that the second command
|
4989
5003
|
above will produce warning messages for any tags which are not writable.
|
@@ -5003,8 +5017,8 @@ are in the default output. By default, list items are separated by a
|
|
5003
5017
|
newline when extracted with the B<-b> option, but this may be changed (see
|
5004
5018
|
the B<-sep> option for details). May be combined with B<-j>, B<-php> or
|
5005
5019
|
B<-X> to extract binary data in JSON, PHP or XML format, but note that
|
5006
|
-
"
|
5007
|
-
|
5020
|
+
"Unsafe" tags are not extracted as binary unless they are specified explicitly or
|
5021
|
+
the API RequestAll option is set to 3 or higher.
|
5008
5022
|
|
5009
5023
|
With a leading double dash (B<--b> or B<--binary>), tags which contain
|
5010
5024
|
binary data are suppressed in the output when reading.
|
@@ -5165,9 +5179,11 @@ various components of a date/time value. The specifics of the I<FMT> syntax
|
|
5165
5179
|
are system dependent -- consult the C<strftime> man page on your system for
|
5166
5180
|
details. The default format is equivalent to "%Y:%m:%d %H:%M:%S". This
|
5167
5181
|
option has no effect on date-only or time-only tags and ignores timezone
|
5168
|
-
information if present.
|
5169
|
-
|
5170
|
-
|
5182
|
+
information if present. ExifTool adds a C<%f> format code to represent
|
5183
|
+
fractional seconds, and supports an optional width to specify the number of
|
5184
|
+
digits after the decimal point (eg. C<%3f> would give something like
|
5185
|
+
C<.437>). Only one B<-d> option may be used per command. Requires
|
5186
|
+
POSIX::strptime or Time::Piece for the inversion conversion when writing.
|
5171
5187
|
|
5172
5188
|
=item B<-D> (B<-decimal>)
|
5173
5189
|
|
@@ -5205,7 +5221,7 @@ By default the resulting group name is simplified by removing any leading
|
|
5205
5221
|
C<Main:> and collapsing adjacent identical group names, but this can be
|
5206
5222
|
avoided by placing a colon before the first family number (eg. B<-g:3:1>).
|
5207
5223
|
Use the B<-listg> option to list group names for a specified family. The
|
5208
|
-
SavePath and SaveFormat
|
5224
|
+
API SavePath and SaveFormat options are automatically enabled if the
|
5209
5225
|
respective family 5 or 6 group names are requested. See the
|
5210
5226
|
L<API GetGroup documentation|Image::ExifTool/GetGroup> for more information.
|
5211
5227
|
|
@@ -5408,7 +5424,7 @@ with this command:
|
|
5408
5424
|
|
5409
5425
|
produces output like this:
|
5410
5426
|
|
5411
|
-
-- Generated by ExifTool 12.
|
5427
|
+
-- Generated by ExifTool 12.36 --
|
5412
5428
|
File: a.jpg - 2003:10:31 15:44:19
|
5413
5429
|
(f/5.6, 1/60s, ISO 100)
|
5414
5430
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5425,7 +5441,7 @@ are effectively processed as separate input files.
|
|
5425
5441
|
If a specified tag does not exist, a minor warning is issued and the line
|
5426
5442
|
with the missing tag is not printed. However, the B<-f> option may be used
|
5427
5443
|
to set the value of missing tags to '-' (but this may be configured via the
|
5428
|
-
MissingTagValue
|
5444
|
+
API MissingTagValue option), or the B<-m> option may be used to ignore minor
|
5429
5445
|
warnings and leave the missing values empty. Alternatively, B<-q -q> may be
|
5430
5446
|
used to simply suppress the warning messages.
|
5431
5447
|
|
@@ -5663,12 +5679,14 @@ between B<-W> and B<-w>:
|
|
5663
5679
|
|
5664
5680
|
1) With B<-W>, a new output file is created for each extracted tag.
|
5665
5681
|
|
5666
|
-
2) B<-W> supports
|
5667
|
-
|
5668
|
-
|
5669
|
-
|
5670
|
-
The
|
5671
|
-
|
5682
|
+
2) B<-W> supports four additional format codes: %t, %g and %s represent the
|
5683
|
+
tag name, group name, and suggested extension for the output file (based on
|
5684
|
+
the format of the data), and %o represents the value of the
|
5685
|
+
OriginalRawFileName or OriginalFileName tag from the input file (including
|
5686
|
+
extension). The %g code may be followed by a single digit to specify the
|
5687
|
+
group family number (eg. %g1), otherwise family 0 is assumed. The substring
|
5688
|
+
width/position/case specifiers may be used with these format codes in
|
5689
|
+
exactly the same way as with %f and %e.
|
5672
5690
|
|
5673
5691
|
3) The argument for B<-W> is interpreted as a file name if it contains no
|
5674
5692
|
format codes. (For B<-w>, this would be a file extension.) This change
|
@@ -5688,7 +5706,7 @@ example, the following pairs of commands give the same result:
|
|
5688
5706
|
4) Adding the B<-v> option to B<-W> sends a list of the tags and output file
|
5689
5707
|
names to the console instead of giving a verbose dump of the entire file.
|
5690
5708
|
(Unless appending all output to one file for each source file by using
|
5691
|
-
B<-W+> with an output file I<FMT> that does not contain %t, $g or %
|
5709
|
+
B<-W+> with an output file I<FMT> that does not contain %t, $g, %s or %o.)
|
5692
5710
|
|
5693
5711
|
5) Individual list items are stored in separate files when B<-W> is combined
|
5694
5712
|
with B<-b>, but note that for separate files to be created %c or %C must be
|
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
|
|
35
35
|
use Image::ExifTool::Validate;
|
36
36
|
use Image::ExifTool::MacOS;
|
37
37
|
|
38
|
-
$VERSION = '3.
|
38
|
+
$VERSION = '3.46';
|
39
39
|
@ISA = qw(Exporter);
|
40
40
|
|
41
41
|
sub NumbersFirst($$);
|
@@ -460,7 +460,7 @@ According to the specification, integer-format QuickTime date/time tags
|
|
460
460
|
should be stored as UTC. Unfortunately, digital cameras often store local
|
461
461
|
time values instead (presumably because they don't know the time zone). For
|
462
462
|
this reason, by default ExifTool does not assume a time zone for these
|
463
|
-
values. However, if the L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC>
|
463
|
+
values. However, if the API L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> option is set, then ExifTool will
|
464
464
|
assume these values are properly stored as UTC, and will convert them to
|
465
465
|
local time when extracting.
|
466
466
|
|
@@ -469,6 +469,11 @@ the PrintConv option is enabled and no time zone is specified. This is
|
|
469
469
|
because Apple software may display crazy values if the time zone is missing
|
470
470
|
for some tags.
|
471
471
|
|
472
|
+
By default ExifTool will remove null padding from some QuickTime containers
|
473
|
+
in Canon CR3 files when writing, but the
|
474
|
+
L<QuickTimePad|../ExifTool.html#QuickTimePad> option may be used to preserve
|
475
|
+
the original size by padding with nulls if necessary.
|
476
|
+
|
472
477
|
See
|
473
478
|
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
|
474
479
|
for the official specification.
|