exiftool-vendored.pl 12.69.0 → 12.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/Changes +78 -12
- package/bin/MANIFEST +5 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +10 -10
- package/bin/exiftool +32 -25
- package/bin/lib/Image/ExifTool/AAC.pm +175 -0
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -1
- package/bin/lib/Image/ExifTool/CBOR.pm +18 -2
- package/bin/lib/Image/ExifTool/Canon.pm +82 -20
- package/bin/lib/Image/ExifTool/DJI.pm +3 -2
- package/bin/lib/Image/ExifTool/EXE.pm +54 -6
- package/bin/lib/Image/ExifTool/Exif.pm +111 -11
- package/bin/lib/Image/ExifTool/FujiFilm.pm +145 -20
- package/bin/lib/Image/ExifTool/GIF.pm +5 -1
- package/bin/lib/Image/ExifTool/GoPro.pm +16 -1
- package/bin/lib/Image/ExifTool/ID3.pm +76 -10
- package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- package/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- package/bin/lib/Image/ExifTool/JSON.pm +4 -1
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +30 -15
- package/bin/lib/Image/ExifTool/M2TS.pm +21 -16
- package/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +203 -102
- package/bin/lib/Image/ExifTool/Olympus.pm +7 -1
- package/bin/lib/Image/ExifTool/PNG.pm +8 -13
- package/bin/lib/Image/ExifTool/Panasonic.pm +10 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +15 -6
- package/bin/lib/Image/ExifTool/QuickTime.pm +59 -13
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +59 -11
- package/bin/lib/Image/ExifTool/README +7 -2
- package/bin/lib/Image/ExifTool/RIFF.pm +53 -9
- package/bin/lib/Image/ExifTool/Ricoh.pm +109 -1
- package/bin/lib/Image/ExifTool/Samsung.pm +3 -2
- package/bin/lib/Image/ExifTool/Sony.pm +177 -37
- package/bin/lib/Image/ExifTool/TagLookup.pm +6961 -6856
- package/bin/lib/Image/ExifTool/TagNames.pod +580 -344
- package/bin/lib/Image/ExifTool/Text.pm +4 -5
- package/bin/lib/Image/ExifTool/Validate.pm +6 -5
- package/bin/lib/Image/ExifTool/WriteExif.pl +19 -4
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -0
- package/bin/lib/Image/ExifTool/WriteRIFF.pl +9 -3
- package/bin/lib/Image/ExifTool/Writer.pl +102 -50
- package/bin/lib/Image/ExifTool.pm +74 -36
- package/bin/lib/Image/ExifTool.pod +28 -17
- package/bin/perl-Image-ExifTool.spec +9 -9
- package/bin/pp_build_exe.args +5 -4
- package/package.json +4 -5
|
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
|
30
30
|
%static_vars);
|
|
31
31
|
|
|
32
|
-
$VERSION = '12.
|
|
32
|
+
$VERSION = '12.72';
|
|
33
33
|
$RELEASE = '';
|
|
34
34
|
@ISA = qw(Exporter);
|
|
35
35
|
%EXPORT_TAGS = (
|
|
@@ -132,7 +132,7 @@ sub Rename($$$);
|
|
|
132
132
|
sub Unlink($@);
|
|
133
133
|
sub SetFileTime($$;$$$$);
|
|
134
134
|
sub DoEscape($$);
|
|
135
|
-
sub ConvertFileSize(
|
|
135
|
+
sub ConvertFileSize($;$);
|
|
136
136
|
sub ParseArguments($;@); #(defined in attempt to avoid mod_perl problem)
|
|
137
137
|
sub ReadValue($$$;$$$);
|
|
138
138
|
|
|
@@ -145,16 +145,16 @@ sub ReadValue($$$;$$$);
|
|
|
145
145
|
WPG ICO PICT PNG MNG FLIF DjVu DPX OpenEXR ZISRAW MRC LIF MRC::FEI12 MIFF
|
|
146
146
|
PCX PGF PSP PhotoCD Radiance Other::PFM PDF PostScript Photoshop::Header
|
|
147
147
|
Photoshop::Layers Photoshop::ImageData FujiFilm::RAF FujiFilm::IFD
|
|
148
|
-
Samsung::Trailer Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3
|
|
149
|
-
FLAC Ogg Vorbis APE APE::NewHeader APE::OldHeader Audible
|
|
150
|
-
MPEG::Video MPEG::Xing M2TS QuickTime QuickTime::ImageFile
|
|
151
|
-
QuickTime::Tags360Fly Matroska Matroska::StdTag MOI MXF DV
|
|
152
|
-
Real::Media Real::Audio Real::Metafile Red RIFF AIFF ASF
|
|
153
|
-
MIE JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH
|
|
154
|
-
EXE
|
|
155
|
-
Text VCard::VCalendar VCard::VNote RSRC
|
|
156
|
-
ZIP::RAR5 RTF OOXML iWork ISO FLIR::AFF
|
|
157
|
-
FlashPix::DocTable
|
|
148
|
+
FujiFilm::MRAW Samsung::Trailer Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3
|
|
149
|
+
ID3::Lyrics3 FLAC AAC Ogg Vorbis APE APE::NewHeader APE::OldHeader Audible
|
|
150
|
+
MPC MPEG::Audio MPEG::Video MPEG::Xing M2TS QuickTime QuickTime::ImageFile
|
|
151
|
+
QuickTime::Stream QuickTime::Tags360Fly Matroska Matroska::StdTag MOI MXF DV
|
|
152
|
+
Flash Flash::FLV Real::Media Real::Audio Real::Metafile Red RIFF AIFF ASF
|
|
153
|
+
WTV DICOM FITS XISF MIE JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH
|
|
154
|
+
Torrent EXE EXE::PEVersion EXE::PEString EXE::MachO EXE::PEF EXE::ELF
|
|
155
|
+
EXE::AR EXE::CHM LNK Font VCard Text VCard::VCalendar VCard::VNote RSRC
|
|
156
|
+
Rawzor ZIP ZIP::GZIP ZIP::RAR ZIP::RAR5 RTF OOXML iWork ISO FLIR::AFF
|
|
157
|
+
FLIR::FPF MacOS MacOS::MDItem FlashPix::DocTable
|
|
158
158
|
);
|
|
159
159
|
|
|
160
160
|
# alphabetical list of current Lang modules
|
|
@@ -197,7 +197,7 @@ $defaultLang = 'en'; # default language
|
|
|
197
197
|
RAR 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font
|
|
198
198
|
RSRC M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI
|
|
199
199
|
R3D AA PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD ICO
|
|
200
|
-
TXT);
|
|
200
|
+
TXT AAC);
|
|
201
201
|
|
|
202
202
|
# file types that we can write (edit)
|
|
203
203
|
my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
|
|
@@ -206,6 +206,7 @@ my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
|
|
|
206
206
|
my %writeTypes; # lookup for writable file types (hash filled if required)
|
|
207
207
|
|
|
208
208
|
# file extensions that we can't write for various base types
|
|
209
|
+
# (See here for 3FR reason: https://exiftool.org/forum/index.php?msg=17570)
|
|
209
210
|
%noWriteFile = (
|
|
210
211
|
TIFF => [ qw(3FR DCR K25 KDC SRF) ],
|
|
211
212
|
XMP => [ qw(SVG INX) ],
|
|
@@ -232,6 +233,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
|
232
233
|
'7Z' => ['7Z', '7z archive'],
|
|
233
234
|
A => ['EXE', 'Static library'],
|
|
234
235
|
AA => ['AA', 'Audible Audiobook'],
|
|
236
|
+
AAC => ['AAC', 'Advanced Audio Coding'],
|
|
235
237
|
AAE => ['PLIST','Apple edit information'],
|
|
236
238
|
AAX => ['MOV', 'Audible Enhanced Audiobook'],
|
|
237
239
|
ACR => ['DICOM','American College of Radiology ACR-NEMA'],
|
|
@@ -365,6 +367,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
|
365
367
|
JPC => 'J2C',
|
|
366
368
|
JPE => 'JPEG',
|
|
367
369
|
JPEG => ['JPEG', 'Joint Photographic Experts Group'],
|
|
370
|
+
JPH => ['JP2', 'High-throughput JPEG 2000'],
|
|
368
371
|
JPF => 'JP2',
|
|
369
372
|
JPG => 'JPEG',
|
|
370
373
|
JPM => ['JP2', 'JPEG 2000 compound image'],
|
|
@@ -596,6 +599,7 @@ my %fileDescription = (
|
|
|
596
599
|
'3FR' => 'image/x-hasselblad-3fr',
|
|
597
600
|
'7Z' => 'application/x-7z-compressed',
|
|
598
601
|
AA => 'audio/audible',
|
|
602
|
+
AAC => 'audio/aac',
|
|
599
603
|
AAE => 'application/vnd.apple.photos',
|
|
600
604
|
AI => 'application/vnd.adobe.illustrator',
|
|
601
605
|
AIFF => 'audio/x-aiff',
|
|
@@ -677,6 +681,7 @@ my %fileDescription = (
|
|
|
677
681
|
JNG => 'image/jng',
|
|
678
682
|
JP2 => 'image/jp2',
|
|
679
683
|
JPEG => 'image/jpeg',
|
|
684
|
+
JPH => 'image/jph',
|
|
680
685
|
JPM => 'image/jpm',
|
|
681
686
|
JPS => 'image/x-jps',
|
|
682
687
|
JPX => 'image/jpx',
|
|
@@ -891,6 +896,7 @@ $testLen = 1024; # number of bytes to read when testing for magic number
|
|
|
891
896
|
# - this test must not be more stringent than module logic
|
|
892
897
|
%magicNumber = (
|
|
893
898
|
AA => '.{4}\x57\x90\x75\x36',
|
|
899
|
+
AAC => '\xff[\xf0\xf1]',
|
|
894
900
|
AIFF => '(FORM....AIF[FC]|AT&TFORM)',
|
|
895
901
|
ALIAS=> "book\0\0\0\0mark\0\0\0\0",
|
|
896
902
|
APE => '(MAC |APETAGEX|ID3)',
|
|
@@ -1066,6 +1072,7 @@ my %xmpShorthandOpt = ( 0 => 'None', 1 => 'Shorthand', 2 => ['Shorthand','OneDes
|
|
|
1066
1072
|
my @availableOptions = (
|
|
1067
1073
|
[ 'Binary', undef, 'flag to extract binary values even if tag not specified' ],
|
|
1068
1074
|
[ 'ByteOrder', undef, 'default byte order when creating EXIF information' ],
|
|
1075
|
+
[ 'ByteUnit', 'SI', 'units for byte conversions (SI or Binary)'],
|
|
1069
1076
|
[ 'Charset', 'UTF8', 'character set for converting Unicode characters' ],
|
|
1070
1077
|
[ 'CharsetEXIF', undef, 'internal EXIF "ASCII" string encoding' ],
|
|
1071
1078
|
[ 'CharsetFileName', undef, 'external encoding for file names' ],
|
|
@@ -1112,6 +1119,7 @@ my @availableOptions = (
|
|
|
1112
1119
|
[ 'MakerNotes', undef, 'extract maker notes as a block' ],
|
|
1113
1120
|
[ 'MDItemTags', undef, 'extract MacOS metadata item tags' ],
|
|
1114
1121
|
[ 'MissingTagValue', undef, 'value for missing tags when expanded in expressions' ],
|
|
1122
|
+
[ 'NoMandatory', undef, 'bypass writing of mandatory EXIF tags' ],
|
|
1115
1123
|
[ 'NoMultiExif', undef, 'raise error when writing multi-segment EXIF' ],
|
|
1116
1124
|
[ 'NoPDFList', undef, 'flag to avoid splitting PDF List-type tag values' ],
|
|
1117
1125
|
[ 'NoWarning', undef, 'regular expression for warnings to suppress' ],
|
|
@@ -1307,8 +1315,9 @@ my %systemTagsNotes = (
|
|
|
1307
1315
|
FileSize => {
|
|
1308
1316
|
Groups => { 1 => 'System', 2 => 'Other' },
|
|
1309
1317
|
Notes => q{
|
|
1310
|
-
note that the print conversion for this tag uses
|
|
1311
|
-
|
|
1318
|
+
note that the print conversion for this tag uses SI prefixes by default: 1
|
|
1319
|
+
kB = 1000 bytes, etc. Set the API ByteUnit option to "Binary" to use binary
|
|
1320
|
+
prefixes instead: 1 KiB = 1024 bytes, etc.
|
|
1312
1321
|
},
|
|
1313
1322
|
PrintConv => \&ConvertFileSize,
|
|
1314
1323
|
},
|
|
@@ -2413,17 +2422,28 @@ sub Options($$;@)
|
|
|
2413
2422
|
}
|
|
2414
2423
|
$$options{$param} = $newVal;
|
|
2415
2424
|
} elsif ($param eq 'ImageHashType') {
|
|
2416
|
-
if (defined $newVal
|
|
2425
|
+
if (not defined $newVal) {
|
|
2426
|
+
warn("Can't set $param to undef\n");
|
|
2427
|
+
} elsif ($newVal =~ /^(MD5|SHA256|SHA512)$/i) {
|
|
2417
2428
|
$$options{$param} = uc($newVal);
|
|
2418
2429
|
} else {
|
|
2419
|
-
warn("Invalid $param setting '${newVal}'\n")
|
|
2430
|
+
warn("Invalid $param setting '${newVal}'\n");
|
|
2420
2431
|
}
|
|
2421
2432
|
} elsif ($param eq 'StructFormat') {
|
|
2422
2433
|
if (defined $newVal) {
|
|
2423
|
-
$newVal =~ /^(JSON|JSONQ)$/i or warn("Invalid $param setting '${newVal}'\n"),
|
|
2434
|
+
$newVal =~ /^(JSON|JSONQ)$/i or warn("Invalid $param setting '${newVal}'\n"), next;
|
|
2424
2435
|
$newVal = uc($newVal);
|
|
2425
2436
|
}
|
|
2426
2437
|
$$options{$param} = $newVal;
|
|
2438
|
+
} elsif ($param eq 'ByteUnit') {
|
|
2439
|
+
if (defined $newVal) {
|
|
2440
|
+
# (allow "Metric" or "SI" for SI, and "IT" or "Binary" for Binary)
|
|
2441
|
+
my $goodVal = ($newVal =~ /^S|M/i ? 'SI' : ($newVal =~ /^I|B/i ? 'Binary' : undef));
|
|
2442
|
+
$goodVal or warn("Invalid $param setting '${newVal}'\n"), next;
|
|
2443
|
+
$$options{$param} = $goodVal;
|
|
2444
|
+
} else {
|
|
2445
|
+
warn("Can't set $param to undef\n");
|
|
2446
|
+
}
|
|
2427
2447
|
} else {
|
|
2428
2448
|
if ($param eq 'Escape') {
|
|
2429
2449
|
# set ESCAPE_PROC
|
|
@@ -2548,7 +2568,7 @@ sub ExtractInfo($;@)
|
|
|
2548
2568
|
$self->WarnOnce('Install Time::HiRes to generate ProcessingTime');
|
|
2549
2569
|
}
|
|
2550
2570
|
}
|
|
2551
|
-
|
|
2571
|
+
|
|
2552
2572
|
# create Hash object if ImageDataHash is requested
|
|
2553
2573
|
if ($$req{imagedatahash} and not $$self{ImageDataHash}) {
|
|
2554
2574
|
my $imageHashType = $self->Options('ImageHashType');
|
|
@@ -3456,9 +3476,10 @@ sub GetValue($$;$)
|
|
|
3456
3476
|
} elsif (wantarray) {
|
|
3457
3477
|
# return array if requested
|
|
3458
3478
|
return @$value;
|
|
3459
|
-
} elsif ($type eq 'PrintConv' and not $$self{OPTIONS}{List}
|
|
3460
|
-
# join PrintConv values in
|
|
3479
|
+
} elsif ($type eq 'PrintConv' and not $$self{OPTIONS}{List}) {
|
|
3480
|
+
# join PrintConv values in delimited string if List option not used
|
|
3461
3481
|
# and list contains simple scalars (otherwise return ARRAY ref)
|
|
3482
|
+
ref and return $value foreach @$value;
|
|
3462
3483
|
$value = join $$self{OPTIONS}{ListSep}, @$value;
|
|
3463
3484
|
}
|
|
3464
3485
|
}
|
|
@@ -4159,12 +4180,16 @@ sub ExtractAltInfo($)
|
|
|
4159
4180
|
next unless defined $fileName;
|
|
4160
4181
|
}
|
|
4161
4182
|
$altExifTool->ExtractInfo($fileName);
|
|
4183
|
+
my $err = $$altExifTool{VALUE}{Error};
|
|
4184
|
+
$err and $self->Warn(qq{$err "$fileName"});
|
|
4162
4185
|
# set family 8 group name for all tags
|
|
4163
4186
|
foreach (keys %{$$altExifTool{VALUE}}) {
|
|
4164
4187
|
my $ex = $$altExifTool{TAG_EXTRA}{$_};
|
|
4165
4188
|
$ex or $ex = $$altExifTool{TAG_EXTRA}{$_} = { };
|
|
4166
4189
|
$$ex{G8} = $g8;
|
|
4167
4190
|
}
|
|
4191
|
+
# prepare our sorted list of found tags
|
|
4192
|
+
$$altExifTool{FoundTags} = [ reverse sort keys %{$$altExifTool{VALUE}} ];
|
|
4168
4193
|
$$altExifTool{DID_EXTRACT} = 1;
|
|
4169
4194
|
}
|
|
4170
4195
|
# if necessary, build composite tags that rely on tags from alternate files
|
|
@@ -6023,7 +6048,7 @@ sub ConvertDateTime($$)
|
|
|
6023
6048
|
++$a[5];
|
|
6024
6049
|
last; # (this was a goto)
|
|
6025
6050
|
}
|
|
6026
|
-
}
|
|
6051
|
+
}
|
|
6027
6052
|
}
|
|
6028
6053
|
$neg and $frac =~ s/^\.//;
|
|
6029
6054
|
$fmt =~ s/(^|[^%])((%%)*)%-?\.?\d*f/$1$2$frac/g;
|
|
@@ -6203,16 +6228,26 @@ sub GetUnixTime($;$)
|
|
|
6203
6228
|
# Print conversion for file size
|
|
6204
6229
|
# Inputs: 0) file size in bytes
|
|
6205
6230
|
# Returns: converted file size
|
|
6206
|
-
sub ConvertFileSize(
|
|
6207
|
-
{
|
|
6208
|
-
my $val =
|
|
6209
|
-
$
|
|
6210
|
-
|
|
6211
|
-
|
|
6212
|
-
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6231
|
+
sub ConvertFileSize($;$)
|
|
6232
|
+
{
|
|
6233
|
+
my ($val, $et) = @_;
|
|
6234
|
+
if ($et and $$et{OPTIONS}{ByteUnit} eq 'Binary') {
|
|
6235
|
+
$val < 2048 and return "$val bytes";
|
|
6236
|
+
$val < 10240 and return sprintf('%.1f KiB', $val / 1024);
|
|
6237
|
+
$val < 2097152 and return sprintf('%.0f KiB', $val / 1024);
|
|
6238
|
+
$val < 10485760 and return sprintf('%.1f MiB', $val / 1048576);
|
|
6239
|
+
$val < 2147483648 and return sprintf('%.0f MiB', $val / 1048576);
|
|
6240
|
+
$val < 10737418240 and return sprintf('%.1f GiB', $val / 1073741824);
|
|
6241
|
+
return sprintf('%.0f GiB', $val / 1073741824);
|
|
6242
|
+
} else {
|
|
6243
|
+
$val < 2000 and return "$val bytes";
|
|
6244
|
+
$val < 10000 and return sprintf('%.1f kB', $val / 1000);
|
|
6245
|
+
$val < 2000000 and return sprintf('%.0f kB', $val / 1000);
|
|
6246
|
+
$val < 10000000 and return sprintf('%.1f MB', $val / 1000000);
|
|
6247
|
+
$val < 2000000000 and return sprintf('%.0f MB', $val / 1000000);
|
|
6248
|
+
$val < 10000000000 and return sprintf('%.1f GB', $val / 1000000000);
|
|
6249
|
+
return sprintf('%.0f GB', $val / 1000000000);
|
|
6250
|
+
}
|
|
6216
6251
|
}
|
|
6217
6252
|
|
|
6218
6253
|
#------------------------------------------------------------------------------
|
|
@@ -6714,6 +6749,7 @@ sub ProcessJPEG($$)
|
|
|
6714
6749
|
pop @$path;
|
|
6715
6750
|
$verbose and print $out "JPEG EOI\n";
|
|
6716
6751
|
my $pos = $raf->Tell();
|
|
6752
|
+
$$self{TrailerStart} = $pos unless $$self{DOC_NUM};
|
|
6717
6753
|
if ($htmlDump and $dumpEnd) {
|
|
6718
6754
|
$self->HDump($dumpEnd, $pos-2-$dumpEnd, '[JPEG Image Data]', undef, 0x08);
|
|
6719
6755
|
$self->HDump($pos-2, 2, 'JPEG EOI', undef);
|
|
@@ -6852,8 +6888,10 @@ sub ProcessJPEG($$)
|
|
|
6852
6888
|
require Image::ExifTool::Panasonic;
|
|
6853
6889
|
Image::ExifTool::Panasonic::ProcessLeicaTrailer($self);
|
|
6854
6890
|
$wantTrailer = 1 if $$self{LeicaTrailer};
|
|
6855
|
-
}
|
|
6856
|
-
|
|
6891
|
+
} elsif ($$options{ExtractEmbedded} or ($$self{VALUE}{HiddenDataOffset} and
|
|
6892
|
+
$$self{VALUE}{HiddenDataLength} and ($$options{Validate} or $$req{hiddendata})))
|
|
6893
|
+
{
|
|
6894
|
+
$wantTrailer = 1;
|
|
6857
6895
|
}
|
|
6858
6896
|
next if $trailInfo or $wantTrailer or $verbose > 2 or $htmlDump;
|
|
6859
6897
|
}
|
|
@@ -7749,8 +7787,8 @@ sub DoProcessTIFF($$;$)
|
|
|
7749
7787
|
my ($err, $sig, $canonSig, $otherSig);
|
|
7750
7788
|
|
|
7751
7789
|
# attempt to read TIFF header
|
|
7752
|
-
$$self{EXIF_DATA} = '';
|
|
7753
7790
|
if ($raf) {
|
|
7791
|
+
$$self{EXIF_DATA} = '';
|
|
7754
7792
|
if ($outfile) {
|
|
7755
7793
|
$raf->Seek(0, 0) or return 0;
|
|
7756
7794
|
if ($base) {
|
|
@@ -8372,7 +8410,7 @@ sub GetTagInfo($$$;$$$)
|
|
|
8372
8410
|
}
|
|
8373
8411
|
}
|
|
8374
8412
|
# don't return Unknown tags unless that option is set (also see forum13716)
|
|
8375
|
-
if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and not
|
|
8413
|
+
if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and not
|
|
8376
8414
|
($$self{OPTIONS}{Verbose} or $$self{HTML_DUMP} or
|
|
8377
8415
|
($$self{OPTIONS}{Validate} and not $$tagInfo{AddedUnknown})))
|
|
8378
8416
|
{
|
|
@@ -467,6 +467,12 @@ big-endian ('MM') order is assumed. This can also be set via the
|
|
|
467
467
|
L<ExifByteOrder tag|Image::ExifTool::TagNames/Extra Tags>, but the ByteOrder
|
|
468
468
|
option takes precedence if both are set.
|
|
469
469
|
|
|
470
|
+
=item ByteUnit
|
|
471
|
+
|
|
472
|
+
Units for print conversion of FileSize and other byte values. Either 'SI'
|
|
473
|
+
(eg. kB for 1000 bytes) or 'Binary' (eg. KiB for 1024 bytes). Default is
|
|
474
|
+
'SI'.
|
|
475
|
+
|
|
470
476
|
=item Charset
|
|
471
477
|
|
|
472
478
|
Character set for encoding character tag values passed to/from ExifTool with
|
|
@@ -554,12 +560,12 @@ without recoding. Default is 0.
|
|
|
554
560
|
Comma-delimited list of settings for writing compact XMP. Below is a list
|
|
555
561
|
of available settings. Note that 'NoPadding' effects only embedded XMP
|
|
556
562
|
since padding is never written for stand-alone XMP files. Also note that
|
|
557
|
-
'OneDesc' is not recommended when writing XMP larger than 64
|
|
563
|
+
'OneDesc' is not recommended when writing XMP larger than 64 KiB to a JPG
|
|
558
564
|
file because it interferes with ExifTool's technique of splitting off large
|
|
559
565
|
rdf:Description elements into the extended XMP. Case is not significant for
|
|
560
566
|
any of these options. Aliases are given in brackets. Default is undef.
|
|
561
567
|
|
|
562
|
-
NoPadding - Avoid 2
|
|
568
|
+
NoPadding - Avoid 2 KiB of recommended padding at end of XMP (NoPad)
|
|
563
569
|
NoIndent - No spaces to indent lines (NoSpace, NoSpaces)
|
|
564
570
|
NoNewline - Avoid unnecessary newlines (NoNewlines)
|
|
565
571
|
Shorthand - Use XMP Shorthand format
|
|
@@ -867,6 +873,10 @@ writing. This applies only to queued values, and doesn't resolve duplicates
|
|
|
867
873
|
with existing values in the file when adding to an existing list. Default
|
|
868
874
|
is undef.
|
|
869
875
|
|
|
876
|
+
=item NoMandatory
|
|
877
|
+
|
|
878
|
+
Flag to bypass writing of mandatory EXIF tags. Default is undef.
|
|
879
|
+
|
|
870
880
|
=item NoMultiExif
|
|
871
881
|
|
|
872
882
|
Raise error when attempting to write multi-segment EXIF in a JPEG image.
|
|
@@ -2415,23 +2425,24 @@ Here is a complete list of groups for each of these families:
|
|
|
2415
2425
|
|
|
2416
2426
|
=item Family 0 (Information Type):
|
|
2417
2427
|
|
|
2418
|
-
AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP2,
|
|
2419
|
-
APP4, APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG,
|
|
2420
|
-
DjVu, Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash,
|
|
2421
|
-
Font, FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML,
|
|
2422
|
-
IPTC, ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK,
|
|
2423
|
-
MIE, MIFF, MISB, MNG, MOI, MPC, MPEG, MPF, MXF,
|
|
2424
|
-
Ogg, OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP,
|
|
2425
|
-
|
|
2426
|
-
RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG,
|
|
2427
|
-
Torrent, Trailer, UserParam, VCard, Vorbis, WTV,
|
|
2428
|
+
AAC, AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP2,
|
|
2429
|
+
APP3, APP4, APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG,
|
|
2430
|
+
DV, DjVu, Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash,
|
|
2431
|
+
FlashPix, Font, FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML,
|
|
2432
|
+
ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK,
|
|
2433
|
+
Leaf, Lytro, M2TS, MIE, MIFF, MISB, MNG, MOI, MPC, MPEG, MPF, MXF,
|
|
2434
|
+
MakerNotes, Matroska, Meta, Ogg, OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP,
|
|
2435
|
+
Palm, Parrot, PanasonicRaw, PhotoCD, PhotoMechanic, Photoshop, PostScript,
|
|
2436
|
+
PrintIM, QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG,
|
|
2437
|
+
SigmaRaw, Stim, Theora, Torrent, Trailer, UserParam, VCard, Vorbis, WTV,
|
|
2438
|
+
XML, XMP, ZIP
|
|
2428
2439
|
|
|
2429
2440
|
=item Family 1 (Specific Location):
|
|
2430
2441
|
|
|
2431
|
-
AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple,
|
|
2432
|
-
CBOR, CIFF, CameraIFD, Canon, CanonCustom, CanonDR4, CanonRaw,
|
|
2433
|
-
Casio, Chapter#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta,
|
|
2434
|
-
EPPIM, EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash,
|
|
2442
|
+
AAC, AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple,
|
|
2443
|
+
Audible, CBOR, CIFF, CameraIFD, Canon, CanonCustom, CanonDR4, CanonRaw,
|
|
2444
|
+
CanonVRD, Casio, Chapter#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta,
|
|
2445
|
+
Ducky, EPPIM, EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash,
|
|
2435
2446
|
FlashPix, Font, FotoStation, FujiFilm, FujiIFD, GE, GIF, GIMP, GPS,
|
|
2436
2447
|
GSpherical, Garmin, GeoTiff, GlobParamIFD, GoPro, GraphConv, H264, HP, HTC,
|
|
2437
2448
|
HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-equiv,
|
|
@@ -2440,7 +2451,7 @@ ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1,
|
|
|
2440
2451
|
IPTC, IPTC#, ISO, ITC, InfiRay, Insta360, InteropIFD, ItemList, JFIF, JFXX,
|
|
2441
2452
|
JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC, Jpeg2000, KDC_IFD, Keys, Kodak,
|
|
2442
2453
|
KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf,
|
|
2443
|
-
LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC, MIE-Audio, MIE-Camera,
|
|
2454
|
+
LeafSubIFD, Leica, Lyrics3, Lytro, M-RAW, M2TS, MAC, MIE-Audio, MIE-Camera,
|
|
2444
2455
|
MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image,
|
|
2445
2456
|
MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview,
|
|
2446
2457
|
MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MISB, MNG, MOBI, MOI,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Summary: perl module for image data extraction
|
|
2
2
|
Name: perl-Image-ExifTool
|
|
3
|
-
Version: 12.
|
|
3
|
+
Version: 12.72
|
|
4
4
|
Release: 1
|
|
5
5
|
License: Artistic/GPL
|
|
6
6
|
Group: Development/Libraries/Perl
|
|
@@ -22,13 +22,14 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
|
22
22
|
|
|
23
23
|
File Types
|
|
24
24
|
------------+-------------+-------------+-------------+------------
|
|
25
|
-
360 r/w |
|
|
26
|
-
3FR r |
|
|
27
|
-
3G2 r/w |
|
|
28
|
-
3GP r/w |
|
|
29
|
-
7Z r |
|
|
30
|
-
A r |
|
|
31
|
-
AA r |
|
|
25
|
+
360 r/w | DOCX r | ISO r | NRW r/w | RAR r
|
|
26
|
+
3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
|
|
27
|
+
3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
|
|
28
|
+
3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
|
|
29
|
+
7Z r | DV r | JP2 r/w | ODS r | RTF r
|
|
30
|
+
A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
|
|
31
|
+
AA r | DVR-MS r | JSON r | OFR r | RWL r/w
|
|
32
|
+
AAC r | DYLIB r | JXL r | OGG r | RWZ r
|
|
32
33
|
AAE r | EIP r | K25 r | OGV r | RM r
|
|
33
34
|
AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
|
|
34
35
|
ACR r | EPUB r | KEY r | OPUS r | SKETCH r
|
|
@@ -64,7 +65,6 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
|
64
65
|
DLL r | INSP r/w | MXF r | RA r | XLSX r
|
|
65
66
|
DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
|
|
66
67
|
DOC r | INX r | NKSC r/w | RAM r | ZIP r
|
|
67
|
-
DOCX r | ISO r | NRW r/w | RAR r |
|
|
68
68
|
|
|
69
69
|
Meta Information
|
|
70
70
|
----------------------+----------------------+---------------------
|
package/bin/pp_build_exe.args
CHANGED
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
# 10) Copy zip archive to web servers.
|
|
22
22
|
# 11) Update zip file version in link and text of html/index.html.
|
|
23
23
|
#------------------------------------------------------------------------------
|
|
24
|
-
-T exiftool-12.
|
|
25
|
-
#--info=FileVersion=12.
|
|
26
|
-
#--info=ProductVersion=12.
|
|
27
|
-
##"--info=Build Date=2023:
|
|
24
|
+
-T exiftool-12.72
|
|
25
|
+
#--info=FileVersion=12.7.2.0
|
|
26
|
+
#--info=ProductVersion=12.7.2.0
|
|
27
|
+
##"--info=Build Date=2023:12:29 14:42:51-05:00"
|
|
28
28
|
##"--info=Bundled Perl Version=ActivePerl 5.24.0"
|
|
29
29
|
##"--info=LegalCopyright=Copyright (c) 2003-2023, Phil Harvey"
|
|
30
30
|
##"--info=ProductName=ExifTool"
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
-M Win32API::File
|
|
53
53
|
-M Encode
|
|
54
54
|
-M Image::ExifTool::7Z
|
|
55
|
+
-M Image::ExifTool::AAC
|
|
55
56
|
-M Image::ExifTool::AES
|
|
56
57
|
-M Image::ExifTool::AFCP
|
|
57
58
|
-M Image::ExifTool::AIFF
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exiftool-vendored.pl",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.72.0",
|
|
4
4
|
"description": "Vendored perl ExifTool for Node.js",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"homepage": "https://github.com/mceachen/exiftool-vendored.pl#readme",
|
|
@@ -25,10 +25,9 @@
|
|
|
25
25
|
"author": "Matthew McEachen <matthew-exiftoolvendored@mceachen.org>",
|
|
26
26
|
"license": "MIT",
|
|
27
27
|
"scripts": {
|
|
28
|
-
"pretest": "rimraf ./bin/t/ ./bin/html/",
|
|
29
28
|
"prettier": "prettier --write test/*.js",
|
|
30
29
|
"test": "mocha",
|
|
31
|
-
"update": "bash -c ./update.sh"
|
|
30
|
+
"update": "ncu -ui && bash -c ./update.sh"
|
|
32
31
|
},
|
|
33
32
|
"release-it": {
|
|
34
33
|
"hooks": {
|
|
@@ -43,7 +42,7 @@
|
|
|
43
42
|
},
|
|
44
43
|
"devDependencies": {
|
|
45
44
|
"mocha": "^10.2.0",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
45
|
+
"npm-check-updates": "^16.14.12",
|
|
46
|
+
"prettier": "^3.1.1"
|
|
48
47
|
}
|
|
49
48
|
}
|