exiftool_vendored 12.32.0 → 12.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|