exiftool-vendored.exe 12.60.0 → 12.65.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/LICENSE +254 -254
- package/bin/exiftool_files/Changes +110 -0
- package/bin/exiftool_files/LICENSE +674 -0
- package/bin/exiftool_files/Makefile.PL +7 -1
- package/bin/exiftool_files/README +50 -45
- package/bin/exiftool_files/config_files/guano.config +161 -0
- package/bin/exiftool_files/exiftool.pl +162 -104
- package/bin/exiftool_files/lib/Image/ExifTool/7Z.pm +793 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +14 -7
- package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +0 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +8 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +4 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +4 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +31 -14
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +9 -2
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +5 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +4 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +243 -20
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +1467 -202
- package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +16 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +941 -33
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +874 -63
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +39 -12
- package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +8 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +5 -5
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +96 -32
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +68 -37
- package/bin/exiftool_files/lib/Image/ExifTool/README +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +11 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +227 -227
- package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +237 -32
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4762 -4629
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +737 -20
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +17 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +296 -0
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +9 -7
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +7 -8
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
- package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +47 -16
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +30 -6
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +32 -0
- package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +96 -28
- package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +159 -41
- package/bin/exiftool_files/lib/Image/ExifTool.pm +280 -164
- package/bin/exiftool_files/lib/Image/ExifTool.pod +117 -52
- package/package.json +3 -2
|
@@ -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.65';
|
|
15
15
|
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
17
17
|
my $exePath;
|
|
@@ -290,8 +290,11 @@ my @recommends = qw(
|
|
|
290
290
|
POSIX::strptime
|
|
291
291
|
Time::Local
|
|
292
292
|
Unicode::LineBreak
|
|
293
|
+
Compress::Raw::Lzma
|
|
293
294
|
IO::Compress::RawDeflate
|
|
294
295
|
IO::Uncompress::RawInflate
|
|
296
|
+
IO::Compress::Brotli
|
|
297
|
+
IO::Uncompress::Brotli
|
|
295
298
|
Win32::API
|
|
296
299
|
Win32::FindFile
|
|
297
300
|
Win32API::File
|
|
@@ -379,13 +382,14 @@ if ($exePath =~ /\(([^\\\/]+)\)(.exe|.pl)?$/i) {
|
|
|
379
382
|
|
|
380
383
|
# isolate arguments common to all commands
|
|
381
384
|
if (grep /^-common_args$/i, @ARGV) {
|
|
382
|
-
my (@newArgs, $common);
|
|
385
|
+
my (@newArgs, $common, $end);
|
|
383
386
|
foreach (@ARGV) {
|
|
384
|
-
if (/^-common_args$/i) {
|
|
387
|
+
if (/^-common_args$/i and not $end) {
|
|
385
388
|
$common = 1;
|
|
386
389
|
} elsif ($common) {
|
|
387
390
|
push @commonArgs, $_;
|
|
388
391
|
} else {
|
|
392
|
+
$end = 1 if $_ eq '--';
|
|
389
393
|
push @newArgs, $_;
|
|
390
394
|
}
|
|
391
395
|
}
|
|
@@ -735,6 +739,13 @@ for (;;) {
|
|
|
735
739
|
print "ExifTool version $version$str$Image::ExifTool::RELEASE\n";
|
|
736
740
|
printf "Perl version %s%s\n", $], (defined ${^UNICODE} ? " (-C${^UNICODE})" : '');
|
|
737
741
|
print "Platform: $^O\n";
|
|
742
|
+
if ($verbose > 8) {
|
|
743
|
+
print "Current Dir: " . Cwd::getcwd() . "\n" if (eval { require Cwd });
|
|
744
|
+
print "Script Name: $0\n";
|
|
745
|
+
print "Exe Name: $^X\n";
|
|
746
|
+
print "Exe Dir: $Image::ExifTool::exeDir\n";
|
|
747
|
+
print "Exe Path: $exePath\n";
|
|
748
|
+
}
|
|
738
749
|
print "Optional libraries:\n";
|
|
739
750
|
foreach (@recommends) {
|
|
740
751
|
next if /^Win32/ and $^O ne 'MSWin32';
|
|
@@ -816,11 +827,17 @@ for (;;) {
|
|
|
816
827
|
/^(-?)(a|duplicates)$/i and $mt->Options(Duplicates => ($1 ? 0 : 1)), next;
|
|
817
828
|
if ($a eq 'api') {
|
|
818
829
|
my $opt = shift;
|
|
819
|
-
defined $opt
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
830
|
+
if (defined $opt and length $opt) {
|
|
831
|
+
my $val = ($opt =~ s/=(.*)//s) ? $1 : 1;
|
|
832
|
+
# empty string means an undefined value unless ^= is used
|
|
833
|
+
$val = undef unless $opt =~ s/\^$// or length $val;
|
|
834
|
+
$mt->Options($opt => $val);
|
|
835
|
+
} else {
|
|
836
|
+
print "Available API Options:\n";
|
|
837
|
+
my $availableOptions = Image::ExifTool::AvailableOptions();
|
|
838
|
+
printf(" %-17s - %s\n", $$_[0], $$_[2]) foreach @$availableOptions;
|
|
839
|
+
$helped = 1;
|
|
840
|
+
}
|
|
824
841
|
next;
|
|
825
842
|
}
|
|
826
843
|
/^arg(s|format)$/i and $argFormat = 1, next;
|
|
@@ -850,7 +867,7 @@ for (;;) {
|
|
|
850
867
|
$mt->Options(Charset => $charset);
|
|
851
868
|
}
|
|
852
869
|
if ($evalWarning) {
|
|
853
|
-
|
|
870
|
+
Warn $evalWarning;
|
|
854
871
|
} else {
|
|
855
872
|
$setCharset = $mt->Options('Charset');
|
|
856
873
|
}
|
|
@@ -1462,6 +1479,10 @@ if ($csv and $csv eq 'CSV' and not $isWriting) {
|
|
|
1462
1479
|
$binaryOutput = 0;
|
|
1463
1480
|
$setCharset = 'default' unless defined $setCharset;
|
|
1464
1481
|
}
|
|
1482
|
+
if (%printFmt) {
|
|
1483
|
+
Warn "The -csv option has no effect when -p is used\n";
|
|
1484
|
+
undef $csv;
|
|
1485
|
+
}
|
|
1465
1486
|
require Image::ExifTool::XMP if $setCharset;
|
|
1466
1487
|
}
|
|
1467
1488
|
|
|
@@ -1735,7 +1756,8 @@ if ($textOut) {
|
|
|
1735
1756
|
if ($outOpt) {
|
|
1736
1757
|
my $type = GetFileType($outOpt);
|
|
1737
1758
|
if ($type) {
|
|
1738
|
-
|
|
1759
|
+
# (must test original file name because we can write .webp but not other RIFF types)
|
|
1760
|
+
unless (CanWrite($outOpt)) {
|
|
1739
1761
|
Warn "Can't write $type files\n";
|
|
1740
1762
|
$rtnVal = 1;
|
|
1741
1763
|
next;
|
|
@@ -1949,23 +1971,31 @@ sub GetImageInfo($$)
|
|
|
1949
1971
|
my (@foundTags, $info, $file, $ind, $g8);
|
|
1950
1972
|
|
|
1951
1973
|
# set window title for this file if necessary
|
|
1952
|
-
if (defined $windowTitle
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1974
|
+
if (defined $windowTitle) {
|
|
1975
|
+
if ($progressCount >= $progressNext) {
|
|
1976
|
+
my $prog = $progressMax ? "$progressCount/$progressMax" : '0/0';
|
|
1977
|
+
my $title = $windowTitle;
|
|
1978
|
+
my ($num, $denom) = split '/', $prog;
|
|
1979
|
+
my $frac = $num / ($denom || 1);
|
|
1980
|
+
my $n = $title =~ s/%(\d+)b/%b/ ? $1 : 20; # length of bar
|
|
1981
|
+
my $bar = int($frac * $n + 0.5);
|
|
1982
|
+
my %lkup = (
|
|
1983
|
+
b => ('I' x $bar) . ('.' x ($n - $bar)),
|
|
1984
|
+
f => $orig,
|
|
1985
|
+
p => int(100 * $frac + 0.5),
|
|
1986
|
+
r => $prog,
|
|
1987
|
+
'%'=> '%',
|
|
1988
|
+
);
|
|
1989
|
+
$title =~ s/%([%bfpr])/$lkup{$1}/eg;
|
|
1990
|
+
SetWindowTitle($title);
|
|
1991
|
+
if (defined $progressMax) {
|
|
1992
|
+
undef $progressNext;
|
|
1993
|
+
} else {
|
|
1994
|
+
$progressNext += $progressIncr;
|
|
1995
|
+
}
|
|
1996
|
+
}
|
|
1997
|
+
# ($progressMax is not defined for "-progress:%f")
|
|
1998
|
+
++$progressCount unless defined $progressMax;
|
|
1969
1999
|
}
|
|
1970
2000
|
unless (length $orig or $outOpt) {
|
|
1971
2001
|
Warn qq(Error: Zero-length file name - ""\n);
|
|
@@ -1991,7 +2021,11 @@ sub GetImageInfo($$)
|
|
|
1991
2021
|
}
|
|
1992
2022
|
# set alternate file names
|
|
1993
2023
|
foreach $g8 (sort keys %altFile) {
|
|
1994
|
-
my $altName =
|
|
2024
|
+
my $altName = $orig;
|
|
2025
|
+
# must double any '$' symbols in the original file name because
|
|
2026
|
+
# they are used for tag names in a -fileNUM argument
|
|
2027
|
+
$altName =~ s/\$/\$\$/g;
|
|
2028
|
+
$altName = FilenameSPrintf($altFile{$g8}, $altName);
|
|
1995
2029
|
$et->SetAlternateFile($g8, $altName);
|
|
1996
2030
|
}
|
|
1997
2031
|
|
|
@@ -2347,7 +2381,7 @@ TAG: foreach $tag (@foundTags) {
|
|
|
2347
2381
|
next unless defined $val;
|
|
2348
2382
|
if ($structOpt and ref $val) {
|
|
2349
2383
|
# serialize structure if necessary
|
|
2350
|
-
$val = Image::ExifTool::XMP::SerializeStruct($val) unless $xml or $json;
|
|
2384
|
+
$val = Image::ExifTool::XMP::SerializeStruct($et, $val) unless $xml or $json;
|
|
2351
2385
|
} elsif (ref $val eq 'ARRAY') {
|
|
2352
2386
|
if (defined $listItem) {
|
|
2353
2387
|
# take only the specified item
|
|
@@ -2496,7 +2530,7 @@ TAG: foreach $tag (@foundTags) {
|
|
|
2496
2530
|
my $tok = "$group:$tagName";
|
|
2497
2531
|
if ($outFormat > 0) {
|
|
2498
2532
|
if ($structOpt and ref $val) {
|
|
2499
|
-
$val = Image::ExifTool::XMP::SerializeStruct($val);
|
|
2533
|
+
$val = Image::ExifTool::XMP::SerializeStruct($et, $val);
|
|
2500
2534
|
}
|
|
2501
2535
|
if ($escapeHTML) {
|
|
2502
2536
|
$val =~ tr/\0-\x08\x0b\x0c\x0e-\x1f/./;
|
|
@@ -2534,6 +2568,7 @@ TAG: foreach $tag (@foundTags) {
|
|
|
2534
2568
|
$xtra .= " et:table='${table}'";
|
|
2535
2569
|
$xtra .= " et:index='${index}'" if defined $index;
|
|
2536
2570
|
}
|
|
2571
|
+
# Note: New $xtra attributes must be added to %ignoreEtProp in XMP.pm!
|
|
2537
2572
|
my $lastVal = $val;
|
|
2538
2573
|
for ($valNum=0; $valNum<2; ++$valNum) {
|
|
2539
2574
|
$val = FormatXML($val, $ind, $group);
|
|
@@ -2842,7 +2877,7 @@ sub SetImageInfo($$$)
|
|
|
2842
2877
|
}
|
|
2843
2878
|
unless ($isStdout) {
|
|
2844
2879
|
$outfile = NextUnusedFilename($outfile);
|
|
2845
|
-
if ($et->Exists($outfile) and not $doSetFileName) {
|
|
2880
|
+
if ($et->Exists($outfile, 1) and not $doSetFileName) {
|
|
2846
2881
|
Warn "Error: '${outfile}' already exists - $infile\n";
|
|
2847
2882
|
EFile($infile);
|
|
2848
2883
|
++$countBadWr;
|
|
@@ -2973,7 +3008,7 @@ sub SetImageInfo($$$)
|
|
|
2973
3008
|
$outfile = Image::ExifTool::GetNewFileName(defined $outfile ? $outfile : $file, $newDir);
|
|
2974
3009
|
}
|
|
2975
3010
|
$outfile = NextUnusedFilename($outfile, $infile);
|
|
2976
|
-
if ($et->Exists($outfile)) {
|
|
3011
|
+
if ($et->Exists($outfile, 1)) {
|
|
2977
3012
|
if ($infile eq $outfile) {
|
|
2978
3013
|
undef $outfile; # not changing the file name after all
|
|
2979
3014
|
# (allow for case-insensitive filesystems)
|
|
@@ -3698,7 +3733,7 @@ sub ProcessFiles($;$)
|
|
|
3698
3733
|
if (defined $progressMax) {
|
|
3699
3734
|
unless (defined $progressNext) {
|
|
3700
3735
|
$progressNext = $progressCount + $progressIncr;
|
|
3701
|
-
$progressNext -= $progressNext % $progressIncr;
|
|
3736
|
+
$progressNext -= $progressNext % $progressIncr; # (show even multiples)
|
|
3702
3737
|
$progressNext = $progressMax if $progressNext > $progressMax;
|
|
3703
3738
|
}
|
|
3704
3739
|
++$progressCount;
|
|
@@ -4053,6 +4088,8 @@ sub SuggestedExtension($$$)
|
|
|
4053
4088
|
$ext = 'dr4';
|
|
4054
4089
|
} elsif ($$valPt =~ /^(.{10}|.{522})(\x11\x01|\x00\x11)/s) {
|
|
4055
4090
|
$ext = 'pict';
|
|
4091
|
+
} elsif ($$valPt =~ /^\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl/s) {
|
|
4092
|
+
$ext = 'jxl';
|
|
4056
4093
|
} else {
|
|
4057
4094
|
$ext = 'dat';
|
|
4058
4095
|
}
|
|
@@ -4199,7 +4236,7 @@ sub NextUnusedFilename($;$)
|
|
|
4199
4236
|
}
|
|
4200
4237
|
$filename .= substr($fmt, $pos); # add rest of file name
|
|
4201
4238
|
# return now with filename unless file exists
|
|
4202
|
-
return $filename unless ($mt->Exists($filename) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
|
|
4239
|
+
return $filename unless ($mt->Exists($filename, 1) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
|
|
4203
4240
|
if (defined $okfile) {
|
|
4204
4241
|
return $filename if $filename eq $okfile;
|
|
4205
4242
|
my ($fn, $ok) = (AbsPath($filename), AbsPath($okfile));
|
|
@@ -4279,7 +4316,7 @@ sub OpenOutputFile($;@)
|
|
|
4279
4316
|
$outfile .= $textOut;
|
|
4280
4317
|
}
|
|
4281
4318
|
my $mode = '>';
|
|
4282
|
-
if ($mt->Exists($outfile)) {
|
|
4319
|
+
if ($mt->Exists($outfile, 1)) {
|
|
4283
4320
|
unless ($textOverwrite) {
|
|
4284
4321
|
Warn "Output file $outfile already exists for $file\n";
|
|
4285
4322
|
return ();
|
|
@@ -4477,7 +4514,7 @@ sub Progress($$)
|
|
|
4477
4514
|
my ($file, $msg) = @_;
|
|
4478
4515
|
if (defined $progStr) {
|
|
4479
4516
|
print $file $msg, $progStr, "\n";
|
|
4480
|
-
undef $progressNext;
|
|
4517
|
+
undef $progressNext if defined $progressMax;
|
|
4481
4518
|
}
|
|
4482
4519
|
}
|
|
4483
4520
|
|
|
@@ -4599,48 +4636,49 @@ DESCRIPTION
|
|
|
4599
4636
|
|
|
4600
4637
|
File Types
|
|
4601
4638
|
------------+-------------+-------------+-------------+------------
|
|
4602
|
-
360 r/w | DPX r | ITC r |
|
|
4603
|
-
3FR r | DR4 r/w/c | J2C r |
|
|
4604
|
-
3G2 r/w | DSS r | JNG r/w |
|
|
4605
|
-
3GP r/w | DV r | JP2 r/w |
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4612
|
-
|
|
4613
|
-
|
|
4614
|
-
|
|
4615
|
-
|
|
4616
|
-
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4620
|
-
|
|
4621
|
-
|
|
4622
|
-
|
|
4623
|
-
|
|
4624
|
-
|
|
4625
|
-
|
|
4626
|
-
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
|
|
4639
|
+
360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
|
|
4640
|
+
3FR r | DR4 r/w/c | J2C r | O r | RIFF r
|
|
4641
|
+
3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
|
|
4642
|
+
3GP r/w | DV r | JP2 r/w | ODS r | RTF r
|
|
4643
|
+
7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
|
|
4644
|
+
A r | DVR-MS r | JSON r | OFR r | RWL r/w
|
|
4645
|
+
AA r | DYLIB r | JXL r | OGG r | RWZ r
|
|
4646
|
+
AAE r | EIP r | K25 r | OGV r | RM r
|
|
4647
|
+
AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
|
|
4648
|
+
ACR r | EPUB r | KEY r | OPUS r | SKETCH r
|
|
4649
|
+
AFM r | ERF r/w | LA r | ORF r/w | SO r
|
|
4650
|
+
AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
|
|
4651
|
+
AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
|
|
4652
|
+
APE r | EXR r | LNK r | PAC r | SRW r/w
|
|
4653
|
+
ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
|
|
4654
|
+
ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
|
|
4655
|
+
ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
|
|
4656
|
+
AVI r | FITS r | MACOS r | PCX r | TIFF r/w
|
|
4657
|
+
AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
|
|
4658
|
+
AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
|
|
4659
|
+
BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
|
|
4660
|
+
BPG r | FLV r | MIFF r | PFA r | TXT r
|
|
4661
|
+
BTF r | FPF r | MKA r | PFB r | VCF r
|
|
4662
|
+
CHM r | FPX r | MKS r | PFM r | VNT r
|
|
4663
|
+
COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
|
|
4664
|
+
CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
|
|
4665
|
+
CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
|
|
4666
|
+
CRM r/w | GZ r | MODD r | PICT r | WDP r/w
|
|
4667
|
+
CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
|
|
4668
|
+
CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
|
|
4669
|
+
CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
|
|
4670
|
+
CUR r | HEIF r/w | MP3 r | PPT r | WMV r
|
|
4671
|
+
CZI r | HTML r | MP4 r/w | PPTX r | WPG r
|
|
4672
|
+
DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
|
|
4673
|
+
DCP r/w | ICO r | MPG r | PSB r/w | WV r
|
|
4674
|
+
DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
|
|
4675
|
+
DFONT r | IDML r | MQV r/w | PSP r | XCF r
|
|
4676
|
+
DIVX r | IIQ r/w | MRC r | QTIF r/w | XLS r
|
|
4677
|
+
DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
|
|
4678
|
+
DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
|
|
4679
|
+
DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
|
|
4680
|
+
DOC r | INX r | NKSC r/w | RAM r |
|
|
4681
|
+
DOCX r | ISO r | NRW r/w | RAR r |
|
|
4644
4682
|
|
|
4645
4683
|
Meta Information
|
|
4646
4684
|
----------------------+----------------------+---------------------
|
|
@@ -4677,7 +4715,7 @@ OPTIONS
|
|
|
4677
4715
|
-TAG or --TAG Extract or exclude specified tag
|
|
4678
4716
|
-TAG[+-^]=[VALUE] Write new value for tag
|
|
4679
4717
|
-TAG[+-]<=DATFILE Write tag value from contents of file
|
|
4680
|
-
-TAG[+-]<SRCTAG
|
|
4718
|
+
-[+]TAG[+-]<SRCTAG Copy tag value (see -tagsFromFile)
|
|
4681
4719
|
|
|
4682
4720
|
-tagsFromFile SRCFILE Copy tag values from file
|
|
4683
4721
|
-x TAG (-exclude) Exclude specified tag
|
|
@@ -4851,8 +4889,8 @@ OPTIONS
|
|
|
4851
4889
|
may be used to conditionally delete or replace a tag (see "WRITING
|
|
4852
4890
|
EXAMPLES" for examples). "^=" is used to write an empty string
|
|
4853
4891
|
instead of deleting the tag when no *VALUE* is given, but otherwise
|
|
4854
|
-
it is equivalent to "="
|
|
4855
|
-
|
|
4892
|
+
it is equivalent to "=". (Note that the caret must be quoted on the
|
|
4893
|
+
Windows command line.)
|
|
4856
4894
|
|
|
4857
4895
|
*TAG* may contain one or more leading family 0, 1, 2 or 7 group
|
|
4858
4896
|
names, prefixed by optional family numbers, and separated colons.
|
|
@@ -4923,7 +4961,8 @@ OPTIONS
|
|
|
4923
4961
|
delete JPEG application segments which are not associated with
|
|
4924
4962
|
another deletable group. For example, specifying "-APP14:All=" will
|
|
4925
4963
|
NOT delete the APP14 "Adobe" segment because this is accomplished
|
|
4926
|
-
with "-Adobe:All".
|
|
4964
|
+
with "-Adobe:All". But note that these unnamed APP segments may not
|
|
4965
|
+
be excluded with "--APPxx:all" when deleting all information.
|
|
4927
4966
|
|
|
4928
4967
|
6) When shifting a value, the shift is applied to the original
|
|
4929
4968
|
value of the tag, overriding any other values previously assigned
|
|
@@ -5565,7 +5604,7 @@ OPTIONS
|
|
|
5565
5604
|
|
|
5566
5605
|
produces output like this:
|
|
5567
5606
|
|
|
5568
|
-
-- Generated by ExifTool 12.
|
|
5607
|
+
-- Generated by ExifTool 12.65 --
|
|
5569
5608
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5570
5609
|
(f/5.6, 1/60s, ISO 100)
|
|
5571
5610
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -6094,13 +6133,10 @@ OPTIONS
|
|
|
6094
6133
|
Perl variables, if used, require a double "$", and regular
|
|
6095
6134
|
expressions ending in $/ must use $$/ instead.
|
|
6096
6135
|
|
|
6097
|
-
4) The condition
|
|
6098
|
-
|
|
6099
|
-
|
|
6100
|
-
|
|
6101
|
-
|
|
6102
|
-
exiftool -if EXPR -p '$directory/$filename' -ext nef DIR > nef.txt
|
|
6103
|
-
exiftool -@ nef.txt -srcfile %d%f.xmp ...
|
|
6136
|
+
4) The condition accesses only tags from the file being processed
|
|
6137
|
+
unless the -fileNUM option is used to read an alternate file and
|
|
6138
|
+
the corresponding family 8 group name is specified for the tag. See
|
|
6139
|
+
the -fileNUM option details for more information.
|
|
6104
6140
|
|
|
6105
6141
|
5) The -a option has no effect on the evaluation of the expression,
|
|
6106
6142
|
and the values of duplicate tags are accessible only by specifying
|
|
@@ -6287,11 +6323,12 @@ OPTIONS
|
|
|
6287
6323
|
When reading, causes information to be extracted from .gz and .bz2
|
|
6288
6324
|
compressed images (only one image per archive; requires gzip and
|
|
6289
6325
|
bzip2 to be available). When writing, causes compressed information
|
|
6290
|
-
to be written if supported by the metadata format (eg.
|
|
6291
|
-
textual metadata
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
6326
|
+
to be written if supported by the metadata format (eg. PNG supports
|
|
6327
|
+
compressed textual metadata, JXL supports compressed EXIF and XML,
|
|
6328
|
+
and MIE supports any compressed metadata), disables the recommended
|
|
6329
|
+
padding in embedded XMP (saving 2424 bytes when writing XMP in a
|
|
6330
|
+
file), and writes XMP in shorthand format -- the equivalent of
|
|
6331
|
+
setting the API Compress=1 and Compact="NoPadding,Shorthand".
|
|
6295
6332
|
|
|
6296
6333
|
Other options
|
|
6297
6334
|
-@ *ARGFILE*
|
|
@@ -6491,12 +6528,13 @@ OPTIONS
|
|
|
6491
6528
|
improve performance in multi-pass processing by reducing the overhead
|
|
6492
6529
|
required to load exiftool for each invocation.
|
|
6493
6530
|
|
|
6494
|
-
-api *OPT[[^]=[VAL]]*
|
|
6531
|
+
-api [*OPT[[^]=[VAL]]*]
|
|
6495
6532
|
Set ExifTool API option. *OPT* is an API option name. The option
|
|
6496
6533
|
value is set to 1 if *=VAL* is omitted. If *VAL* is omitted, the
|
|
6497
6534
|
option value is set to undef if "=" is used, or an empty string
|
|
6498
|
-
with "^=".
|
|
6499
|
-
|
|
6535
|
+
with "^=". If *OPT* is not specified a list of available options is
|
|
6536
|
+
returned. See Image::ExifTool Options for option details. This
|
|
6537
|
+
overrides API options set via the config file.
|
|
6500
6538
|
|
|
6501
6539
|
-common_args
|
|
6502
6540
|
Specifies that all arguments following this option are common to
|
|
@@ -6548,12 +6586,23 @@ OPTIONS
|
|
|
6548
6586
|
suppresses the output "{readyNUM}" message.
|
|
6549
6587
|
|
|
6550
6588
|
-file*NUM* *ALTFILE*
|
|
6551
|
-
Read tags from an alternate source file.
|
|
6552
|
-
|
|
6553
|
-
|
|
6554
|
-
|
|
6555
|
-
|
|
6556
|
-
|
|
6589
|
+
Read tags from an alternate source file. Among other things, this
|
|
6590
|
+
allows tags from different files to be compared and combined using
|
|
6591
|
+
the -if and -p options. Tags from alternate files are accessed via
|
|
6592
|
+
the corresponding family 8 group name (eg. "File1:TAG" for the
|
|
6593
|
+
-file1 option, "File2:TAG" for -file2, etc). *ALTFILE* may contain
|
|
6594
|
+
filename formatting codes like the -w option (%d, %f, etc), and/or
|
|
6595
|
+
tag names with a leading "$" symbol to access tags from the source
|
|
6596
|
+
file in the same way as the -p option (so any other dollar symbol
|
|
6597
|
+
in the file name must be doubled, eg. "money$$.jpg"). For example,
|
|
6598
|
+
assuming that the OriginalFileName tag has been set in the edited
|
|
6599
|
+
file, a command to copy Rights from the original file could look
|
|
6600
|
+
like this:
|
|
6601
|
+
|
|
6602
|
+
exiftool -file1 "$originalfilename" "-rights<file1:rights" edited.jpg
|
|
6603
|
+
|
|
6604
|
+
Composite tags may access tags from alternate files using the
|
|
6605
|
+
appropriate (case-sensitive) family 8 group name.
|
|
6557
6606
|
|
|
6558
6607
|
-list_dir
|
|
6559
6608
|
List directories themselves instead of their contents. This option
|
|
@@ -6736,6 +6785,15 @@ OPTIONS
|
|
|
6736
6785
|
|
|
6737
6786
|
Note that function names are case sensitive.
|
|
6738
6787
|
|
|
6788
|
+
ExifTool 12.64 adds an API NoDups option which makes the NoDups helper
|
|
6789
|
+
function largely redundant, with all the functionality except the
|
|
6790
|
+
ability to avoid rewriting the file if there are no duplicates, but with
|
|
6791
|
+
the advantage the duplicates may be removed when accumulating list items
|
|
6792
|
+
from multiple sources. An equivalent to the above commands using this
|
|
6793
|
+
feature would be:
|
|
6794
|
+
|
|
6795
|
+
exiftool -tagsfromfile @ -keywords -api nodups a.jpg
|
|
6796
|
+
|
|
6739
6797
|
WINDOWS UNICODE FILE NAMES
|
|
6740
6798
|
In Windows, command-line arguments are specified using the current code
|
|
6741
6799
|
page and are recoded automatically to the system code page. This
|