exiftool_vendored 11.71.0 → 11.75.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +39 -0
- data/bin/MANIFEST +17 -4
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +23 -26
- data/bin/config_files/convert_regions.config +139 -5
- data/bin/exiftool +21 -21
- data/bin/fmt_files/gpx.fmt +2 -1
- data/bin/fmt_files/gpx_wpt.fmt +2 -1
- data/bin/fmt_files/kml.fmt +2 -2
- data/bin/fmt_files/kml_track.fmt +46 -0
- data/bin/lib/Image/ExifTool.pm +42 -33
- data/bin/lib/Image/ExifTool.pod +21 -21
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
- data/bin/lib/Image/ExifTool/Canon.pm +2 -1
- data/bin/lib/Image/ExifTool/CanonCustom.pm +30 -4
- data/bin/lib/Image/ExifTool/Exif.pm +36 -63
- data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -0
- data/bin/lib/Image/ExifTool/Lang/ru.pm +4233 -503
- data/bin/lib/Image/ExifTool/MakerNotes.pm +6 -12
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +751 -0
- data/bin/lib/Image/ExifTool/Photoshop.pm +12 -11
- data/bin/lib/Image/ExifTool/QuickTime.pm +18 -5
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +316 -44
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -2
- data/bin/lib/Image/ExifTool/Sigma.pm +72 -55
- data/bin/lib/Image/ExifTool/TagLookup.pm +73 -7
- data/bin/lib/Image/ExifTool/TagNames.pod +249 -18
- data/bin/lib/Image/ExifTool/Text.pm +160 -0
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -2
- data/bin/lib/Image/ExifTool/Writer.pl +1 -1
- data/bin/lib/Image/ExifTool/XMP.pm +19 -26
- data/bin/lib/Image/ExifTool/XMP2.pl +46 -9
- data/bin/lib/Image/ExifTool/XMPStruct.pl +14 -4
- data/bin/perl-Image-ExifTool.spec +19 -19
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +6 -7
- data/bin/config_files/blueskysea.config +0 -101
- data/bin/config_files/dji.config +0 -131
- data/bin/config_files/mini0806.config +0 -99
- data/bin/config_files/thinkware.config +0 -144
data/bin/fmt_files/gpx.fmt
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
# Revisions: 2010/02/05 - P. Harvey created
|
11
11
|
# 2018/01/04 - PH Added IF to be sure position exists
|
12
12
|
# 2018/01/06 - PH Use DateFmt function instead of -d option
|
13
|
+
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
13
14
|
#
|
14
15
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
15
16
|
# 2) The -ee option is to extract the full track from video files.
|
@@ -28,7 +29,7 @@
|
|
28
29
|
#[IF] $gpslatitude $gpslongitude
|
29
30
|
#[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
|
30
31
|
#[BODY] <ele>$gpsaltitude#</ele>
|
31
|
-
#[BODY] <time>${gpsdatetime#;DateFmt("%Y-%m-%dT%H:%M:%SZ")}</time>
|
32
|
+
#[BODY] <time>${gpsdatetime#;my ($ss)=/\.\d+/g;DateFmt("%Y-%m-%dT%H:%M:%SZ");s/Z/${ss}Z/ if $ss}</time>
|
32
33
|
#[BODY]</trkpt>
|
33
34
|
#[TAIL]</trkseg>
|
34
35
|
#[TAIL]</trk>
|
data/bin/fmt_files/gpx_wpt.fmt
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
# Revisons: 2010/03/13 - Peter Grimm created
|
12
12
|
# 2018/01/04 - PH Added IF to be sure position exists
|
13
13
|
# 2018/01/06 - PH Use DateFmt function instead of -d option
|
14
|
+
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
14
15
|
#
|
15
16
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
16
17
|
# 2) The -ee option is to extract the full track from video files.
|
@@ -26,7 +27,7 @@
|
|
26
27
|
#[IF] $gpslatitude $gpslongitude
|
27
28
|
#[BODY]<wpt lat="$gpslatitude#" lon="$gpslongitude#">
|
28
29
|
#[BODY] <ele>$gpsaltitude#</ele>
|
29
|
-
#[BODY] <time>${gpsdatetime#;DateFmt("%Y-%m-%dT%H:%M:%SZ")}</time>
|
30
|
+
#[BODY] <time>${gpsdatetime#;my ($ss)=/\.\d+/g;DateFmt("%Y-%m-%dT%H:%M:%SZ");s/Z/${ss}Z/ if $ss}</time>
|
30
31
|
#[BODY] <name>$filename</name>
|
31
32
|
#[BODY] <link href="$directory/$filename"/>
|
32
33
|
#[BODY] <sym>Scenic Area</sym>
|
data/bin/fmt_files/kml.fmt
CHANGED
@@ -38,12 +38,12 @@
|
|
38
38
|
#[HEAD] </IconStyle>
|
39
39
|
#[HEAD] </Style>
|
40
40
|
#[SECT] <Folder>
|
41
|
-
#[SECT] <name>$directory</name>
|
41
|
+
#[SECT] <name>$main:directory</name>
|
42
42
|
#[SECT] <open>0</open>
|
43
43
|
#[IF] $gpslatitude $gpslongitude
|
44
44
|
#[BODY] <Placemark>
|
45
45
|
#[BODY] <description><![CDATA[<br/><table><tr><td>
|
46
|
-
#[BODY] <img src='$directory/$filename'
|
46
|
+
#[BODY] <img src='$main:directory/$main:filename'
|
47
47
|
#[BODY] width='$imagewidth' height='$imageheight'>
|
48
48
|
#[BODY] </td></tr></table>]]></description>
|
49
49
|
#[BODY] <Snippet/>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# File: kml.fmt
|
3
|
+
#
|
4
|
+
# Description: Example ExifTool print format file for generating a
|
5
|
+
# track in Google Earth KML format from a collection of
|
6
|
+
# geotagged images or timed GPS from video files
|
7
|
+
#
|
8
|
+
# Usage: From a collection of images:
|
9
|
+
#
|
10
|
+
# exiftool -p kml.fmt -r DIR [...] > out.kml
|
11
|
+
#
|
12
|
+
# From video files:
|
13
|
+
#
|
14
|
+
# exiftool -p kml.fmt -ee FILEorDIR [...] > out.kml
|
15
|
+
#
|
16
|
+
# Requires: ExifTool version 10.41 or later
|
17
|
+
#
|
18
|
+
# Revisions: 2019/10/29 - P. Harvey created
|
19
|
+
#
|
20
|
+
# Notes: 1) Input files must contain GPSLatitude and GPSLongitude.
|
21
|
+
# 2) The -fileOrder option may be used to control the order of the
|
22
|
+
# waypoints when processing multiple still-image files, or the
|
23
|
+
# order of the tracks when processing multiple video files.
|
24
|
+
#------------------------------------------------------------------------------
|
25
|
+
#[HEAD]<?xml version="1.0" encoding="UTF-8"?>
|
26
|
+
#[HEAD]<kml xmlns="http://earth.google.com/kml/2.0">
|
27
|
+
#[HEAD] <Document>
|
28
|
+
#[HEAD] <name>My Track</name>
|
29
|
+
#[HEAD] <open>1</open>
|
30
|
+
#[SECT] <Placemark>
|
31
|
+
#[SECT] <name>${main:directory;$_=$self->GetValue('FileName') if $self->Options('ExtractEmbedded')}</name>
|
32
|
+
#[SECT] <Style>
|
33
|
+
#[SECT] <LineStyle>
|
34
|
+
#[SECT] <color>#ff4499ff</color>
|
35
|
+
#[SECT] <width>3</width>
|
36
|
+
#[SECT] </LineStyle>
|
37
|
+
#[SECT] </Style>
|
38
|
+
#[SECT] <LineString>
|
39
|
+
#[SECT] <altitudeMode>clampToGround</altitudeMode>
|
40
|
+
#[SECT] <coordinates>
|
41
|
+
#[BODY]$gpslongitude#,$gpslatitude#,0
|
42
|
+
#[ENDS] </coordinates>
|
43
|
+
#[ENDS] </LineString>
|
44
|
+
#[ENDS] </Placemark>
|
45
|
+
#[TAIL] </Document>
|
46
|
+
#[TAIL]</kml>
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
28
28
|
%jpegMarker %specialTags %fileTypeLookup);
|
29
29
|
|
30
|
-
$VERSION = '11.
|
30
|
+
$VERSION = '11.75';
|
31
31
|
$RELEASE = '';
|
32
32
|
@ISA = qw(Exporter);
|
33
33
|
%EXPORT_TAGS = (
|
@@ -143,7 +143,7 @@ sub ReadValue($$$;$$$);
|
|
143
143
|
QuickTime::Stream Matroska MOI MXF DV Flash Flash::FLV Real::Media
|
144
144
|
Real::Audio Real::Metafile Red RIFF AIFF ASF WTV DICOM FITS MIE JSON HTML
|
145
145
|
XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion EXE::PEString
|
146
|
-
EXE::MachO EXE::PEF EXE::ELF EXE::AR EXE::CHM LNK Font VCard
|
146
|
+
EXE::MachO EXE::PEF EXE::ELF EXE::AR EXE::CHM LNK Font VCard Text
|
147
147
|
VCard::VCalendar RSRC Rawzor ZIP ZIP::GZIP ZIP::RAR RTF OOXML iWork ISO
|
148
148
|
FLIR::AFF FLIR::FPF MacOS::MDItem MacOS::XAttr FlashPix::DocTable
|
149
149
|
);
|
@@ -184,9 +184,9 @@ $defaultLang = 'en'; # default language
|
|
184
184
|
PSD XMP BMP BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV OGG
|
185
185
|
FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF LFP
|
186
186
|
HTML VRD RTF FITS XCF DSS QTIF FPX PICT ZIP GZIP PLIST RAR BZ2
|
187
|
-
TAR
|
188
|
-
|
189
|
-
|
187
|
+
TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC M2TS PHP
|
188
|
+
PCX DCX DWF DWG WTV Torrent VCard LRI R3D AA PDB MOI ISO ALIAS
|
189
|
+
JSON MP3 DICOM PCD TXT);
|
190
190
|
|
191
191
|
# file types that we can write (edit)
|
192
192
|
my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
|
@@ -494,6 +494,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
494
494
|
TTC => ['Font', 'True Type Font Collection'],
|
495
495
|
TTF => ['Font', 'True Type Font'],
|
496
496
|
TUB => 'PSP',
|
497
|
+
TXT => ['TXT', 'Text file'],
|
497
498
|
VCARD=> ['VCard','Virtual Card'],
|
498
499
|
VCF => 'VCARD',
|
499
500
|
VOB => ['MPEG', 'Video Object'],
|
@@ -725,6 +726,7 @@ my %fileDescription = (
|
|
725
726
|
Torrent => 'application/x-bittorrent',
|
726
727
|
TTC => 'application/x-font-ttf',
|
727
728
|
TTF => 'application/x-font-ttf',
|
729
|
+
TXT => 'text/plain',
|
728
730
|
VCard=> 'text/vcard',
|
729
731
|
VSD => 'application/x-visio',
|
730
732
|
WDP => 'image/vnd.ms-photo',
|
@@ -805,6 +807,7 @@ my %moduleName = (
|
|
805
807
|
SWF => 'Flash',
|
806
808
|
TAR => 0,
|
807
809
|
TIFF => '',
|
810
|
+
TXT => 'Text',
|
808
811
|
VRD => 'CanonVRD',
|
809
812
|
WMF => 0,
|
810
813
|
X3F => 'SigmaRaw',
|
@@ -906,6 +909,7 @@ my %moduleName = (
|
|
906
909
|
RWZ => 'rawzor',
|
907
910
|
SWF => '[FC]WS[^\0]',
|
908
911
|
TAR => '.{257}ustar( )?\0', # (this doesn't catch old-style tar files)
|
912
|
+
TXT => '(\xff\xfe|(\0\0)?\xfe\xff|(\xef\xbb\xbf)?[\x07-\x0d\x20-\x7e\x80-\xfe]*$)',
|
909
913
|
TIFF => '(II|MM)', # don't test magic number (some raw formats are different)
|
910
914
|
VCard=> '(?i)BEGIN:(VCARD|VCALENDAR)\r\n',
|
911
915
|
VRD => 'CANON OPTIONAL DATA\0',
|
@@ -922,7 +926,7 @@ my %weakMagic = ( MP3 => 1 );
|
|
922
926
|
|
923
927
|
# file types that are determined by the process proc when FastScan == 3
|
924
928
|
# (when done, the process proc must exit after SetFileType if FastScan is 3)
|
925
|
-
my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard);
|
929
|
+
my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard TXT);
|
926
930
|
|
927
931
|
# Compact/XMPShorthand option settings
|
928
932
|
my %compactOpt = (
|
@@ -1063,7 +1067,7 @@ my %systemTagsNotes = (
|
|
1063
1067
|
Priority => 0, # to preserve order of JPEG COM segments
|
1064
1068
|
},
|
1065
1069
|
Directory => {
|
1066
|
-
Groups => { 1 => 'System' },
|
1070
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1067
1071
|
Notes => q{
|
1068
1072
|
the directory of the file as specified in the call to ExifTool, or "." if no
|
1069
1073
|
directory was specified. May be written to move the file to another
|
@@ -1078,7 +1082,7 @@ my %systemTagsNotes = (
|
|
1078
1082
|
ValueConvInv => '$_ = $self->InverseFileName($val); m{[^/]$} and $_ .= "/"; $_',
|
1079
1083
|
},
|
1080
1084
|
FileName => {
|
1081
|
-
Groups => { 1 => 'System' },
|
1085
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1082
1086
|
Writable => 1,
|
1083
1087
|
WritePseudo => 1,
|
1084
1088
|
DelCheck => q{"Can't delete"},
|
@@ -1094,7 +1098,7 @@ my %systemTagsNotes = (
|
|
1094
1098
|
ValueConvInv => '$self->InverseFileName($val)',
|
1095
1099
|
},
|
1096
1100
|
FilePath => {
|
1097
|
-
Groups => { 1 => 'System' },
|
1101
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1098
1102
|
Notes => q{
|
1099
1103
|
absolute path of source file. Not generated unless specifically requested or
|
1100
1104
|
the L<RequestAll|../ExifTool.html#RequestAll> API option is set. Does not support Windows Unicode file
|
@@ -1124,7 +1128,7 @@ my %systemTagsNotes = (
|
|
1124
1128
|
},
|
1125
1129
|
},
|
1126
1130
|
FileSize => {
|
1127
|
-
Groups => { 1 => 'System' },
|
1131
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1128
1132
|
Notes => q{
|
1129
1133
|
note that the print conversion for this tag uses historic prefixes: 1 kB =
|
1130
1134
|
1024 bytes, etc.
|
@@ -1132,7 +1136,7 @@ my %systemTagsNotes = (
|
|
1132
1136
|
PrintConv => \&ConvertFileSize,
|
1133
1137
|
},
|
1134
1138
|
ResourceForkSize => {
|
1135
|
-
Groups => { 1 => 'System' },
|
1139
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1136
1140
|
Notes => q{
|
1137
1141
|
size of the file's resource fork if it contains data. Mac OS only. If this
|
1138
1142
|
tag is generated the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option may be used to extract
|
@@ -1143,12 +1147,14 @@ my %systemTagsNotes = (
|
|
1143
1147
|
PrintConv => \&ConvertFileSize,
|
1144
1148
|
},
|
1145
1149
|
FileType => {
|
1150
|
+
Groups => { 2 => 'Other' },
|
1146
1151
|
Notes => q{
|
1147
1152
|
a short description of the file type. For many file types this is the just
|
1148
1153
|
the uppercase file extension
|
1149
1154
|
},
|
1150
1155
|
},
|
1151
1156
|
FileTypeExtension => {
|
1157
|
+
Groups => { 2 => 'Other' },
|
1152
1158
|
Notes => q{
|
1153
1159
|
a common lowercase extension for this file type, or uppercase with the -n
|
1154
1160
|
option
|
@@ -1221,7 +1227,7 @@ my %systemTagsNotes = (
|
|
1221
1227
|
PrintConv => '$self->ConvertDateTime($val)',
|
1222
1228
|
},
|
1223
1229
|
FilePermissions => {
|
1224
|
-
Groups => { 1 => 'System' },
|
1230
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1225
1231
|
Notes => q{
|
1226
1232
|
r=read, w=write and x=execute permissions for the file owner, group and
|
1227
1233
|
others. The ValueConv value is an octal number so bit test operations on
|
@@ -1256,7 +1262,7 @@ my %systemTagsNotes = (
|
|
1256
1262
|
},
|
1257
1263
|
},
|
1258
1264
|
FileAttributes => {
|
1259
|
-
Groups => { 1 => 'System' },
|
1265
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1260
1266
|
Notes => q{
|
1261
1267
|
extracted only if specifically requested or the L<SystemTags|../ExifTool.html#SystemTags> or L<RequestAll|../ExifTool.html#RequestAll> API
|
1262
1268
|
option is set. 2 or 3 values: 0. File type, 1. Attribute bits, 2. Windows
|
@@ -1303,15 +1309,15 @@ my %systemTagsNotes = (
|
|
1303
1309
|
}}],
|
1304
1310
|
},
|
1305
1311
|
FileDeviceID => {
|
1306
|
-
Groups => { 1 => 'System' },
|
1312
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1307
1313
|
%systemTagsNotes,
|
1308
1314
|
PrintConv => '(($val >> 24) & 0xff) . "." . ($val & 0xffffff)', # (major.minor)
|
1309
1315
|
},
|
1310
|
-
FileDeviceNumber => { Groups => { 1 => 'System' }, %systemTagsNotes },
|
1311
|
-
FileInodeNumber => { Groups => { 1 => 'System' }, %systemTagsNotes },
|
1312
|
-
FileHardLinks => { Groups => { 1 => 'System' }, %systemTagsNotes },
|
1316
|
+
FileDeviceNumber => { Groups => { 1 => 'System', 2 => 'Other' }, %systemTagsNotes },
|
1317
|
+
FileInodeNumber => { Groups => { 1 => 'System', 2 => 'Other' }, %systemTagsNotes },
|
1318
|
+
FileHardLinks => { Groups => { 1 => 'System', 2 => 'Other' }, %systemTagsNotes },
|
1313
1319
|
FileUserID => {
|
1314
|
-
Groups => { 1 => 'System' },
|
1320
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1315
1321
|
Notes => q{
|
1316
1322
|
extracted only if specifically requested or the L<SystemTags|../ExifTool.html#SystemTags> or L<RequestAll|../ExifTool.html#RequestAll> API
|
1317
1323
|
option is set. Returns user ID number with the -n option, or name
|
@@ -1325,7 +1331,7 @@ my %systemTagsNotes = (
|
|
1325
1331
|
PrintConvInv => 'eval { getpwnam($val) } || ($val=~/[^0-9]/ ? undef : $val)',
|
1326
1332
|
},
|
1327
1333
|
FileGroupID => {
|
1328
|
-
Groups => { 1 => 'System' },
|
1334
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1329
1335
|
Notes => q{
|
1330
1336
|
extracted only if specifically requested or the L<SystemTags|../ExifTool.html#SystemTags> or L<RequestAll|../ExifTool.html#RequestAll> API
|
1331
1337
|
option is set. Returns group ID number with the -n option, or name
|
@@ -1338,8 +1344,8 @@ my %systemTagsNotes = (
|
|
1338
1344
|
PrintConv => 'eval { getgrgid($val) } || $val',
|
1339
1345
|
PrintConvInv => 'eval { getgrnam($val) } || ($val=~/[^0-9]/ ? undef : $val)',
|
1340
1346
|
},
|
1341
|
-
FileBlockSize => { Groups => { 1 => 'System' }, %systemTagsNotes },
|
1342
|
-
FileBlockCount => { Groups => { 1 => 'System' }, %systemTagsNotes },
|
1347
|
+
FileBlockSize => { Groups => { 1 => 'System', 2 => 'Other' }, %systemTagsNotes },
|
1348
|
+
FileBlockCount => { Groups => { 1 => 'System', 2 => 'Other' }, %systemTagsNotes },
|
1343
1349
|
HardLink => {
|
1344
1350
|
Writable => 1,
|
1345
1351
|
DelCheck => q{"Can't delete"},
|
@@ -1374,7 +1380,7 @@ my %systemTagsNotes = (
|
|
1374
1380
|
},
|
1375
1381
|
ValueConvInv => '$val=~tr/\\\\/\//; $val',
|
1376
1382
|
},
|
1377
|
-
MIMEType => { Notes => 'the MIME type of the source file' },
|
1383
|
+
MIMEType => { Notes => 'the MIME type of the source file', Groups => { 2 => 'Other' } },
|
1378
1384
|
ImageWidth => { Notes => 'the width of the image in number of pixels' },
|
1379
1385
|
ImageHeight => { Notes => 'the height of the image in number of pixels' },
|
1380
1386
|
XResolution => { Notes => 'the horizontal pixel resolution' },
|
@@ -2245,7 +2251,7 @@ sub ExtractInfo($;@)
|
|
2245
2251
|
local $_;
|
2246
2252
|
my $self = shift;
|
2247
2253
|
my $options = $$self{OPTIONS}; # pointer to current options
|
2248
|
-
my $fast = $$options{FastScan};
|
2254
|
+
my $fast = $$options{FastScan} || 0;
|
2249
2255
|
my $req = $$self{REQ_TAG_LOOKUP};
|
2250
2256
|
my $reqAll = $$options{RequestAll} || 0;
|
2251
2257
|
my (%saveOptions, $reEntry, $rsize, $type, @startTime, $saveOrder);
|
@@ -2433,7 +2439,7 @@ sub ExtractInfo($;@)
|
|
2433
2439
|
$recognizedExt = $ext if defined $ext and not defined $magicNumber{$ext} and
|
2434
2440
|
defined $moduleName{$ext} and not $moduleName{$ext};
|
2435
2441
|
my @fileTypeList = GetFileType($realname);
|
2436
|
-
if ($fast
|
2442
|
+
if ($fast >= 4) {
|
2437
2443
|
if (@fileTypeList) {
|
2438
2444
|
$type = shift @fileTypeList;
|
2439
2445
|
$self->SetFileType($$self{FILE_TYPE} = $type);
|
@@ -2447,7 +2453,7 @@ sub ExtractInfo($;@)
|
|
2447
2453
|
my $pat = join '|', @fileTypeList;
|
2448
2454
|
push @fileTypeList, grep(!/^($pat)$/, @fileTypes);
|
2449
2455
|
$tiffType = $$self{FILE_EXT};
|
2450
|
-
unless ($fast
|
2456
|
+
unless ($fast == 3) {
|
2451
2457
|
$noMagic{MXF} = 1; # don't do magic number test on MXF or DV files
|
2452
2458
|
$noMagic{DV} = 1;
|
2453
2459
|
}
|
@@ -2460,9 +2466,9 @@ sub ExtractInfo($;@)
|
|
2460
2466
|
# initialize the input file for seeking in binary data
|
2461
2467
|
$raf->BinMode(); # set binary mode before we start reading
|
2462
2468
|
my $pos = $raf->Tell(); # get file position so we can rewind
|
2463
|
-
my %dirInfo = ( RAF => $raf, Base => $pos );
|
2464
2469
|
# loop through list of file types to test
|
2465
2470
|
my ($buff, $seekErr);
|
2471
|
+
my %dirInfo = ( RAF => $raf, Base => $pos, TestBuff => \$buff );
|
2466
2472
|
# read start of file for testing
|
2467
2473
|
my $testLen = 1024;
|
2468
2474
|
$raf->Read($buff, $testLen) or $buff = '';
|
@@ -2477,6 +2483,7 @@ sub ExtractInfo($;@)
|
|
2477
2483
|
} else {
|
2478
2484
|
# keep checking for other types if we recognize this file only by extension
|
2479
2485
|
next if defined $moduleName{$type} and not $moduleName{$type};
|
2486
|
+
next if $fast > 2; # keep checking if we aren't processing the file
|
2480
2487
|
}
|
2481
2488
|
next if $weakMagic{$type} and defined $recognizedExt;
|
2482
2489
|
} elsif (not defined $type) {
|
@@ -2497,7 +2504,7 @@ sub ExtractInfo($;@)
|
|
2497
2504
|
$$self{FILE_TYPE} = $type;
|
2498
2505
|
$dirInfo{Parent} = ($type eq 'TIFF') ? $tiffType : $type;
|
2499
2506
|
# don't process the file when FastScan == 3
|
2500
|
-
if ($fast
|
2507
|
+
if ($fast == 3 and not $processType{$type}) {
|
2501
2508
|
unless ($weakMagic{$type} and (not $ext or $ext ne $type)) {
|
2502
2509
|
$self->SetFileType($dirInfo{Parent});
|
2503
2510
|
}
|
@@ -5914,7 +5921,7 @@ sub ProcessJPEG($$)
|
|
5914
5921
|
my $options = $$self{OPTIONS};
|
5915
5922
|
my $verbose = $$options{Verbose};
|
5916
5923
|
my $out = $$options{TextOut};
|
5917
|
-
my $fast = $$options{FastScan};
|
5924
|
+
my $fast = $$options{FastScan} || 0;
|
5918
5925
|
my $raf = $$dirInfo{RAF};
|
5919
5926
|
my $htmlDump = $$self{HTML_DUMP};
|
5920
5927
|
my %dumpParms = ( Out => $out );
|
@@ -5935,7 +5942,7 @@ sub ProcessJPEG($$)
|
|
5935
5942
|
}
|
5936
5943
|
if (not $$self{VALUE}{FileType} or ($$self{DOC_NUM} and $$options{ExtractEmbedded})) {
|
5937
5944
|
$self->SetFileType(); # set FileType tag
|
5938
|
-
return 1 if $fast
|
5945
|
+
return 1 if $fast == 3; # don't process file when FastScan == 3
|
5939
5946
|
$$self{LOW_PRIORITY_DIR}{IFD1} = 1; # lower priority of IFD1 tags
|
5940
5947
|
}
|
5941
5948
|
$$raf{NoBuffer} = 1 if $self->Options('FastScan'); # disable buffering in FastScan mode
|
@@ -6246,7 +6253,7 @@ sub ProcessJPEG($$)
|
|
6246
6253
|
my $tagInfo = $self->GetTagInfo($tagTablePtr, $tag);
|
6247
6254
|
$self->FoundTag($tagInfo, substr($$segDataPt, 6));
|
6248
6255
|
} elsif ($$segDataPt =~ /^(II|MM).{4}HEAPJPGM/s) {
|
6249
|
-
next if $fast
|
6256
|
+
next if $fast > 1; # skip processing for very fast
|
6250
6257
|
$dumpType = 'CIFF';
|
6251
6258
|
my %dirInfo = ( RAF => new File::RandomAccess($segDataPt) );
|
6252
6259
|
$$self{SET_GROUP1} = 'CIFF';
|
@@ -6475,7 +6482,7 @@ sub ProcessJPEG($$)
|
|
6475
6482
|
$self->WarnOnce('Invalid or extraneous ICC_Profile chunk(s)');
|
6476
6483
|
}
|
6477
6484
|
} elsif ($$segDataPt =~ /^FPXR\0/) {
|
6478
|
-
next if $fast
|
6485
|
+
next if $fast > 1; # skip processing for very fast
|
6479
6486
|
$dumpType = 'FPXR';
|
6480
6487
|
my $tagTablePtr = GetTagTable('Image::ExifTool::FlashPix::Main');
|
6481
6488
|
# set flag if this is the last FPXR segment
|
@@ -6555,7 +6562,7 @@ sub ProcessJPEG($$)
|
|
6555
6562
|
undef $scalado;
|
6556
6563
|
}
|
6557
6564
|
} elsif ($$segDataPt =~ /^FPXR\0/) {
|
6558
|
-
next if $fast
|
6565
|
+
next if $fast > 1; # skip processing for very fast
|
6559
6566
|
$dumpType = 'FPXR';
|
6560
6567
|
my $tagTablePtr = GetTagTable('Image::ExifTool::FlashPix::Main');
|
6561
6568
|
# set flag if this is the last FPXR segment
|
@@ -7428,7 +7435,9 @@ sub ProcessDirectory($$$;$)
|
|
7428
7435
|
$$self{FOUND_DIR}{$dirName} = 1;
|
7429
7436
|
|
7430
7437
|
# process the directory
|
7438
|
+
no strict 'refs';
|
7431
7439
|
my $rtnVal = &$proc($self, $dirInfo, $tagTablePtr);
|
7440
|
+
use strict 'refs';
|
7432
7441
|
|
7433
7442
|
pop @{$$self{PATH}};
|
7434
7443
|
@$self{'INDENT','DIR_NAME','Compression','SubfileType'} = @save;
|
@@ -7613,7 +7622,7 @@ sub AddTagToTable($$;$$)
|
|
7613
7622
|
# Handle simple extraction of new tag information
|
7614
7623
|
# Inputs: 0) ExifTool object ref, 1) tag table reference, 2) tagID, 3) value,
|
7615
7624
|
# 4-N) parameters hash: Index, DataPt, DataPos, Base, Start, Size, Parent,
|
7616
|
-
# TagInfo, ProcessProc, RAF, Format
|
7625
|
+
# TagInfo, ProcessProc, RAF, Format, Count
|
7617
7626
|
# Returns: tag key or undef if tag not found
|
7618
7627
|
# Notes: if value is not defined, it is extracted from DataPt using TagInfo
|
7619
7628
|
# Format and Count if provided
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -86,24 +86,24 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
86
86
|
BPG r | FLIF r/w | MKA r | PFB r | TORRENT r
|
87
87
|
BTF r | FLV r | MKS r | PFM r | TTC r
|
88
88
|
CHM r | FPF r | MKV r | PGF r | TTF r
|
89
|
-
COS r | FPX r | MNG r/w | PGM r/w |
|
90
|
-
CR2 r/w | GIF r/w | MOBI r | PLIST r |
|
91
|
-
CR3 r/w | GPR r/w | MODD r | PICT r |
|
92
|
-
CRM r/w | GZ r | MOI r | PMP r |
|
93
|
-
CRW r/w | HDP r/w | MOS r/w | PNG r/w |
|
94
|
-
CS1 r/w | HDR r | MOV r/w | PPM r/w |
|
95
|
-
DCM r | HEIC r/w | MP3 r | PPT r |
|
96
|
-
DCP r/w | HEIF r/w | MP4 r/w | PPTX r |
|
97
|
-
DCR r | HTML r | MPC r | PS r/w |
|
98
|
-
DFONT r | ICC r/w/c | MPG r | PSB r/w |
|
99
|
-
DIVX r | ICS r | MPO r/w | PSD r/w |
|
100
|
-
DJVU r | IDML r | MQV r/w | PSP r |
|
101
|
-
DLL r | IIQ r/w | MRW r/w | QTIF r/w |
|
102
|
-
DNG r/w | IND r/w | MXF r | R3D r |
|
103
|
-
DOC r | INSV r | NEF r/w | RA r |
|
104
|
-
DOCX r | INX r | NRW r/w | RAF r/w |
|
105
|
-
DPX r | ISO r | NUMBERS r | RAM r |
|
106
|
-
DR4 r/w/c | ITC r | O r | RAR r |
|
89
|
+
COS r | FPX r | MNG r/w | PGM r/w | TXT r
|
90
|
+
CR2 r/w | GIF r/w | MOBI r | PLIST r | VCF r
|
91
|
+
CR3 r/w | GPR r/w | MODD r | PICT r | VRD r/w/c
|
92
|
+
CRM r/w | GZ r | MOI r | PMP r | VSD r
|
93
|
+
CRW r/w | HDP r/w | MOS r/w | PNG r/w | WAV r
|
94
|
+
CS1 r/w | HDR r | MOV r/w | PPM r/w | WDP r/w
|
95
|
+
DCM r | HEIC r/w | MP3 r | PPT r | WEBP r
|
96
|
+
DCP r/w | HEIF r/w | MP4 r/w | PPTX r | WEBM r
|
97
|
+
DCR r | HTML r | MPC r | PS r/w | WMA r
|
98
|
+
DFONT r | ICC r/w/c | MPG r | PSB r/w | WMV r
|
99
|
+
DIVX r | ICS r | MPO r/w | PSD r/w | WTV r
|
100
|
+
DJVU r | IDML r | MQV r/w | PSP r | WV r
|
101
|
+
DLL r | IIQ r/w | MRW r/w | QTIF r/w | X3F r/w
|
102
|
+
DNG r/w | IND r/w | MXF r | R3D r | XCF r
|
103
|
+
DOC r | INSV r | NEF r/w | RA r | XLS r
|
104
|
+
DOCX r | INX r | NRW r/w | RAF r/w | XLSX r
|
105
|
+
DPX r | ISO r | NUMBERS r | RAM r | XMP r/w/c
|
106
|
+
DR4 r/w/c | ITC r | O r | RAR r | ZIP r
|
107
107
|
|
108
108
|
Meta Information
|
109
109
|
----------------------+----------------------+---------------------
|
@@ -2236,7 +2236,7 @@ EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font,
|
|
2236
2236
|
FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML, ICC_Profile, ID3, IPTC,
|
2237
2237
|
ISO, ITC, JFIF, JPEG, JSON, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF,
|
2238
2238
|
MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR,
|
2239
|
-
Opus, PDF, PICT, PLIST, PNG, PSP, Palm, PanasonicRaw, PhotoCD,
|
2239
|
+
Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, PhotoCD,
|
2240
2240
|
PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC,
|
2241
2241
|
RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, Torrent,
|
2242
2242
|
VCard, Vorbis, WTV, XML, XMP, ZIP
|
@@ -2283,8 +2283,8 @@ ZIP
|
|
2283
2283
|
|
2284
2284
|
=item Family 2 (Category):
|
2285
2285
|
|
2286
|
-
Audio, Author, Camera, Document, ExifTool, Image, Location, Other,
|
2287
|
-
Printing, Time, Unknown, Video
|
2286
|
+
Audio, Author, Camera, Device, Document, ExifTool, Image, Location, Other,
|
2287
|
+
Preview, Printing, Time, Unknown, Video
|
2288
2288
|
|
2289
2289
|
=item Family 3 (Document Number):
|
2290
2290
|
|