exiftool-vendored.exe 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 +254 -247
- package/bin/exiftool_files/Changes +116 -0
- package/bin/exiftool_files/README +45 -45
- package/bin/exiftool_files/config_files/acdsee.config +6 -6
- package/bin/exiftool_files/config_files/photoshop_paths.config +30 -7
- package/bin/exiftool_files/config_files/picasa_faces.config +1 -1
- package/bin/exiftool_files/config_files/pix4d.config +2 -2
- package/bin/exiftool_files/config_files/tiff_version.config +2 -2
- package/bin/exiftool_files/exiftool.pl +112 -82
- package/bin/exiftool_files/lib/File/RandomAccess.pm +1 -1
- package/bin/exiftool_files/lib/File/RandomAccess.pod +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +15 -4
- package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +225 -13
- package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +13 -3
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +64 -20
- package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +48 -11
- package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +6 -2
- package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +15 -11
- package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +4 -3
- package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +97 -5
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +6 -2
- package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +109 -12
- package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +9 -5
- package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +1918 -72
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +523 -6
- package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +150 -87
- package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +7 -7
- package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +5 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +6 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +29 -8
- package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +25 -7
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +40 -4
- package/bin/exiftool_files/lib/Image/ExifTool/README +4 -0
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +6 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +34 -12
- package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +11 -6
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +6581 -5893
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +1641 -59
- package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +30 -10
- package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +19 -4
- package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +13 -12
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +56 -10
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +169 -54
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +6 -4
- package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +22 -8
- package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +10 -2
- package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool.pm +93 -13
- package/bin/exiftool_files/lib/Image/ExifTool.pod +80 -70
- package/package.json +3 -3
|
@@ -10,15 +10,15 @@
|
|
|
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 $
|
|
16
|
+
my $exePath;
|
|
17
17
|
BEGIN {
|
|
18
18
|
# (undocumented -xpath option added in 11.91, must come before other options)
|
|
19
|
-
$
|
|
19
|
+
$exePath = @ARGV && lc($ARGV[0]) eq '-xpath' && shift() ? $^X : $0;
|
|
20
20
|
# get exe directory
|
|
21
|
-
$exeDir = ($
|
|
21
|
+
$Image::ExifTool::exeDir = ($exePath =~ /(.*)[\\\/]/) ? $1 : '.';
|
|
22
22
|
# (no link following for Windows exe version)
|
|
23
23
|
# add lib directory at start of include path
|
|
24
24
|
unshift @INC, ($0 =~ /(.*)[\\\/]/) ? "$1/lib" : './lib';
|
|
@@ -350,7 +350,7 @@ sub Cleanup() {
|
|
|
350
350
|
#
|
|
351
351
|
|
|
352
352
|
# add arguments embedded in filename (Windows .exe version only)
|
|
353
|
-
if ($
|
|
353
|
+
if ($exePath =~ /\(([^\\\/]+)\)(.exe|.pl)?$/i) {
|
|
354
354
|
my $argstr = $1;
|
|
355
355
|
# divide into separate quoted or whitespace-delineated arguments
|
|
356
356
|
my (@args, $arg, $quote);
|
|
@@ -773,7 +773,7 @@ for (;;) {
|
|
|
773
773
|
}
|
|
774
774
|
my $fp = ($stayOpen == 1 ? \*STAYOPEN : \*ARGFILE);
|
|
775
775
|
unless ($mt->Open($fp, $argFile)) {
|
|
776
|
-
unless ($argFile !~ /^\// and $mt->Open($fp, "$exeDir/$argFile")) {
|
|
776
|
+
unless ($argFile !~ /^\// and $mt->Open($fp, "$Image::ExifTool::exeDir/$argFile")) {
|
|
777
777
|
Error "Error opening arg file $argFile\n";
|
|
778
778
|
$badCmd = 1;
|
|
779
779
|
next
|
|
@@ -1251,7 +1251,7 @@ for (;;) {
|
|
|
1251
1251
|
$textOverwrite += 2 if $t2 =~ /\+/; # append
|
|
1252
1252
|
if ($t1 ne 'W' and lc($t1) ne 'tagout') {
|
|
1253
1253
|
undef $tagOut;
|
|
1254
|
-
} elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[
|
|
1254
|
+
} elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[tgso]/) {
|
|
1255
1255
|
$tagOut = 0; # append tags to one file
|
|
1256
1256
|
} else {
|
|
1257
1257
|
$tagOut = 1; # separate file for each tag
|
|
@@ -1967,6 +1967,7 @@ sub GetImageInfo($$)
|
|
|
1967
1967
|
} else {
|
|
1968
1968
|
$pipe = qq{bzip2 -dc "$file" |};
|
|
1969
1969
|
}
|
|
1970
|
+
$$et{TRUST_PIPE} = 1;
|
|
1970
1971
|
}
|
|
1971
1972
|
}
|
|
1972
1973
|
# evaluate -if expression for conditional processing
|
|
@@ -2237,12 +2238,13 @@ sub GetImageInfo($$)
|
|
|
2237
2238
|
next unless defined $forcePrint;
|
|
2238
2239
|
$grp0 = $grp1 = 'Unknown';
|
|
2239
2240
|
}
|
|
2241
|
+
# add groups from structure fields
|
|
2242
|
+
AddGroups($$info{$tag}, $grp0, \%groups, \@groups) if ref $$info{$tag};
|
|
2240
2243
|
next if $groups{$grp1};
|
|
2241
2244
|
# include family 0 and 1 groups in URI except for internal tags
|
|
2242
2245
|
# (this will put internal tags in the "XML" group on readback)
|
|
2243
2246
|
$groups{$grp1} = $grp0;
|
|
2244
2247
|
push @groups, $grp1;
|
|
2245
|
-
AddGroups($$info{$tag}, $grp0, \%groups, \@groups) if ref $$info{$tag};
|
|
2246
2248
|
}
|
|
2247
2249
|
foreach $grp1 (@groups) {
|
|
2248
2250
|
my $grp = $groups{$grp1};
|
|
@@ -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";
|
|
@@ -3462,18 +3467,26 @@ sub ConvertBinary($)
|
|
|
3462
3467
|
}
|
|
3463
3468
|
|
|
3464
3469
|
#------------------------------------------------------------------------------
|
|
3465
|
-
# Compare
|
|
3470
|
+
# Compare ValueConv and PrintConv values of a tag to see if they are equal
|
|
3466
3471
|
# Inputs: 0) value1, 1) value2
|
|
3467
3472
|
# Returns: true if they are equal
|
|
3468
3473
|
sub IsEqual($$)
|
|
3469
3474
|
{
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3475
|
+
my ($a, $b) = @_;
|
|
3476
|
+
# (scalar values are not print-converted)
|
|
3477
|
+
return 1 if $a eq $b or ref $a eq 'SCALAR';
|
|
3478
|
+
if (ref $a eq 'HASH' and ref $b eq 'HASH') {
|
|
3479
|
+
return 0 if scalar(keys %$a) != scalar(keys %$b);
|
|
3480
|
+
my $key;
|
|
3481
|
+
foreach $key (keys %$a) {
|
|
3482
|
+
return 0 unless IsEqual($$a{$key}, $$b{$key});
|
|
3483
|
+
}
|
|
3484
|
+
} else {
|
|
3485
|
+
return 0 if ref $a ne 'ARRAY' or ref $b ne 'ARRAY' or @$a != @$b;
|
|
3486
|
+
my $i;
|
|
3487
|
+
for ($i=0; $i<scalar(@$a); ++$i) {
|
|
3488
|
+
return 0 unless IsEqual($$a[$i], $$b[$i]);
|
|
3489
|
+
}
|
|
3477
3490
|
}
|
|
3478
3491
|
return 1;
|
|
3479
3492
|
}
|
|
@@ -3801,7 +3814,7 @@ sub FindFileWindows($$)
|
|
|
3801
3814
|
my $enc = $et->Options('CharsetFileName');
|
|
3802
3815
|
$wildfile = $et->Decode($wildfile, $enc, undef, 'UTF8') if $enc and $enc ne 'UTF8';
|
|
3803
3816
|
$wildfile =~ tr/\\/\//; # use forward slashes
|
|
3804
|
-
my ($dir, $wildname) = ($wildfile =~ m{(
|
|
3817
|
+
my ($dir, $wildname) = ($wildfile =~ m{(.*[:/])(.*)}) ? ($1, $2) : ('', $wildfile);
|
|
3805
3818
|
if ($dir =~ /[*?]/) {
|
|
3806
3819
|
Warn "Wildcards don't work in the directory specification\n";
|
|
3807
3820
|
return ();
|
|
@@ -3941,7 +3954,7 @@ sub SuggestedExtension($$$)
|
|
|
3941
3954
|
$ext = 'xml';
|
|
3942
3955
|
} elsif ($$valPt =~ /^RIFF....WAVE/s) {
|
|
3943
3956
|
$ext = 'wav';
|
|
3944
|
-
} elsif ($tag eq '
|
|
3957
|
+
} elsif ($tag eq 'OriginalRawImage' and defined($ext = $et->GetValue('OriginalRawFileName'))) {
|
|
3945
3958
|
$ext =~ s/^.*\.//s;
|
|
3946
3959
|
$ext = $ext ? lc($ext) : 'raw';
|
|
3947
3960
|
} elsif ($tag eq 'EXIF') {
|
|
@@ -3993,14 +4006,15 @@ sub LoadPrintFormat($)
|
|
|
3993
4006
|
# A sort of sprintf for filenames
|
|
3994
4007
|
# Inputs: 0) format string (%d=dir, %f=file name, %e=ext),
|
|
3995
4008
|
# 1) source filename or undef to test format string
|
|
3996
|
-
# 2-4) [%t %g %s only] tag name, ref to array of group names,
|
|
4009
|
+
# 2-4) [%t %g %s %o only] tag name, ref to array of group names,
|
|
4010
|
+
# suggested extension, original raw file name
|
|
3997
4011
|
# Returns: new filename or undef on error (or if no file and fmt contains token)
|
|
3998
4012
|
sub FilenameSPrintf($;$@)
|
|
3999
4013
|
{
|
|
4000
4014
|
my ($fmt, $file, @extra) = @_;
|
|
4001
4015
|
local $_;
|
|
4002
4016
|
# return format string straight away if no tokens
|
|
4003
|
-
return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[
|
|
4017
|
+
return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[dDfFeEtgso]/;
|
|
4004
4018
|
return undef unless defined $file;
|
|
4005
4019
|
CleanFilename($file); # make sure we are using forward slashes
|
|
4006
4020
|
# split filename into directory, file, extension
|
|
@@ -4014,9 +4028,9 @@ sub FilenameSPrintf($;$@)
|
|
|
4014
4028
|
}
|
|
4015
4029
|
$part{F} = $part{f} . $part{E};
|
|
4016
4030
|
($part{D} = $part{d}) =~ s{/+$}{};
|
|
4017
|
-
@part{qw(t g s)} = @extra;
|
|
4031
|
+
@part{qw(t g s o)} = @extra;
|
|
4018
4032
|
my ($filename, $pos) = ('', 0);
|
|
4019
|
-
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([
|
|
4033
|
+
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgso]))/g) {
|
|
4020
4034
|
$filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
|
|
4021
4035
|
$pos = pos($fmt);
|
|
4022
4036
|
my ($sign, $wid, $dot, $skip, $mod, $code) = ($2, $3, $4, $5 || 0, $6, $7);
|
|
@@ -4179,7 +4193,7 @@ sub OpenOutputFile($;@)
|
|
|
4179
4193
|
if ($textOut) {
|
|
4180
4194
|
$outfile = $file;
|
|
4181
4195
|
CleanFilename($outfile);
|
|
4182
|
-
if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[
|
|
4196
|
+
if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[dDfFeEtgsocC]/ or defined $tagOut) {
|
|
4183
4197
|
# make filename from printf-like $textOut
|
|
4184
4198
|
$outfile = FilenameSPrintf($textOut, $file, @args);
|
|
4185
4199
|
return () unless defined $outfile;
|
|
@@ -4455,7 +4469,7 @@ SYNOPSIS
|
|
|
4455
4469
|
exiftool [*OPTIONS*] -*TAG*[+-<]=[*VALUE*]... *FILE*...
|
|
4456
4470
|
|
|
4457
4471
|
Copying
|
|
4458
|
-
exiftool [*OPTIONS*] -tagsFromFile *SRCFILE* [
|
|
4472
|
+
exiftool [*OPTIONS*] -tagsFromFile *SRCFILE* [-[*DSTTAG*<]*SRCTAG*...]
|
|
4459
4473
|
*FILE*...
|
|
4460
4474
|
|
|
4461
4475
|
Other
|
|
@@ -4494,48 +4508,48 @@ DESCRIPTION
|
|
|
4494
4508
|
|
|
4495
4509
|
File Types
|
|
4496
4510
|
------------+-------------+-------------+-------------+------------
|
|
4497
|
-
360 r/w | DR4 r/w/c | JNG r/w |
|
|
4498
|
-
3FR r | DSS r | JP2 r/w |
|
|
4499
|
-
3G2 r/w | DV r | JPEG r/w |
|
|
4500
|
-
3GP r/w | DVB r/w | JSON r |
|
|
4501
|
-
A r | DVR-MS r | JXL r |
|
|
4502
|
-
AA r | DYLIB r | K25 r |
|
|
4503
|
-
AAE r | EIP r | KDC r |
|
|
4504
|
-
AAX r/w | EPS r/w | KEY r |
|
|
4505
|
-
ACR r | EPUB r | LA r |
|
|
4506
|
-
AFM r | ERF r/w | LFP r |
|
|
4507
|
-
AI r/w | EXE r | LIF r |
|
|
4508
|
-
AIFF r | EXIF r/w/c | LNK r |
|
|
4509
|
-
APE r | EXR r | LRV r/w |
|
|
4510
|
-
ARQ r/w | EXV r/w/c | M2TS r |
|
|
4511
|
-
ARW r/w | F4A/V r/w | M4A/V r/w |
|
|
4512
|
-
ASF r | FFF r/w | MACOS r |
|
|
4513
|
-
AVI r | FITS r | MAX r |
|
|
4514
|
-
AVIF r/w | FLA r | MEF r/w |
|
|
4515
|
-
AZW r | FLAC r | MIE r/w/ |
|
|
4516
|
-
BMP r | FLIF r/w | MIFF r c |
|
|
4517
|
-
BPG r | FLV r | MKA r |
|
|
4518
|
-
BTF r | FPF r | MKS r |
|
|
4519
|
-
CHM r | FPX r | MKV r |
|
|
4520
|
-
COS r | GIF r/w | MNG r/w |
|
|
4521
|
-
CR2 r/w | GPR r/w | MOBI r |
|
|
4522
|
-
CR3 r/w | GZ r | MODD r |
|
|
4523
|
-
CRM r/w | HDP r/w | MOI r |
|
|
4524
|
-
CRW r/w | HDR r | MOS r/w |
|
|
4525
|
-
CS1 r/w | HEIC r/w | MOV r/w |
|
|
4526
|
-
CSV r | HEIF r/w | MP3 r |
|
|
4527
|
-
CZI r | HTML r | MP4 r/w |
|
|
4528
|
-
DCM r | ICC r/w/c | MPC r |
|
|
4529
|
-
DCP r/w | ICS r | MPG r |
|
|
4530
|
-
DCR r | IDML r | MPO r/w |
|
|
4531
|
-
DFONT r | IIQ r/w | MQV r/w |
|
|
4532
|
-
DIVX r | IND r/w | MRC r |
|
|
4533
|
-
DJVU r | INSP r/w | MRW r/w |
|
|
4534
|
-
DLL r | INSV r | MXF r |
|
|
4535
|
-
DNG r/w | INX r | NEF r/w |
|
|
4536
|
-
DOC r | ISO r |
|
|
4537
|
-
DOCX r | ITC r |
|
|
4538
|
-
DPX r | J2C r |
|
|
4511
|
+
360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
|
|
4512
|
+
3FR r | DSS r | JP2 r/w | ODP r | RIFF r
|
|
4513
|
+
3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r
|
|
4514
|
+
3GP r/w | DVB r/w | JSON r | ODT r | RTF r
|
|
4515
|
+
A r | DVR-MS r | JXL r | OFR r | RW2 r/w
|
|
4516
|
+
AA r | DYLIB r | K25 r | OGG r | RWL r/w
|
|
4517
|
+
AAE r | EIP r | KDC r | OGV r | RWZ r
|
|
4518
|
+
AAX r/w | EPS r/w | KEY r | ONP r | RM r
|
|
4519
|
+
ACR r | EPUB r | LA r | OPUS r | SEQ r
|
|
4520
|
+
AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
|
|
4521
|
+
AI r/w | EXE r | LIF r | ORI r/w | SO r
|
|
4522
|
+
AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
|
|
4523
|
+
APE r | EXR r | LRV r/w | PAC r | SRF r
|
|
4524
|
+
ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
|
|
4525
|
+
ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
|
|
4526
|
+
ASF r | FFF r/w | MACOS r | PCD r | SWF r
|
|
4527
|
+
AVI r | FITS r | MAX r | PCX r | THM r/w
|
|
4528
|
+
AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w
|
|
4529
|
+
AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r
|
|
4530
|
+
BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r
|
|
4531
|
+
BPG r | FLV r | MKA r | PFA r | TTF r
|
|
4532
|
+
BTF r | FPF r | MKS r | PFB r | TXT r
|
|
4533
|
+
CHM r | FPX r | MKV r | PFM r | VCF r
|
|
4534
|
+
COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c
|
|
4535
|
+
CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r
|
|
4536
|
+
CR3 r/w | GZ r | MODD r | PLIST r | WAV r
|
|
4537
|
+
CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w
|
|
4538
|
+
CRW r/w | HDR r | MOS r/w | PMP r | WEBP r
|
|
4539
|
+
CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r
|
|
4540
|
+
CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r
|
|
4541
|
+
CZI r | HTML r | MP4 r/w | PPT r | WMV r
|
|
4542
|
+
DCM r | ICC r/w/c | MPC r | PPTX r | WTV r
|
|
4543
|
+
DCP r/w | ICS r | MPG r | PS r/w | WV r
|
|
4544
|
+
DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w
|
|
4545
|
+
DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r
|
|
4546
|
+
DIVX r | IND r/w | MRC r | PSP r | XLS r
|
|
4547
|
+
DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r
|
|
4548
|
+
DLL r | INSV r | MXF r | R3D r | XMP r/w/c
|
|
4549
|
+
DNG r/w | INX r | NEF r/w | RA r | ZIP r
|
|
4550
|
+
DOC r | ISO r | NKSC r/w | RAF r/w |
|
|
4551
|
+
DOCX r | ITC r | NRW r/w | RAM r |
|
|
4552
|
+
DPX r | J2C r | NUMBERS r | RAR r |
|
|
4539
4553
|
|
|
4540
4554
|
Meta Information
|
|
4541
4555
|
----------------------+----------------------+---------------------
|
|
@@ -4724,6 +4738,15 @@ OPTIONS
|
|
|
4724
4738
|
4 below). Instead, individual tags may be recovered using the
|
|
4725
4739
|
-tagsFromFile option (eg. "-all= -tagsfromfile @ -artist").
|
|
4726
4740
|
|
|
4741
|
+
To speed processing when reading XMP, exclusions in XMP groups also
|
|
4742
|
+
bypass processing of the corresponding XMP property and any
|
|
4743
|
+
contained properties. For example, "--xmp-crs:all" may speed
|
|
4744
|
+
processing significantly in cases where a large number of XMP-crs
|
|
4745
|
+
tags exist. To use this feature to bypass processing of a specific
|
|
4746
|
+
XMP property, the property name must be used instead of the
|
|
4747
|
+
ExifTool tag name (eg. "--xmp-crs:dabs"). Also, "XMP-all" may be
|
|
4748
|
+
used to to indicate any XMP namespace (eg. <C--xmp-all:dabs>).
|
|
4749
|
+
|
|
4727
4750
|
-*TAG*[+-^]=[*VALUE*]
|
|
4728
4751
|
Write a new value for the specified tag (eg. "-comment=wow"), or
|
|
4729
4752
|
delete the tag if no *VALUE* is given (eg. "-comment="). "+=" and
|
|
@@ -4734,7 +4757,8 @@ OPTIONS
|
|
|
4734
4757
|
may be used to conditionally delete or replace a tag (see "WRITING
|
|
4735
4758
|
EXAMPLES" for examples). "^=" is used to write an empty string
|
|
4736
4759
|
instead of deleting the tag when no *VALUE* is given, but otherwise
|
|
4737
|
-
it is equivalent to "="
|
|
4760
|
+
it is equivalent to "=", but note that the caret must be quoted on
|
|
4761
|
+
the Windows command line.
|
|
4738
4762
|
|
|
4739
4763
|
*TAG* may contain one or more leading family 0, 1, 2 or 7 group
|
|
4740
4764
|
names, prefixed by optional family numbers, and separated colons.
|
|
@@ -5190,7 +5214,10 @@ OPTIONS
|
|
|
5190
5214
|
"strftime" man page on your system for details. The default format
|
|
5191
5215
|
is equivalent to "%Y:%m:%d %H:%M:%S". This option has no effect on
|
|
5192
5216
|
date-only or time-only tags and ignores timezone information if
|
|
5193
|
-
present.
|
|
5217
|
+
present. ExifTool adds a %f format code to represent fractional
|
|
5218
|
+
seconds, and supports an optional width to specify the number of
|
|
5219
|
+
digits after the decimal point (eg. %3f would give something like
|
|
5220
|
+
.437). Only one -d option may be used per command. Requires
|
|
5194
5221
|
POSIX::strptime or Time::Piece for the inversion conversion when
|
|
5195
5222
|
writing.
|
|
5196
5223
|
|
|
@@ -5419,7 +5446,8 @@ OPTIONS
|
|
|
5419
5446
|
beginning with "#" are output for each processed file. Lines
|
|
5420
5447
|
beginning with "#[IF]" are not output, but all BODY lines are
|
|
5421
5448
|
skipped if any tag on an IF line doesn't exist. Other lines
|
|
5422
|
-
beginning with "#" are ignored.
|
|
5449
|
+
beginning with "#" are ignored. (To output a line beginning with
|
|
5450
|
+
"#", use "#[BODY]#".) For example, this format file:
|
|
5423
5451
|
|
|
5424
5452
|
# this is a comment line
|
|
5425
5453
|
#[HEAD]-- Generated by ExifTool $exifToolVersion --
|
|
@@ -5433,7 +5461,7 @@ OPTIONS
|
|
|
5433
5461
|
|
|
5434
5462
|
produces output like this:
|
|
5435
5463
|
|
|
5436
|
-
-- Generated by ExifTool 12.
|
|
5464
|
+
-- Generated by ExifTool 12.40 --
|
|
5437
5465
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5438
5466
|
(f/5.6, 1/60s, ISO 100)
|
|
5439
5467
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5690,13 +5718,15 @@ OPTIONS
|
|
|
5690
5718
|
|
|
5691
5719
|
1) With -W, a new output file is created for each extracted tag.
|
|
5692
5720
|
|
|
5693
|
-
2) -W supports
|
|
5721
|
+
2) -W supports four additional format codes: %t, %g and %s
|
|
5694
5722
|
represent the tag name, group name, and suggested extension for the
|
|
5695
|
-
output file (based on the format of the data)
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5723
|
+
output file (based on the format of the data), and %o represents
|
|
5724
|
+
the value of the OriginalRawFileName or OriginalFileName tag from
|
|
5725
|
+
the input file (including extension). The %g code may be followed
|
|
5726
|
+
by a single digit to specify the group family number (eg. %g1),
|
|
5727
|
+
otherwise family 0 is assumed. The substring width/position/case
|
|
5728
|
+
specifiers may be used with these format codes in exactly the same
|
|
5729
|
+
way as with %f and %e.
|
|
5700
5730
|
|
|
5701
5731
|
3) The argument for -W is interpreted as a file name if it contains
|
|
5702
5732
|
no format codes. (For -w, this would be a file extension.) This
|
|
@@ -5718,7 +5748,7 @@ OPTIONS
|
|
|
5718
5748
|
file names to the console instead of giving a verbose dump of the
|
|
5719
5749
|
entire file. (Unless appending all output to one file for each
|
|
5720
5750
|
source file by using -W+ with an output file *FMT* that does not
|
|
5721
|
-
contain %t,
|
|
5751
|
+
contain %t, %g, %s or %o.)
|
|
5722
5752
|
|
|
5723
5753
|
5) Individual list items are stored in separate files when -W is
|
|
5724
5754
|
combined with -b, but note that for separate files to be created %c
|
|
@@ -7114,7 +7144,7 @@ EXIT STATUS
|
|
|
7114
7144
|
the commands if -execute was used).
|
|
7115
7145
|
|
|
7116
7146
|
AUTHOR
|
|
7117
|
-
Copyright 2003-
|
|
7147
|
+
Copyright 2003-2022, Phil Harvey
|
|
7118
7148
|
|
|
7119
7149
|
This is free software; you can redistribute it and/or modify it under
|
|
7120
7150
|
the same terms as Perl itself.
|
|
@@ -7127,9 +7157,9 @@ __HELP__
|
|
|
7127
7157
|
|
|
7128
7158
|
my $dir = $ENV{PAR_GLOBAL_TEMP} || $ENV{PAR_TEMP} || $ENV{TMP} || $ENV{TEMP} || '/tmp';
|
|
7129
7159
|
my $docFile = "$dir/exiftool_${version}_doc.txt";
|
|
7160
|
+
# try backslashes first if it seems we may be running in cmd.exe
|
|
7161
|
+
$docFile =~ tr/\//\\/ if $ENV{ComSpec} or $docFile =~ /\\/;
|
|
7130
7162
|
unless (-e $docFile) {
|
|
7131
|
-
# try backslashes first if it seems we may be running in cmd.exe
|
|
7132
|
-
$docFile =~ tr/\//\\/ if $ENV{ComSpec} or $docFile =~ /\\/;
|
|
7133
7163
|
unless (open(TEMP, ">$docFile") or
|
|
7134
7164
|
($docFile =~ tr/\/\\/\\\// and open(TEMP, ">$docFile")) or # try forward slash
|
|
7135
7165
|
(CreateDirectory($docFile) and open(TEMP, ">$docFile"))) # try creating dir
|
|
@@ -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.
|