exiftool-vendored.pl 12.33.0 → 12.40.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 +10 -3
- package/bin/Changes +116 -0
- package/bin/MANIFEST +2 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +45 -45
- package/bin/config_files/acdsee.config +6 -6
- package/bin/config_files/photoshop_paths.config +30 -7
- package/bin/config_files/picasa_faces.config +1 -1
- package/bin/config_files/pix4d.config +2 -2
- package/bin/config_files/tiff_version.config +2 -2
- package/bin/exiftool +112 -82
- package/bin/lib/File/RandomAccess.pm +1 -1
- package/bin/lib/File/RandomAccess.pod +2 -2
- package/bin/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/APE.pm +1 -1
- package/bin/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/lib/Image/ExifTool/ASF.pm +1 -1
- package/bin/lib/Image/ExifTool/Apple.pm +1 -1
- package/bin/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +15 -4
- package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- package/bin/lib/Image/ExifTool/Canon.pm +225 -13
- package/bin/lib/Image/ExifTool/CanonCustom.pm +13 -3
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/lib/Image/ExifTool/Casio.pm +1 -1
- package/bin/lib/Image/ExifTool/Charset.pm +3 -1
- package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/lib/Image/ExifTool/DJI.pm +1 -1
- package/bin/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/lib/Image/ExifTool/DarwinCore.pm +3 -3
- package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/lib/Image/ExifTool/EXE.pm +1 -1
- package/bin/lib/Image/ExifTool/Exif.pm +64 -20
- package/bin/lib/Image/ExifTool/FITS.pm +1 -1
- package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIR.pm +48 -11
- package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- package/bin/lib/Image/ExifTool/Font.pm +1 -1
- package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
- package/bin/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/lib/Image/ExifTool/GIF.pm +6 -2
- package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +15 -11
- package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/lib/Image/ExifTool/Geotag.pm +4 -3
- package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- package/bin/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/lib/Image/ExifTool/HP.pm +1 -1
- package/bin/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +97 -5
- package/bin/lib/Image/ExifTool/ID3.pm +1 -1
- package/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- package/bin/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/lib/Image/ExifTool/Import.pm +1 -1
- package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- package/bin/lib/Image/ExifTool/JPEG.pm +6 -2
- package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +109 -12
- package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/lib/Image/ExifTool/LNK.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/lib/Image/ExifTool/M2TS.pm +1 -1
- package/bin/lib/Image/ExifTool/MIE.pm +1 -1
- package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/lib/Image/ExifTool/MXF.pm +1 -1
- package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/lib/Image/ExifTool/Matroska.pm +9 -5
- package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +1918 -72
- package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/lib/Image/ExifTool/NikonCustom.pm +523 -6
- package/bin/lib/Image/ExifTool/NikonSettings.pm +150 -87
- package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +7 -7
- package/bin/lib/Image/ExifTool/OpenEXR.pm +5 -3
- package/bin/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/lib/Image/ExifTool/PDF.pm +6 -4
- package/bin/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/lib/Image/ExifTool/PNG.pm +29 -8
- package/bin/lib/Image/ExifTool/PPM.pm +1 -1
- package/bin/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +3 -2
- package/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +25 -7
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +40 -4
- package/bin/lib/Image/ExifTool/README +4 -0
- package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/lib/Image/ExifTool/RTF.pm +1 -1
- package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- package/bin/lib/Image/ExifTool/Samsung.pm +6 -2
- package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/lib/Image/ExifTool/Shift.pl +3 -1
- package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Sony.pm +34 -12
- package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/lib/Image/ExifTool/TagInfoXML.pm +11 -6
- package/bin/lib/Image/ExifTool/TagLookup.pm +6581 -5893
- package/bin/lib/Image/ExifTool/TagNames.pod +1641 -59
- package/bin/lib/Image/ExifTool/Text.pm +1 -1
- package/bin/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/lib/Image/ExifTool/VCard.pm +1 -1
- package/bin/lib/Image/ExifTool/Validate.pm +1 -1
- package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePNG.pl +30 -10
- package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +19 -4
- package/bin/lib/Image/ExifTool/WriteXMP.pl +13 -12
- package/bin/lib/Image/ExifTool/Writer.pl +56 -10
- package/bin/lib/Image/ExifTool/XMP.pm +169 -54
- package/bin/lib/Image/ExifTool/XMP2.pl +6 -4
- package/bin/lib/Image/ExifTool/XMPStruct.pl +22 -8
- package/bin/lib/Image/ExifTool/ZIP.pm +10 -2
- package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/lib/Image/ExifTool.pm +93 -13
- package/bin/lib/Image/ExifTool.pod +80 -70
- package/bin/perl-Image-ExifTool.spec +43 -43
- package/bin/pp_build_exe.args +5 -5
- package/package.json +3 -3
package/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.40';
|
|
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
|
|
@@ -1967,6 +1969,7 @@ sub GetImageInfo($$)
|
|
|
1967
1969
|
} else {
|
|
1968
1970
|
$pipe = qq{bzip2 -dc "$file" |};
|
|
1969
1971
|
}
|
|
1972
|
+
$$et{TRUST_PIPE} = 1;
|
|
1970
1973
|
}
|
|
1971
1974
|
}
|
|
1972
1975
|
# evaluate -if expression for conditional processing
|
|
@@ -2237,12 +2240,13 @@ sub GetImageInfo($$)
|
|
|
2237
2240
|
next unless defined $forcePrint;
|
|
2238
2241
|
$grp0 = $grp1 = 'Unknown';
|
|
2239
2242
|
}
|
|
2243
|
+
# add groups from structure fields
|
|
2244
|
+
AddGroups($$info{$tag}, $grp0, \%groups, \@groups) if ref $$info{$tag};
|
|
2240
2245
|
next if $groups{$grp1};
|
|
2241
2246
|
# include family 0 and 1 groups in URI except for internal tags
|
|
2242
2247
|
# (this will put internal tags in the "XML" group on readback)
|
|
2243
2248
|
$groups{$grp1} = $grp0;
|
|
2244
2249
|
push @groups, $grp1;
|
|
2245
|
-
AddGroups($$info{$tag}, $grp0, \%groups, \@groups) if ref $$info{$tag};
|
|
2246
2250
|
}
|
|
2247
2251
|
foreach $grp1 (@groups) {
|
|
2248
2252
|
my $grp = $groups{$grp1};
|
|
@@ -2365,7 +2369,8 @@ TAG: foreach $tag (@foundTags) {
|
|
|
2365
2369
|
}
|
|
2366
2370
|
my @groups = $et->GetGroup($tag);
|
|
2367
2371
|
$outfile and close($fp), undef($tmpText); # (shouldn't happen)
|
|
2368
|
-
|
|
2372
|
+
my $org = $et->GetValue('OriginalRawFileName') || $et->GetValue('OriginalFileName');
|
|
2373
|
+
($fp, $outfile, $append) = OpenOutputFile($orig, $tagName, \@groups, $ext, $org);
|
|
2369
2374
|
$fp or ++$countBad, next TAG;
|
|
2370
2375
|
$tmpText = $outfile unless $append;
|
|
2371
2376
|
}
|
|
@@ -3061,12 +3066,14 @@ sub SetImageInfo($$$)
|
|
|
3061
3066
|
# temporarily disable CTRL-C during this critical operation
|
|
3062
3067
|
$critical = 1;
|
|
3063
3068
|
undef $tmpFile; # handle deletion of temporary file ourself
|
|
3064
|
-
if ($et->Open(\*ORIG_FILE, $file, '
|
|
3069
|
+
if ($et->Open(\*ORIG_FILE, $file, '+<')) {
|
|
3065
3070
|
binmode(ORIG_FILE);
|
|
3066
3071
|
while (read(NEW_FILE, $buff, 65536)) {
|
|
3067
3072
|
print ORIG_FILE $buff or $err = 1;
|
|
3068
3073
|
}
|
|
3069
3074
|
close(NEW_FILE);
|
|
3075
|
+
# Handle files being shorter than the original
|
|
3076
|
+
eval { truncate(ORIG_FILE, tell(ORIG_FILE)) } or $err = 1;
|
|
3070
3077
|
close(ORIG_FILE) or $err = 1;
|
|
3071
3078
|
if ($err) {
|
|
3072
3079
|
Warn "Couldn't overwrite in place - $file\n";
|
|
@@ -3462,18 +3469,26 @@ sub ConvertBinary($)
|
|
|
3462
3469
|
}
|
|
3463
3470
|
|
|
3464
3471
|
#------------------------------------------------------------------------------
|
|
3465
|
-
# Compare
|
|
3472
|
+
# Compare ValueConv and PrintConv values of a tag to see if they are equal
|
|
3466
3473
|
# Inputs: 0) value1, 1) value2
|
|
3467
3474
|
# Returns: true if they are equal
|
|
3468
3475
|
sub IsEqual($$)
|
|
3469
3476
|
{
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
+
my ($a, $b) = @_;
|
|
3478
|
+
# (scalar values are not print-converted)
|
|
3479
|
+
return 1 if $a eq $b or ref $a eq 'SCALAR';
|
|
3480
|
+
if (ref $a eq 'HASH' and ref $b eq 'HASH') {
|
|
3481
|
+
return 0 if scalar(keys %$a) != scalar(keys %$b);
|
|
3482
|
+
my $key;
|
|
3483
|
+
foreach $key (keys %$a) {
|
|
3484
|
+
return 0 unless IsEqual($$a{$key}, $$b{$key});
|
|
3485
|
+
}
|
|
3486
|
+
} else {
|
|
3487
|
+
return 0 if ref $a ne 'ARRAY' or ref $b ne 'ARRAY' or @$a != @$b;
|
|
3488
|
+
my $i;
|
|
3489
|
+
for ($i=0; $i<scalar(@$a); ++$i) {
|
|
3490
|
+
return 0 unless IsEqual($$a[$i], $$b[$i]);
|
|
3491
|
+
}
|
|
3477
3492
|
}
|
|
3478
3493
|
return 1;
|
|
3479
3494
|
}
|
|
@@ -3801,7 +3816,7 @@ sub FindFileWindows($$)
|
|
|
3801
3816
|
my $enc = $et->Options('CharsetFileName');
|
|
3802
3817
|
$wildfile = $et->Decode($wildfile, $enc, undef, 'UTF8') if $enc and $enc ne 'UTF8';
|
|
3803
3818
|
$wildfile =~ tr/\\/\//; # use forward slashes
|
|
3804
|
-
my ($dir, $wildname) = ($wildfile =~ m{(
|
|
3819
|
+
my ($dir, $wildname) = ($wildfile =~ m{(.*[:/])(.*)}) ? ($1, $2) : ('', $wildfile);
|
|
3805
3820
|
if ($dir =~ /[*?]/) {
|
|
3806
3821
|
Warn "Wildcards don't work in the directory specification\n";
|
|
3807
3822
|
return ();
|
|
@@ -3941,7 +3956,7 @@ sub SuggestedExtension($$$)
|
|
|
3941
3956
|
$ext = 'xml';
|
|
3942
3957
|
} elsif ($$valPt =~ /^RIFF....WAVE/s) {
|
|
3943
3958
|
$ext = 'wav';
|
|
3944
|
-
} elsif ($tag eq '
|
|
3959
|
+
} elsif ($tag eq 'OriginalRawImage' and defined($ext = $et->GetValue('OriginalRawFileName'))) {
|
|
3945
3960
|
$ext =~ s/^.*\.//s;
|
|
3946
3961
|
$ext = $ext ? lc($ext) : 'raw';
|
|
3947
3962
|
} elsif ($tag eq 'EXIF') {
|
|
@@ -3993,14 +4008,15 @@ sub LoadPrintFormat($)
|
|
|
3993
4008
|
# A sort of sprintf for filenames
|
|
3994
4009
|
# Inputs: 0) format string (%d=dir, %f=file name, %e=ext),
|
|
3995
4010
|
# 1) source filename or undef to test format string
|
|
3996
|
-
# 2-4) [%t %g %s only] tag name, ref to array of group names,
|
|
4011
|
+
# 2-4) [%t %g %s %o only] tag name, ref to array of group names,
|
|
4012
|
+
# suggested extension, original raw file name
|
|
3997
4013
|
# Returns: new filename or undef on error (or if no file and fmt contains token)
|
|
3998
4014
|
sub FilenameSPrintf($;$@)
|
|
3999
4015
|
{
|
|
4000
4016
|
my ($fmt, $file, @extra) = @_;
|
|
4001
4017
|
local $_;
|
|
4002
4018
|
# return format string straight away if no tokens
|
|
4003
|
-
return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[
|
|
4019
|
+
return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[dDfFeEtgso]/;
|
|
4004
4020
|
return undef unless defined $file;
|
|
4005
4021
|
CleanFilename($file); # make sure we are using forward slashes
|
|
4006
4022
|
# split filename into directory, file, extension
|
|
@@ -4014,9 +4030,9 @@ sub FilenameSPrintf($;$@)
|
|
|
4014
4030
|
}
|
|
4015
4031
|
$part{F} = $part{f} . $part{E};
|
|
4016
4032
|
($part{D} = $part{d}) =~ s{/+$}{};
|
|
4017
|
-
@part{qw(t g s)} = @extra;
|
|
4033
|
+
@part{qw(t g s o)} = @extra;
|
|
4018
4034
|
my ($filename, $pos) = ('', 0);
|
|
4019
|
-
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([
|
|
4035
|
+
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgso]))/g) {
|
|
4020
4036
|
$filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
|
|
4021
4037
|
$pos = pos($fmt);
|
|
4022
4038
|
my ($sign, $wid, $dot, $skip, $mod, $code) = ($2, $3, $4, $5 || 0, $6, $7);
|
|
@@ -4179,7 +4195,7 @@ sub OpenOutputFile($;@)
|
|
|
4179
4195
|
if ($textOut) {
|
|
4180
4196
|
$outfile = $file;
|
|
4181
4197
|
CleanFilename($outfile);
|
|
4182
|
-
if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[
|
|
4198
|
+
if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[dDfFeEtgsocC]/ or defined $tagOut) {
|
|
4183
4199
|
# make filename from printf-like $textOut
|
|
4184
4200
|
$outfile = FilenameSPrintf($textOut, $file, @args);
|
|
4185
4201
|
return () unless defined $outfile;
|
|
@@ -4443,7 +4459,7 @@ B<exiftool> [I<OPTIONS>] -I<TAG>[+-E<lt>]=[I<VALUE>]... I<FILE>...
|
|
|
4443
4459
|
=head2 Copying
|
|
4444
4460
|
|
|
4445
4461
|
B<exiftool> [I<OPTIONS>] B<-tagsFromFile> I<SRCFILE>
|
|
4446
|
-
[-I<
|
|
4462
|
+
[-[I<DSTTAG>E<lt>]I<SRCTAG>...] I<FILE>...
|
|
4447
4463
|
|
|
4448
4464
|
=head2 Other
|
|
4449
4465
|
|
|
@@ -4483,48 +4499,48 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
|
4483
4499
|
|
|
4484
4500
|
File Types
|
|
4485
4501
|
------------+-------------+-------------+-------------+------------
|
|
4486
|
-
360 r/w | DR4 r/w/c | JNG r/w |
|
|
4487
|
-
3FR r | DSS r | JP2 r/w |
|
|
4488
|
-
3G2 r/w | DV r | JPEG r/w |
|
|
4489
|
-
3GP r/w | DVB r/w | JSON r |
|
|
4490
|
-
A r | DVR-MS r | JXL r |
|
|
4491
|
-
AA r | DYLIB r | K25 r |
|
|
4492
|
-
AAE r | EIP r | KDC r |
|
|
4493
|
-
AAX r/w | EPS r/w | KEY r |
|
|
4494
|
-
ACR r | EPUB r | LA r |
|
|
4495
|
-
AFM r | ERF r/w | LFP r |
|
|
4496
|
-
AI r/w | EXE r | LIF r |
|
|
4497
|
-
AIFF r | EXIF r/w/c | LNK r |
|
|
4498
|
-
APE r | EXR r | LRV r/w |
|
|
4499
|
-
ARQ r/w | EXV r/w/c | M2TS r |
|
|
4500
|
-
ARW r/w | F4A/V r/w | M4A/V r/w |
|
|
4501
|
-
ASF r | FFF r/w | MACOS r |
|
|
4502
|
-
AVI r | FITS r | MAX r |
|
|
4503
|
-
AVIF r/w | FLA r | MEF r/w |
|
|
4504
|
-
AZW r | FLAC r | MIE r/w/ |
|
|
4505
|
-
BMP r | FLIF r/w | MIFF r c |
|
|
4506
|
-
BPG r | FLV r | MKA r |
|
|
4507
|
-
BTF r | FPF r | MKS r |
|
|
4508
|
-
CHM r | FPX r | MKV r |
|
|
4509
|
-
COS r | GIF r/w | MNG r/w |
|
|
4510
|
-
CR2 r/w | GPR r/w | MOBI r |
|
|
4511
|
-
CR3 r/w | GZ r | MODD r |
|
|
4512
|
-
CRM r/w | HDP r/w | MOI r |
|
|
4513
|
-
CRW r/w | HDR r | MOS r/w |
|
|
4514
|
-
CS1 r/w | HEIC r/w | MOV r/w |
|
|
4515
|
-
CSV r | HEIF r/w | MP3 r |
|
|
4516
|
-
CZI r | HTML r | MP4 r/w |
|
|
4517
|
-
DCM r | ICC r/w/c | MPC r |
|
|
4518
|
-
DCP r/w | ICS r | MPG r |
|
|
4519
|
-
DCR r | IDML r | MPO r/w |
|
|
4520
|
-
DFONT r | IIQ r/w | MQV r/w |
|
|
4521
|
-
DIVX r | IND r/w | MRC r |
|
|
4522
|
-
DJVU r | INSP r/w | MRW r/w |
|
|
4523
|
-
DLL r | INSV r | MXF r |
|
|
4524
|
-
DNG r/w | INX r | NEF r/w |
|
|
4525
|
-
DOC r | ISO r |
|
|
4526
|
-
DOCX r | ITC r |
|
|
4527
|
-
DPX r | J2C r |
|
|
4502
|
+
360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
|
|
4503
|
+
3FR r | DSS r | JP2 r/w | ODP r | RIFF r
|
|
4504
|
+
3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r
|
|
4505
|
+
3GP r/w | DVB r/w | JSON r | ODT r | RTF r
|
|
4506
|
+
A r | DVR-MS r | JXL r | OFR r | RW2 r/w
|
|
4507
|
+
AA r | DYLIB r | K25 r | OGG r | RWL r/w
|
|
4508
|
+
AAE r | EIP r | KDC r | OGV r | RWZ r
|
|
4509
|
+
AAX r/w | EPS r/w | KEY r | ONP r | RM r
|
|
4510
|
+
ACR r | EPUB r | LA r | OPUS r | SEQ r
|
|
4511
|
+
AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
|
|
4512
|
+
AI r/w | EXE r | LIF r | ORI r/w | SO r
|
|
4513
|
+
AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
|
|
4514
|
+
APE r | EXR r | LRV r/w | PAC r | SRF r
|
|
4515
|
+
ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
|
|
4516
|
+
ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
|
|
4517
|
+
ASF r | FFF r/w | MACOS r | PCD r | SWF r
|
|
4518
|
+
AVI r | FITS r | MAX r | PCX r | THM r/w
|
|
4519
|
+
AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w
|
|
4520
|
+
AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r
|
|
4521
|
+
BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r
|
|
4522
|
+
BPG r | FLV r | MKA r | PFA r | TTF r
|
|
4523
|
+
BTF r | FPF r | MKS r | PFB r | TXT r
|
|
4524
|
+
CHM r | FPX r | MKV r | PFM r | VCF r
|
|
4525
|
+
COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c
|
|
4526
|
+
CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r
|
|
4527
|
+
CR3 r/w | GZ r | MODD r | PLIST r | WAV r
|
|
4528
|
+
CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w
|
|
4529
|
+
CRW r/w | HDR r | MOS r/w | PMP r | WEBP r
|
|
4530
|
+
CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r
|
|
4531
|
+
CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r
|
|
4532
|
+
CZI r | HTML r | MP4 r/w | PPT r | WMV r
|
|
4533
|
+
DCM r | ICC r/w/c | MPC r | PPTX r | WTV r
|
|
4534
|
+
DCP r/w | ICS r | MPG r | PS r/w | WV r
|
|
4535
|
+
DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w
|
|
4536
|
+
DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r
|
|
4537
|
+
DIVX r | IND r/w | MRC r | PSP r | XLS r
|
|
4538
|
+
DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
|
|
4539
|
+
DLL r | INSV r | MXF r | R3D r | XMP r/w/c
|
|
4540
|
+
DNG r/w | INX r | NEF r/w | RA r | ZIP r
|
|
4541
|
+
DOC r | ISO r | NKSC r/w | RAF r/w |
|
|
4542
|
+
DOCX r | ITC r | NRW r/w | RAM r |
|
|
4543
|
+
DPX r | J2C r | NUMBERS r | RAR r |
|
|
4528
4544
|
|
|
4529
4545
|
Meta Information
|
|
4530
4546
|
----------------------+----------------------+---------------------
|
|
@@ -4716,6 +4732,14 @@ group delete (unless a family 2 group is specified, see note 4 below).
|
|
|
4716
4732
|
Instead, individual tags may be recovered using the B<-tagsFromFile> option
|
|
4717
4733
|
(eg. C<-all= -tagsfromfile @ -artist>).
|
|
4718
4734
|
|
|
4735
|
+
To speed processing when reading XMP, exclusions in XMP groups also bypass
|
|
4736
|
+
processing of the corresponding XMP property and any contained properties.
|
|
4737
|
+
For example, C<--xmp-crs:all> may speed processing significantly in cases
|
|
4738
|
+
where a large number of XMP-crs tags exist. To use this feature to bypass
|
|
4739
|
+
processing of a specific XMP property, the property name must be used
|
|
4740
|
+
instead of the ExifTool tag name (eg. C<--xmp-crs:dabs>). Also, C<XMP-all>
|
|
4741
|
+
may be used to to indicate any XMP namespace (eg. <C--xmp-all:dabs>).
|
|
4742
|
+
|
|
4719
4743
|
=item B<->I<TAG>[+-^]B<=>[I<VALUE>]
|
|
4720
4744
|
|
|
4721
4745
|
Write a new value for the specified tag (eg. C<-comment=wow>), or delete the
|
|
@@ -4726,7 +4750,8 @@ for more details). C<+=> may also be used to increment numerical values (or
|
|
|
4726
4750
|
decrement if I<VALUE> is negative), and C<-=> may be used to conditionally
|
|
4727
4751
|
delete or replace a tag (see L</WRITING EXAMPLES> for examples). C<^=> is
|
|
4728
4752
|
used to write an empty string instead of deleting the tag when no I<VALUE>
|
|
4729
|
-
is given, but otherwise it is equivalent to C
|
|
4753
|
+
is given, but otherwise it is equivalent to C<=>, but note that the caret
|
|
4754
|
+
must be quoted on the Windows command line.
|
|
4730
4755
|
|
|
4731
4756
|
I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
|
|
4732
4757
|
prefixed by optional family numbers, and separated colons. If no group name
|
|
@@ -5165,9 +5190,11 @@ various components of a date/time value. The specifics of the I<FMT> syntax
|
|
|
5165
5190
|
are system dependent -- consult the C<strftime> man page on your system for
|
|
5166
5191
|
details. The default format is equivalent to "%Y:%m:%d %H:%M:%S". This
|
|
5167
5192
|
option has no effect on date-only or time-only tags and ignores timezone
|
|
5168
|
-
information if present.
|
|
5169
|
-
|
|
5170
|
-
|
|
5193
|
+
information if present. ExifTool adds a C<%f> format code to represent
|
|
5194
|
+
fractional seconds, and supports an optional width to specify the number of
|
|
5195
|
+
digits after the decimal point (eg. C<%3f> would give something like
|
|
5196
|
+
C<.437>). Only one B<-d> option may be used per command. Requires
|
|
5197
|
+
POSIX::strptime or Time::Piece for the inversion conversion when writing.
|
|
5171
5198
|
|
|
5172
5199
|
=item B<-D> (B<-decimal>)
|
|
5173
5200
|
|
|
@@ -5394,7 +5421,8 @@ directory if C<#[SECT]> contains C<$directory>). Lines beginning with
|
|
|
5394
5421
|
C<#[BODY]> and lines not beginning with C<#> are output for each processed
|
|
5395
5422
|
file. Lines beginning with C<#[IF]> are not output, but all BODY lines are
|
|
5396
5423
|
skipped if any tag on an IF line doesn't exist. Other lines beginning with
|
|
5397
|
-
C<#> are ignored.
|
|
5424
|
+
C<#> are ignored. (To output a line beginning with C<#>, use C<#[BODY]#>.)
|
|
5425
|
+
For example, this format file:
|
|
5398
5426
|
|
|
5399
5427
|
# this is a comment line
|
|
5400
5428
|
#[HEAD]-- Generated by ExifTool $exifToolVersion --
|
|
@@ -5408,7 +5436,7 @@ with this command:
|
|
|
5408
5436
|
|
|
5409
5437
|
produces output like this:
|
|
5410
5438
|
|
|
5411
|
-
-- Generated by ExifTool 12.
|
|
5439
|
+
-- Generated by ExifTool 12.40 --
|
|
5412
5440
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5413
5441
|
(f/5.6, 1/60s, ISO 100)
|
|
5414
5442
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5663,12 +5691,14 @@ between B<-W> and B<-w>:
|
|
|
5663
5691
|
|
|
5664
5692
|
1) With B<-W>, a new output file is created for each extracted tag.
|
|
5665
5693
|
|
|
5666
|
-
2) B<-W> supports
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
The
|
|
5671
|
-
|
|
5694
|
+
2) B<-W> supports four additional format codes: %t, %g and %s represent the
|
|
5695
|
+
tag name, group name, and suggested extension for the output file (based on
|
|
5696
|
+
the format of the data), and %o represents the value of the
|
|
5697
|
+
OriginalRawFileName or OriginalFileName tag from the input file (including
|
|
5698
|
+
extension). The %g code may be followed by a single digit to specify the
|
|
5699
|
+
group family number (eg. %g1), otherwise family 0 is assumed. The substring
|
|
5700
|
+
width/position/case specifiers may be used with these format codes in
|
|
5701
|
+
exactly the same way as with %f and %e.
|
|
5672
5702
|
|
|
5673
5703
|
3) The argument for B<-W> is interpreted as a file name if it contains no
|
|
5674
5704
|
format codes. (For B<-w>, this would be a file extension.) This change
|
|
@@ -5688,7 +5718,7 @@ example, the following pairs of commands give the same result:
|
|
|
5688
5718
|
4) Adding the B<-v> option to B<-W> sends a list of the tags and output file
|
|
5689
5719
|
names to the console instead of giving a verbose dump of the entire file.
|
|
5690
5720
|
(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,
|
|
5721
|
+
B<-W+> with an output file I<FMT> that does not contain %t, %g, %s or %o.)
|
|
5692
5722
|
|
|
5693
5723
|
5) Individual list items are stored in separate files when B<-W> is combined
|
|
5694
5724
|
with B<-b>, but note that for separate files to be created %c or %C must be
|
|
@@ -7220,7 +7250,7 @@ the commands if B<-execute> was used).
|
|
|
7220
7250
|
|
|
7221
7251
|
=head1 AUTHOR
|
|
7222
7252
|
|
|
7223
|
-
Copyright 2003-
|
|
7253
|
+
Copyright 2003-2022, Phil Harvey
|
|
7224
7254
|
|
|
7225
7255
|
This is free software; you can redistribute it and/or modify it under the
|
|
7226
7256
|
same terms as Perl itself.
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
#
|
|
26
26
|
# May also be used for string i/o (just pass a scalar reference)
|
|
27
27
|
#
|
|
28
|
-
# Legal: Copyright (c) 2003-
|
|
28
|
+
# Legal: Copyright (c) 2003-2022 Phil Harvey (philharvey66 at gmail.com)
|
|
29
29
|
# This library is free software; you can redistribute it and/or
|
|
30
30
|
# modify it under the same terms as Perl itself.
|
|
31
31
|
#------------------------------------------------------------------------------
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# Description: Buffer to support random access reading of sequential file
|
|
5
5
|
#
|
|
6
|
-
# Legal: Copyright (c) 2003-
|
|
6
|
+
# Legal: Copyright (c) 2003-2022 Phil Harvey (philharvey66 at gmail.com)
|
|
7
7
|
# This library is free software; you can redistribute it and/or
|
|
8
8
|
# modify it under the same terms as Perl itself.
|
|
9
9
|
#------------------------------------------------------------------------------
|
|
@@ -236,7 +236,7 @@ the end of file is not allowed.
|
|
|
236
236
|
|
|
237
237
|
=head1 AUTHOR
|
|
238
238
|
|
|
239
|
-
Copyright 2003-
|
|
239
|
+
Copyright 2003-2022 Phil Harvey (philharvey66 at gmail.com)
|
|
240
240
|
|
|
241
241
|
This library is free software; you can redistribute it and/or modify it
|
|
242
242
|
under the same terms as Perl itself.
|
|
@@ -477,7 +477,7 @@ main purpose of encryption, so this really can't be considered a bug.
|
|
|
477
477
|
|
|
478
478
|
=head1 AUTHOR
|
|
479
479
|
|
|
480
|
-
Copyright 2003-
|
|
480
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
481
481
|
|
|
482
482
|
This library is free software; you can redistribute it and/or modify it
|
|
483
483
|
under the same terms as Perl itself.
|
|
@@ -259,7 +259,7 @@ scanning for AFCP information.
|
|
|
259
259
|
|
|
260
260
|
=head1 AUTHOR
|
|
261
261
|
|
|
262
|
-
Copyright 2003-
|
|
262
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
263
263
|
|
|
264
264
|
This library is free software; you can redistribute it and/or modify it
|
|
265
265
|
under the same terms as Perl itself.
|
|
@@ -287,7 +287,7 @@ information from AIFF (Audio Interchange File Format) audio files.
|
|
|
287
287
|
|
|
288
288
|
=head1 AUTHOR
|
|
289
289
|
|
|
290
|
-
Copyright 2003-
|
|
290
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
291
291
|
|
|
292
292
|
This library is free software; you can redistribute it and/or modify it
|
|
293
293
|
under the same terms as Perl itself.
|
|
@@ -263,7 +263,7 @@ Currently doesn't parse MAC header unless it is at the start of the file.
|
|
|
263
263
|
|
|
264
264
|
=head1 AUTHOR
|
|
265
265
|
|
|
266
|
-
Copyright 2003-
|
|
266
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
267
267
|
|
|
268
268
|
This library is free software; you can redistribute it and/or modify it
|
|
269
269
|
under the same terms as Perl itself.
|
|
@@ -305,7 +305,7 @@ APP12 meta information.
|
|
|
305
305
|
|
|
306
306
|
=head1 AUTHOR
|
|
307
307
|
|
|
308
|
-
Copyright 2003-
|
|
308
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
309
309
|
|
|
310
310
|
This library is free software; you can redistribute it and/or modify it
|
|
311
311
|
under the same terms as Perl itself.
|
|
@@ -876,7 +876,7 @@ Windows Media Audio (WMA) and Windows Media Video (WMV) files.
|
|
|
876
876
|
|
|
877
877
|
=head1 AUTHOR
|
|
878
878
|
|
|
879
|
-
Copyright 2003-
|
|
879
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
880
880
|
|
|
881
881
|
This library is free software; you can redistribute it and/or modify it
|
|
882
882
|
under the same terms as Perl itself.
|
|
@@ -149,7 +149,7 @@ Apple maker notes in EXIF information.
|
|
|
149
149
|
|
|
150
150
|
=head1 AUTHOR
|
|
151
151
|
|
|
152
|
-
Copyright 2003-
|
|
152
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
153
153
|
|
|
154
154
|
This library is free software; you can redistribute it and/or modify it
|
|
155
155
|
under the same terms as Perl itself.
|
|
@@ -291,7 +291,7 @@ information from Audible audio books.
|
|
|
291
291
|
|
|
292
292
|
=head1 AUTHOR
|
|
293
293
|
|
|
294
|
-
Copyright 2003-
|
|
294
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
295
295
|
|
|
296
296
|
This library is free software; you can redistribute it and/or modify it
|
|
297
297
|
under the same terms as Perl itself.
|
|
@@ -335,7 +335,7 @@ This module contains definitions required by Image::ExifTool to read BMP
|
|
|
335
335
|
|
|
336
336
|
=head1 AUTHOR
|
|
337
337
|
|
|
338
|
-
Copyright 2003-
|
|
338
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
339
339
|
|
|
340
340
|
This library is free software; you can redistribute it and/or modify it
|
|
341
341
|
under the same terms as Perl itself.
|
|
@@ -231,7 +231,7 @@ This module contains definitions required by Image::ExifTool to read BPG
|
|
|
231
231
|
|
|
232
232
|
=head1 AUTHOR
|
|
233
233
|
|
|
234
|
-
Copyright 2003-
|
|
234
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
235
235
|
|
|
236
236
|
This library is free software; you can redistribute it and/or modify it
|
|
237
237
|
under the same terms as Perl itself.
|
|
@@ -445,7 +445,7 @@ compression ability).
|
|
|
445
445
|
|
|
446
446
|
=head1 AUTHOR
|
|
447
447
|
|
|
448
|
-
Copyright 2003-
|
|
448
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
449
449
|
Copyright 2002, Leon Bottou and Yann Le Cun
|
|
450
450
|
Copyright 2001, AT&T
|
|
451
451
|
Copyright 1999-2001, LizardTech Inc.
|
|
@@ -275,7 +275,7 @@ information in BigTIFF images.
|
|
|
275
275
|
|
|
276
276
|
=head1 AUTHOR
|
|
277
277
|
|
|
278
|
-
Copyright 2003-
|
|
278
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
279
279
|
|
|
280
280
|
This library is free software; you can redistribute it and/or modify it
|
|
281
281
|
under the same terms as Perl itself.
|
|
@@ -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.47';
|
|
39
39
|
@ISA = qw(Exporter);
|
|
40
40
|
|
|
41
41
|
sub NumbersFirst($$);
|
|
@@ -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.
|
|
@@ -664,7 +669,7 @@ L<Image::ExifTool::BuildTagLookup|Image::ExifTool::BuildTagLookup>.
|
|
|
664
669
|
|
|
665
670
|
~head1 AUTHOR
|
|
666
671
|
|
|
667
|
-
Copyright 2003-
|
|
672
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
668
673
|
|
|
669
674
|
This library is free software; you can redistribute it and/or modify it
|
|
670
675
|
under the same terms as Perl itself.
|
|
@@ -752,7 +757,7 @@ sub new
|
|
|
752
757
|
my (%tagNameInfo, %id, %longID, %longName, %shortName, %tableNum,
|
|
753
758
|
%tagLookup, %tagExists, %noLookup, %tableWritable, %sepTable, %case,
|
|
754
759
|
%structs, %compositeModules, %isPlugin, %flattened, %structLookup,
|
|
755
|
-
@writePseudo);
|
|
760
|
+
@writePseudo, %dupXmpTag);
|
|
756
761
|
$self->{TAG_NAME_INFO} = \%tagNameInfo;
|
|
757
762
|
$self->{ID_LOOKUP} = \%id;
|
|
758
763
|
$self->{LONG_ID} = \%longID;
|
|
@@ -900,6 +905,12 @@ TagID: foreach $tagID (@keys) {
|
|
|
900
905
|
foreach (@grps) {
|
|
901
906
|
warn "Group name starts with 'ID-' for $short $name\n" if /^ID-/i;
|
|
902
907
|
}
|
|
908
|
+
if ($isXMP and not $$tagInfo{Avoid} and not $$tagInfo{Struct} and
|
|
909
|
+
($$tagInfo{Writable} or $$table{WRITABLE}))
|
|
910
|
+
{
|
|
911
|
+
$dupXmpTag{$name} and warn "Duplicate writable XMP tag $name\n";
|
|
912
|
+
$dupXmpTag{$name} = 1;
|
|
913
|
+
}
|
|
903
914
|
# validate Name (must not start with a digit or else XML output will not be valid;
|
|
904
915
|
# must not start with a dash or exiftool command line may get confused)
|
|
905
916
|
if ($name !~ /^[_A-Za-z][-\w]+$/ and
|
|
@@ -2751,7 +2762,7 @@ Returned list of writable pseudo tags.
|
|
|
2751
2762
|
|
|
2752
2763
|
=head1 AUTHOR
|
|
2753
2764
|
|
|
2754
|
-
Copyright 2003-
|
|
2765
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
2755
2766
|
|
|
2756
2767
|
This library is free software; you can redistribute it and/or modify it
|
|
2757
2768
|
under the same terms as Perl itself.
|
|
@@ -307,7 +307,7 @@ specification.
|
|
|
307
307
|
|
|
308
308
|
=head1 AUTHOR
|
|
309
309
|
|
|
310
|
-
Copyright 2003-
|
|
310
|
+
Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
|
|
311
311
|
|
|
312
312
|
This library is free software; you can redistribute it and/or modify it
|
|
313
313
|
under the same terms as Perl itself.
|