exiftool-vendored.pl 12.96.0 → 12.97.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.
- package/bin/Changes +13 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/exiftool +28 -15
- package/bin/lib/Image/ExifTool/Canon.pm +1 -0
- package/bin/lib/Image/ExifTool/FujiFilm.pm +23 -1
- package/bin/lib/Image/ExifTool/InDesign.pm +17 -3
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +355 -62
- package/bin/lib/Image/ExifTool/NikonCustom.pm +421 -11
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -0
- package/bin/lib/Image/ExifTool/TagLookup.pm +4831 -4816
- package/bin/lib/Image/ExifTool/TagNames.pod +190 -3
- package/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- package/bin/lib/Image/ExifTool.pm +1 -1
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/windows_exiftool.txt +2836 -0
- package/package.json +1 -1
package/bin/Changes
CHANGED
|
@@ -7,6 +7,19 @@ RSS feed: https://exiftool.org/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 12.76. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
|
9
9
|
|
|
10
|
+
Sept. 25, 2024 - Version 12.97
|
|
11
|
+
|
|
12
|
+
- Added ability to ignore up to 4095 bytes of garbage at the end of an INDD
|
|
13
|
+
file with the -m option
|
|
14
|
+
- Added a new Canon RFLensType value (thanks Norbert Wasser)
|
|
15
|
+
- Added a new Nikon Z LensID
|
|
16
|
+
- Decode a number of new Nikon Z6_3 tags (thanks Warren Hatch)
|
|
17
|
+
- Decode a few more FujiFilm tags (thanks Greybeard)
|
|
18
|
+
- Enhanced %C format code to allow file-name collisions to be avoided by using
|
|
19
|
+
a colon instead of a decimal in the format modifier
|
|
20
|
+
- Fixed bug which could result in hang when using %C code in an output file
|
|
21
|
+
name
|
|
22
|
+
|
|
10
23
|
Sept. 1, 2024 - Version 12.96
|
|
11
24
|
|
|
12
25
|
- More improvements to handling of trailers on video files (and add ability to
|
package/bin/META.json
CHANGED
package/bin/META.yml
CHANGED
package/bin/README
CHANGED
|
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
|
|
|
109
109
|
terminal window to extract and run ExifTool:
|
|
110
110
|
|
|
111
111
|
cd ~/Desktop
|
|
112
|
-
gzip -dc Image-ExifTool-12.
|
|
113
|
-
cd Image-ExifTool-12.
|
|
112
|
+
gzip -dc Image-ExifTool-12.97.tar.gz | tar -xf -
|
|
113
|
+
cd Image-ExifTool-12.97
|
|
114
114
|
./exiftool t/images/ExifTool.jpg
|
|
115
115
|
|
|
116
116
|
Note: These commands extract meta information from one of the test images.
|
package/bin/exiftool
CHANGED
|
@@ -11,7 +11,7 @@ use strict;
|
|
|
11
11
|
use warnings;
|
|
12
12
|
require 5.004;
|
|
13
13
|
|
|
14
|
-
my $version = '12.
|
|
14
|
+
my $version = '12.97';
|
|
15
15
|
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
17
17
|
my $exePath;
|
|
@@ -4301,17 +4301,20 @@ sub Num2Alpha($)
|
|
|
4301
4301
|
sub NextUnusedFilename($;$)
|
|
4302
4302
|
{
|
|
4303
4303
|
my ($fmt, $okfile) = @_;
|
|
4304
|
-
return $fmt unless $fmt =~ /%[-+]?\d
|
|
4304
|
+
return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lun]?[cC]/;
|
|
4305
4305
|
my %sep = ( '-' => '-', '+' => '_' );
|
|
4306
4306
|
my ($copy, $alpha) = (0, 'a');
|
|
4307
|
+
my $lastFile;
|
|
4307
4308
|
for (;;) {
|
|
4308
4309
|
my ($filename, $pos) = ('', 0);
|
|
4309
|
-
while ($fmt =~ /(%([-+]?)(\d*)(
|
|
4310
|
+
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lun]?)([cC]))/g) {
|
|
4310
4311
|
$filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
|
|
4311
4312
|
$pos = pos($fmt);
|
|
4312
4313
|
my ($sign, $wid, $dec, $wid2, $mod, $tok) = ($2, $3 || 0, $4, $5 || 0, $6, $7);
|
|
4313
4314
|
my $seq;
|
|
4314
4315
|
if ($tok eq 'C') {
|
|
4316
|
+
# increment sequence number for %C on collision if ':' is used
|
|
4317
|
+
$sign eq '-' ? ++$seqFileDir : ++$seqFileNum if $copy and $dec eq ':';
|
|
4315
4318
|
$seq = $wid + ($sign eq '-' ? $seqFileDir : $seqFileNum) - 1;
|
|
4316
4319
|
$wid = $wid2;
|
|
4317
4320
|
} else {
|
|
@@ -4340,6 +4343,8 @@ sub NextUnusedFilename($;$)
|
|
|
4340
4343
|
my ($fn, $ok) = (AbsPath($filename), AbsPath($okfile));
|
|
4341
4344
|
return $okfile if defined $fn and defined $ok and $fn eq $ok;
|
|
4342
4345
|
}
|
|
4346
|
+
return $filename if defined $lastFile and $lastFile eq $filename;
|
|
4347
|
+
$lastFile = $filename;
|
|
4343
4348
|
++$copy;
|
|
4344
4349
|
++$alpha;
|
|
4345
4350
|
}
|
|
@@ -4639,6 +4644,10 @@ sub PrintErrors($$$)
|
|
|
4639
4644
|
return $$info{Error};
|
|
4640
4645
|
}
|
|
4641
4646
|
|
|
4647
|
+
#=====================================================================================
|
|
4648
|
+
# NOTE: Be sure to update windows_exiftool.txt with any changes to this documentation!
|
|
4649
|
+
#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
|
4650
|
+
|
|
4642
4651
|
__END__
|
|
4643
4652
|
|
|
4644
4653
|
=head1 NAME
|
|
@@ -5170,16 +5179,14 @@ B<-struct> option for details.
|
|
|
5170
5179
|
E<quot>'-I<DSTTAG>E<lt>I<SRCTAG>'E<quot>) is not the same as interpolating
|
|
5171
5180
|
its value inside a string (ie. E<quot>'-I<DSTTAG>E<lt>$I<SRCTAG>'E<quot>)
|
|
5172
5181
|
for source tags which are list-type tags,
|
|
5173
|
-
L<shortcut tags|Image::ExifTool::Shortcuts>, tag names containing
|
|
5174
|
-
|
|
5175
|
-
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
interpolating its value in a string (with C<$>), but isn't when copying the
|
|
5182
|
-
tag directly.
|
|
5182
|
+
L<shortcut tags|Image::ExifTool::Shortcuts>, or tag names containing
|
|
5183
|
+
wildcards. When copying directly, the values of each matching source tag
|
|
5184
|
+
are copied individually to the destination tag (as if they were separate
|
|
5185
|
+
assignments). However, when interpolated inside a string, list items and
|
|
5186
|
+
the values of shortcut tags are concatenated (with a separator set by the
|
|
5187
|
+
B<-sep> option), and wildcards are not allowed.Another difference is that a
|
|
5188
|
+
minor warning is generated if a tag doesn't exist when interpolating its
|
|
5189
|
+
value in a string (with C<$>), but isn't when copying the tag directly.
|
|
5183
5190
|
|
|
5184
5191
|
Finally, the behaviour is different when a destination tag or group of
|
|
5185
5192
|
C<All> is used. When copying directly, a destination group and/or tag name
|
|
@@ -5655,7 +5662,7 @@ with this command:
|
|
|
5655
5662
|
|
|
5656
5663
|
produces output like this:
|
|
5657
5664
|
|
|
5658
|
-
-- Generated by ExifTool 12.
|
|
5665
|
+
-- Generated by ExifTool 12.97 --
|
|
5659
5666
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5660
5667
|
(f/5.6, 1/60s, ISO 100)
|
|
5661
5668
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5897,7 +5904,13 @@ A leading '-' causes the number to be reset at the start of each new
|
|
|
5897
5904
|
directory (in the original directory structure if the files are being
|
|
5898
5905
|
moved), and '+' has no effect. The number before the decimal place gives
|
|
5899
5906
|
the starting index, the number after the decimal place gives the field
|
|
5900
|
-
width.
|
|
5907
|
+
width. To preserve synchronization with the processed file number, by
|
|
5908
|
+
default the copy number is not incremented to avoid file name collisions, so
|
|
5909
|
+
any existing same-named file will cause an error. However using a colon
|
|
5910
|
+
instead of a decimal point causes the number to be incremented to avoid
|
|
5911
|
+
collisions with existing files.
|
|
5912
|
+
|
|
5913
|
+
The following examples show the output filenames when used with the
|
|
5901
5914
|
command C<exiftool rose.jpg star.jpg jet.jpg ...>:
|
|
5902
5915
|
|
|
5903
5916
|
-w %C%f.txt # 0rose.txt, 1star.txt, 2jet.txt
|
|
@@ -6999,6 +6999,7 @@ my %ciMaxFocal = (
|
|
|
6999
6999
|
314 => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
|
|
7000
7000
|
315 => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
|
|
7001
7001
|
316 => 'Canon RF 35mm F1.4 L VCM', #42
|
|
7002
|
+
318 => 'Canon RF 28-70mm F2.8 IS STM', #42
|
|
7002
7003
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
|
7003
7004
|
},
|
|
7004
7005
|
},
|
|
@@ -31,7 +31,7 @@ use vars qw($VERSION);
|
|
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
32
32
|
use Image::ExifTool::Exif;
|
|
33
33
|
|
|
34
|
-
$VERSION = '1.
|
|
34
|
+
$VERSION = '1.96';
|
|
35
35
|
|
|
36
36
|
sub ProcessFujiDir($$$);
|
|
37
37
|
sub ProcessFaceRec($$$);
|
|
@@ -1252,6 +1252,28 @@ my %faceCategories = (
|
|
|
1252
1252
|
ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
|
|
1253
1253
|
PrintConv => '$val=~tr/ /:/; $val',
|
|
1254
1254
|
},
|
|
1255
|
+
0x117 => {
|
|
1256
|
+
Name => 'RawZoomActive',
|
|
1257
|
+
Format => 'int32u',
|
|
1258
|
+
Count => 1,
|
|
1259
|
+
PrintConv => { 0 => 'No', 1 => 'Yes' },
|
|
1260
|
+
},
|
|
1261
|
+
0x118 => {
|
|
1262
|
+
Name => 'RawZoomTopLeft',
|
|
1263
|
+
Format => 'int16u',
|
|
1264
|
+
Count => 2,
|
|
1265
|
+
Notes => 'relative to RawCroppedImageSize',
|
|
1266
|
+
ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
|
|
1267
|
+
PrintConv => '$val=~tr/ /x/; $val',
|
|
1268
|
+
},
|
|
1269
|
+
0x119 => {
|
|
1270
|
+
Name => 'RawZoomSize',
|
|
1271
|
+
Format => 'int16u',
|
|
1272
|
+
Count => 2,
|
|
1273
|
+
Notes => 'relative to RawCroppedImageSize',
|
|
1274
|
+
ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
|
|
1275
|
+
PrintConv => '$val=~tr/ /x/; $val',
|
|
1276
|
+
},
|
|
1255
1277
|
0x121 => [
|
|
1256
1278
|
{
|
|
1257
1279
|
Name => 'RawImageSize',
|
|
@@ -14,7 +14,7 @@ use strict;
|
|
|
14
14
|
use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
16
16
|
|
|
17
|
-
$VERSION = '1.
|
|
17
|
+
$VERSION = '1.08';
|
|
18
18
|
|
|
19
19
|
# map for writing metadata to InDesign files (currently only write XMP)
|
|
20
20
|
my %indMap = (
|
|
@@ -101,8 +101,22 @@ sub ProcessIND($$)
|
|
|
101
101
|
for (;;) {
|
|
102
102
|
$raf->Read($hdr, 32) or last;
|
|
103
103
|
unless (length($hdr) == 32 and $hdr =~ /^\Q$objectHeaderGUID/) {
|
|
104
|
-
# this must be null padding or we have
|
|
105
|
-
$hdr =~ /^\0
|
|
104
|
+
# this must be null padding or we have a possible error
|
|
105
|
+
last if $hdr =~ /^\0+$/;
|
|
106
|
+
# (could be up to 4095 bytes of non-null garbage plus 4095 null bytes from ExifTool)
|
|
107
|
+
$raf->Read($buff, 8196) and $hdr .= $buff;
|
|
108
|
+
$hdr =~ s/\0+$//; # remove trailing nulls
|
|
109
|
+
if (length($hdr) > 4095) {
|
|
110
|
+
$err = 'Corrupt file or unsupported InDesign version';
|
|
111
|
+
last;
|
|
112
|
+
}
|
|
113
|
+
my $non = 'Non-null padding at end of file';
|
|
114
|
+
if (not $outfile) {
|
|
115
|
+
$et->Warn($non, 1);
|
|
116
|
+
} elsif (not $et->Error($non, 1)) {
|
|
117
|
+
Write($outfile, $hdr) or $err = 1;
|
|
118
|
+
$writeLen += length $hdr;
|
|
119
|
+
}
|
|
106
120
|
last;
|
|
107
121
|
}
|
|
108
122
|
my $len = Get32u(\$hdr, 24);
|
|
@@ -1543,7 +1543,7 @@ sub ProcessJP2($$)
|
|
|
1543
1543
|
|
|
1544
1544
|
# check to be sure this is a valid JPG2000 file
|
|
1545
1545
|
return 0 unless $raf->Read($hdr,12) == 12;
|
|
1546
|
-
unless ($hdr eq "\0\0\0\x0cjP \x0d\x0a\x87\x0a" or
|
|
1546
|
+
unless ($hdr eq "\0\0\0\x0cjP \x0d\x0a\x87\x0a" or # (ref 1)
|
|
1547
1547
|
$hdr eq "\0\0\0\x0cjP\x1a\x1a\x0d\x0a\x87\x0a" or # (ref 2)
|
|
1548
1548
|
$$et{IsJXL})
|
|
1549
1549
|
{
|