exiftool_vendored 12.95.0 → 12.97.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 +19 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +28 -15
- data/bin/lib/Image/ExifTool/Canon.pm +1 -0
- data/bin/lib/Image/ExifTool/FujiFilm.pm +23 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +2 -2
- data/bin/lib/Image/ExifTool/InDesign.pm +17 -3
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +355 -62
- data/bin/lib/Image/ExifTool/NikonCustom.pm +421 -11
- data/bin/lib/Image/ExifTool/QuickTime.pm +20 -14
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4831 -4816
- data/bin/lib/Image/ExifTool/TagNames.pod +190 -3
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +34 -35
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +1 -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: 40145323efe802f85d7d63896f6625f4f814d99c0b7af905187c5e4723a2d280
|
4
|
+
data.tar.gz: 507b11c61f464d9afab44d071d9da8e306378589cbe60b505b25336bce853bf7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cbeb84218d46abc790daa396a9b48adf8ce36b57c948fa854fa3c441b1d269b8ef5540363c2940ed620254156aee55e7814cf6ae38df9e28d5fc291ae119c2c
|
7
|
+
data.tar.gz: '097ce6e1cb57f52cf953407ffca02f4f466a7d7662d20eed17d3355644aa2680fdb397c1fbf8032ed461f2b2f0d374e3a02e47cb95e50cddcb80e2938d3bed02'
|
data/bin/Changes
CHANGED
@@ -7,6 +7,25 @@ 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
|
+
|
23
|
+
Sept. 1, 2024 - Version 12.96
|
24
|
+
|
25
|
+
- More improvements to handling of trailers on video files (and add ability to
|
26
|
+
write videos which have an unknown trailer)
|
27
|
+
- Fixed problem geotagging from some newer Google Takeout files
|
28
|
+
|
10
29
|
Aug. 30, 2024 - Version 12.95
|
11
30
|
|
12
31
|
- Added a couple of new CanonModelID values
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/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.
|
data/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',
|
@@ -31,7 +31,7 @@ use vars qw($VERSION);
|
|
31
31
|
use Image::ExifTool qw(:Public);
|
32
32
|
use Image::ExifTool::GPS;
|
33
33
|
|
34
|
-
$VERSION = '1.
|
34
|
+
$VERSION = '1.78';
|
35
35
|
|
36
36
|
sub JITTER() { return 2 } # maximum time jitter
|
37
37
|
|
@@ -323,7 +323,7 @@ sub LoadTrackLog($$;$)
|
|
323
323
|
# Google Takeout JSON format
|
324
324
|
$format = 'JSON';
|
325
325
|
$sortFixes = 1; # (fixes are not all in order for this format)
|
326
|
-
} elsif (/"durationMinutesOffsetFromStartTime"\s*:/) {
|
326
|
+
} elsif (/"(durationMinutesOffsetFromStartTime|startTime)"\s*:/) {
|
327
327
|
$format = 'JSON'; # new Google Takeout JSON format (fixes seem to be in order)
|
328
328
|
$raf->Seek(0,0); # rewind to start of file
|
329
329
|
} else {
|
@@ -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
|
{
|