exiftool_vendored 10.56.0 → 10.58.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.
- checksums.yaml +4 -4
- data/bin/Changes +32 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +31 -28
- data/bin/lib/Image/ExifTool.pm +41 -14
- data/bin/lib/Image/ExifTool.pod +4 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +17 -9
- data/bin/lib/Image/ExifTool/Canon.pm +17 -5
- data/bin/lib/Image/ExifTool/DJI.pm +20 -1
- data/bin/lib/Image/ExifTool/EXE.pm +2 -2
- data/bin/lib/Image/ExifTool/Exif.pm +5 -0
- data/bin/lib/Image/ExifTool/FujiFilm.pm +40 -3
- data/bin/lib/Image/ExifTool/GIF.pm +2 -2
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
- data/bin/lib/Image/ExifTool/Import.pm +13 -3
- data/bin/lib/Image/ExifTool/Minolta.pm +47 -41
- data/bin/lib/Image/ExifTool/PNG.pm +8 -7
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +19 -3
- data/bin/lib/Image/ExifTool/README +49 -47
- data/bin/lib/Image/ExifTool/RIFF.pm +62 -4
- data/bin/lib/Image/ExifTool/Sony.pm +7 -4
- data/bin/lib/Image/ExifTool/TagLookup.pm +4187 -4166
- data/bin/lib/Image/ExifTool/TagNames.pod +71 -24
- data/bin/lib/Image/ExifTool/WritePNG.pl +8 -7
- data/bin/lib/Image/ExifTool/XMP.pm +6 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 72daef9a11b65e07249202a45cd992a51acb07b6
|
|
4
|
+
data.tar.gz: 62cdaa5125babfc3efcc8e8813a0392fcc373074
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e69f4f592268effb10cd7b4b9ca7c75307806cc3605836861a3ac6bf8d7781707939b64d05b7e11d99521add8ef5c7b9bac02ca24cee205aabfe7f8a3b2cf6a4
|
|
7
|
+
data.tar.gz: 4d8198e2a6fbd32b0fa85e76bf4261c8984aabb549ceba9c7a2a6ed1af0a38084d6d8fafe96f3afbc73acd48b97b0d94ae20a2b2cc2641e0a1d02513730ef4bc
|
data/bin/Changes
CHANGED
|
@@ -7,6 +7,37 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 10.55. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to CPAN.)
|
|
9
9
|
|
|
10
|
+
June 29, 2017 - Version 10.58
|
|
11
|
+
|
|
12
|
+
- Added read support for RIFF-format MBWF/RF64 files
|
|
13
|
+
- Added write support for dji-drone XMP tags
|
|
14
|
+
- Added a new Canon LensType (thanks Steve Bates)
|
|
15
|
+
- Added a few new Sony/Minolta LensType values (thanks Jos Roost)
|
|
16
|
+
- Added a new Canon LensType
|
|
17
|
+
- Added a couple of new CanonModelID values (thanks LibRaw and Norbert Wasser)
|
|
18
|
+
- Decode some new FujiFilm tags (thanks Chris Schucker)
|
|
19
|
+
- Enhanced FileSize print conversion to show in "GB" for large files
|
|
20
|
+
- Fixed "outside of string in unpack" errors when reading some corrupted
|
|
21
|
+
EXE/ICC files
|
|
22
|
+
- Fixed problem extracting GIF MIDISong metadata
|
|
23
|
+
|
|
24
|
+
June 20, 2017 - Version 10.57
|
|
25
|
+
|
|
26
|
+
- Added a new Canon LensType (thanks Norbert Wasser)
|
|
27
|
+
- Added write support for PNG Collection tag
|
|
28
|
+
- Added a few new CanonModelID values
|
|
29
|
+
- Added some new Pentax ShakeReduction values
|
|
30
|
+
- Removed ability to create PNG zxIf chunks
|
|
31
|
+
- Documented -progress:%b feature (added in 10.26)
|
|
32
|
+
- No longer report FileType, FileTypeExtension or MIMEType for JPEG/TIFF
|
|
33
|
+
images with an unknown header
|
|
34
|
+
- Relaxed case requirement for "SourceFile" header in CSV and JSON import
|
|
35
|
+
- Fixed decoding of Pentax ExposureCompensation for newer Ricoh models
|
|
36
|
+
- Fixed some incorrect "Wrong IFD" messages with experimental -validate
|
|
37
|
+
feature
|
|
38
|
+
- Fixed a couple of Sony/Minolta lens names (thanks Jos Roost)
|
|
39
|
+
- Fixed "Error reading PreviewImage" warning for some Sony models
|
|
40
|
+
|
|
10
41
|
June 6, 2017 - Version 10.56
|
|
11
42
|
|
|
12
43
|
- Removed ordering constraints between Geotag/Geosync and Geotime assignments
|
|
@@ -201,6 +232,7 @@ Jan. 13, 2017 - Version 10.39
|
|
|
201
232
|
|
|
202
233
|
- Added Perl version and Unicode settings to -ver -v output
|
|
203
234
|
- Added a new Sony LensType2 value
|
|
235
|
+
- Added a new Canon LensType (thanks Norbert Wasser)
|
|
204
236
|
- More improvements to sample time_zone.config file (thanks Hayo Baan)
|
|
205
237
|
- Fixed problem with MWG date/time tags introduced in version 10.34
|
|
206
238
|
- Fixed problem setting the value of a tag from a binary file when the
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
|
@@ -101,8 +101,8 @@ your home directory, then you would type the following commands in a
|
|
|
101
101
|
terminal window to extract and run ExifTool:
|
|
102
102
|
|
|
103
103
|
cd ~/Desktop
|
|
104
|
-
gzip -dc Image-ExifTool-10.
|
|
105
|
-
cd Image-ExifTool-10.
|
|
104
|
+
gzip -dc Image-ExifTool-10.58.tar.gz | tar -xf -
|
|
105
|
+
cd Image-ExifTool-10.58
|
|
106
106
|
./exiftool t/images/ExifTool.jpg
|
|
107
107
|
|
|
108
108
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
use strict;
|
|
13
13
|
require 5.004;
|
|
14
14
|
|
|
15
|
-
my $version = '10.
|
|
15
|
+
my $version = '10.58';
|
|
16
16
|
|
|
17
17
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
18
18
|
my $exeDir;
|
|
@@ -4779,17 +4779,18 @@ group names to each tag. List-type tags with multiple items are output as
|
|
|
4779
4779
|
JSON arrays unless B<-sep> is used. By default XMP structures are flattened
|
|
4780
4780
|
into individual tags in the JSON output, but the original structure may be
|
|
4781
4781
|
preserved with the B<-struct> option (this also causes all list-type XMP
|
|
4782
|
-
tags to be output as JSON arrays, otherwise single-item lists
|
|
4783
|
-
simple strings). The B<-a> option is implied if the B<-g> or
|
|
4784
|
-
are used, otherwise it is ignored and duplicate tags are
|
|
4785
|
-
the B<-D> or B<-H> option changes tag values to JSON
|
|
4786
|
-
"id" fields, and adding B<-l> adds a "desc" field,
|
|
4787
|
-
numerical value is different from the converted
|
|
4788
|
-
be added to output binary data, encoded in
|
|
4789
|
-
"base64:" as the first 7 bytes of the
|
|
4790
|
-
include tag table information (see B<-t>
|
|
4791
|
-
UTF-8 regardless of any B<-L> or
|
|
4792
|
-
|
|
4782
|
+
tags to be output as JSON arrays, otherwise single-item lists would be
|
|
4783
|
+
output as simple strings). The B<-a> option is implied if the B<-g> or
|
|
4784
|
+
B<-G> options are used, otherwise it is ignored and duplicate tags are
|
|
4785
|
+
suppressed. Adding the B<-D> or B<-H> option changes tag values to JSON
|
|
4786
|
+
objects with "val" and "id" fields, and adding B<-l> adds a "desc" field,
|
|
4787
|
+
and a "num" field if the numerical value is different from the converted
|
|
4788
|
+
"val". The B<-b> option may be added to output binary data, encoded in
|
|
4789
|
+
base64 if necessary (indicated by "base64:" as the first 7 bytes of the
|
|
4790
|
+
value), and B<-t> may be added to include tag table information (see B<-t>
|
|
4791
|
+
for details). The JSON output is UTF-8 regardless of any B<-L> or
|
|
4792
|
+
B<-charset> option setting, but the UTF-8 validation is disabled if a
|
|
4793
|
+
character set other than UTF-8 is specified.
|
|
4793
4794
|
|
|
4794
4795
|
If I<JSONFILE> is specified, the file is imported and the tag definitions
|
|
4795
4796
|
from the file are used to set tag values on a per-file basis. The special
|
|
@@ -4799,7 +4800,7 @@ of "*" defines default tags for all target files which are combined with any
|
|
|
4799
4800
|
tags specified for the specific SourceFile processed. The imported JSON
|
|
4800
4801
|
file must have the same format as the exported JSON files with the exception
|
|
4801
4802
|
that the B<-g> option is not compatible with the import file format (use
|
|
4802
|
-
B<-G> instead).
|
|
4803
|
+
B<-G> instead). Additionally, tag names in the input JSON file may be
|
|
4803
4804
|
suffixed with a C<#> to disable print conversion.
|
|
4804
4805
|
|
|
4805
4806
|
Unlike CSV import, empty values are not ignored, and will cause an empty
|
|
@@ -4908,7 +4909,7 @@ with this command:
|
|
|
4908
4909
|
|
|
4909
4910
|
produces output like this:
|
|
4910
4911
|
|
|
4911
|
-
-- Generated by ExifTool 10.
|
|
4912
|
+
-- Generated by ExifTool 10.58 --
|
|
4912
4913
|
File: a.jpg - 2003:10:31 15:44:19
|
|
4913
4914
|
(f/5.6, 1/60s, ISO 100)
|
|
4914
4915
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -4988,8 +4989,8 @@ with B<--sort>.
|
|
|
4988
4989
|
|
|
4989
4990
|
Output structured XMP information instead of flattening to individual tags.
|
|
4990
4991
|
This option works well when combined with the XML (B<-X>) and JSON (B<-j>)
|
|
4991
|
-
output formats. For other output formats,
|
|
4992
|
-
into the same format as when writing structured information (see
|
|
4992
|
+
output formats. For other output formats, XMP structures and lists are
|
|
4993
|
+
serialized into the same format as when writing structured information (see
|
|
4993
4994
|
L<http://owl.phy.queensu.ca/~phil/exiftool/struct.html> for details). When
|
|
4994
4995
|
copying, structured tags are copied by default unless B<--struct> is used to
|
|
4995
4996
|
disable this feature (although flattened tags may still be copied by
|
|
@@ -5284,7 +5285,8 @@ small when reading images directly from disk, but can be substantial if
|
|
|
5284
5285
|
piping images through a network connection. For more substantial speed
|
|
5285
5286
|
benefits, B<-fast2> also causes exiftool to avoid extracting any EXIF
|
|
5286
5287
|
MakerNote information. B<-fast3> avoids processing the file entirely, and
|
|
5287
|
-
returns only an initial guess at FileType and the pseudo System tags.
|
|
5288
|
+
returns only an initial guess at FileType and the pseudo System tags. Has
|
|
5289
|
+
no effect when writing.
|
|
5288
5290
|
|
|
5289
5291
|
=item B<-fileOrder> [-]I<TAG>
|
|
5290
5292
|
|
|
@@ -5464,10 +5466,10 @@ If followed by a colon (ie. B<-progress:>), the console window title is set
|
|
|
5464
5466
|
according to the specified I<TITLE> string. If no I<TITLE> is given, a
|
|
5465
5467
|
default I<TITLE> string of "ExifTool %p%%" is assumed. In the string, %f
|
|
5466
5468
|
represents the file name, %p is the progress as a percent, %r is the
|
|
5467
|
-
progress as a ratio,
|
|
5468
|
-
|
|
5469
|
-
messages. (Note: For this feature
|
|
5470
|
-
stderr must go to the console.)
|
|
5469
|
+
progress as a ratio, %[##]b is a progress bar of width ## (default 20), and
|
|
5470
|
+
%% is a % character. May be combined with the normal B<-progress> option to
|
|
5471
|
+
also show the progress count in console messages. (Note: For this feature
|
|
5472
|
+
to function correctly on Mac/Linux, stderr must go to the console.)
|
|
5471
5473
|
|
|
5472
5474
|
=item B<-q> (B<-quiet>)
|
|
5473
5475
|
|
|
@@ -5926,10 +5928,11 @@ Note that function names are case sensitive.
|
|
|
5926
5928
|
|
|
5927
5929
|
=head1 WINDOWS UNICODE FILE NAMES
|
|
5928
5930
|
|
|
5929
|
-
In Windows,
|
|
5930
|
-
|
|
5931
|
-
|
|
5932
|
-
|
|
5931
|
+
In Windows, command-line arguments are specified using the current code page
|
|
5932
|
+
and are recoded automatically to the system code page. This recoding is not
|
|
5933
|
+
done for arguments in ExifTool arg files, so by default filenames in arg
|
|
5934
|
+
files use the system code page. Unfortunately, these code pages are not
|
|
5935
|
+
complete character sets, so not all file names may be represented.
|
|
5933
5936
|
|
|
5934
5937
|
ExifTool 9.79 and later allow the file name encoding to be specified with
|
|
5935
5938
|
C<-charset filename=CHARSET>, where C<CHARSET> is the name of a valid
|
|
@@ -5938,8 +5941,8 @@ complete list). Setting this triggers the use of Windows wide-character i/o
|
|
|
5938
5941
|
routines, thus providing support for all Unicode file names. But note that
|
|
5939
5942
|
it is not trivial to pass properly encoded file names on the Windows command
|
|
5940
5943
|
line (see L<http://owl.phy.queensu.ca/~phil/exiftool/faq.html#Q18> for
|
|
5941
|
-
details), so placing them in a UTF-8 encoded B<-@> argfile
|
|
5942
|
-
possible.
|
|
5944
|
+
details), so placing them in a UTF-8 encoded B<-@> argfile and using
|
|
5945
|
+
C<-charset filename=utf8> is recommended if possible.
|
|
5943
5946
|
|
|
5944
5947
|
A warning is issued if a specified filename contains special characters and
|
|
5945
5948
|
the filename character set was not provided. However, the warning may be
|
|
@@ -6542,7 +6545,7 @@ flexibility of ExifTool.)
|
|
|
6542
6545
|
|
|
6543
6546
|
=back
|
|
6544
6547
|
|
|
6545
|
-
=head1
|
|
6548
|
+
=head1 EXIT STATUS
|
|
6546
6549
|
|
|
6547
6550
|
The exiftool application exits with a status of 0 on success, or 1 if an
|
|
6548
6551
|
error occurred or if all files failed the B<-if> condition (for any of the
|
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);
|
|
29
29
|
|
|
30
|
-
$VERSION = '10.
|
|
30
|
+
$VERSION = '10.58';
|
|
31
31
|
$RELEASE = '';
|
|
32
32
|
@ISA = qw(Exporter);
|
|
33
33
|
%EXPORT_TAGS = (
|
|
@@ -509,7 +509,6 @@ my %fileTypeExt = (
|
|
|
509
509
|
my %fileDescription = (
|
|
510
510
|
DICOM => 'Digital Imaging and Communications in Medicine',
|
|
511
511
|
XML => 'Extensible Markup Language',
|
|
512
|
-
'DJVU (multi-page)' => 'DjVu multi-page image',
|
|
513
512
|
'Win32 EXE' => 'Windows 32-bit Executable',
|
|
514
513
|
'Win32 DLL' => 'Windows 32-bit Dynamic Link Library',
|
|
515
514
|
'Win64 EXE' => 'Windows 64-bit Executable',
|
|
@@ -834,7 +833,7 @@ my %moduleName = (
|
|
|
834
833
|
RAR => 'Rar!\x1a\x07\0',
|
|
835
834
|
RAW => '(.{25}ARECOYK|II|MM)',
|
|
836
835
|
Real => '(\.RMF|\.ra\xfd|pnm://|rtsp://|http://)',
|
|
837
|
-
RIFF => '(RIFF|LA0[234]|OFR |LPAC|wvpk)', # RIFF plus other variants
|
|
836
|
+
RIFF => '(RIFF|LA0[234]|OFR |LPAC|wvpk|RF64)', # RIFF plus other variants
|
|
838
837
|
RSRC => '(....)?\0\0\x01\0',
|
|
839
838
|
RTF => '[\n\r]*\\{[\n\r]*\\\\rtf',
|
|
840
839
|
RWZ => 'rawzor',
|
|
@@ -1097,9 +1096,10 @@ my %systemTagsNotes = (
|
|
|
1097
1096
|
FileCreateDate => {
|
|
1098
1097
|
Description => 'File Creation Date/Time',
|
|
1099
1098
|
Notes => q{
|
|
1100
|
-
the filesystem creation date/time. Windows only.
|
|
1101
|
-
and Win32::API
|
|
1102
|
-
for the Mac OS X
|
|
1099
|
+
the filesystem creation date/time. Windows only. This tag is writable and
|
|
1100
|
+
is preserved by default when writing if Win32API::File and Win32::API are
|
|
1101
|
+
available. See L<MDItemFSCreationDate|MacOS.html#MDItem> for the Mac OS X
|
|
1102
|
+
equivalent
|
|
1103
1103
|
},
|
|
1104
1104
|
Groups => { 1 => 'System', 2 => 'Time' },
|
|
1105
1105
|
Writable => 1,
|
|
@@ -1452,6 +1452,7 @@ my %systemTagsNotes = (
|
|
|
1452
1452
|
higher
|
|
1453
1453
|
},
|
|
1454
1454
|
},
|
|
1455
|
+
# Validate (added from Validate.pm)
|
|
1455
1456
|
Now => {
|
|
1456
1457
|
Groups => { 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'Time' },
|
|
1457
1458
|
Notes => q{
|
|
@@ -2215,6 +2216,7 @@ sub ExtractInfo($;@)
|
|
|
2215
2216
|
$raf->Read($buff, 1024) or $buff = '';
|
|
2216
2217
|
$raf->Seek($pos, 0) or $seekErr = 1;
|
|
2217
2218
|
until ($seekErr) {
|
|
2219
|
+
my $unkHeader;
|
|
2218
2220
|
$type = shift @fileTypeList;
|
|
2219
2221
|
if ($type) {
|
|
2220
2222
|
# do quick test for this file type to avoid loading module unnecessarily
|
|
@@ -2232,7 +2234,8 @@ sub ExtractInfo($;@)
|
|
|
2232
2234
|
my $skip = pos($buff) - length($1);
|
|
2233
2235
|
$dirInfo{Base} = $pos + $skip;
|
|
2234
2236
|
$raf->Seek($pos + $skip, 0) or $seekErr = 1, last;
|
|
2235
|
-
$self->Warn("
|
|
2237
|
+
$self->Warn("Processing $type-like data after unknown $skip-byte header");
|
|
2238
|
+
$unkHeader = 1 unless $$self{DOC_NUM};
|
|
2236
2239
|
}
|
|
2237
2240
|
# save file type in member variable
|
|
2238
2241
|
$$self{FILE_TYPE} = $type;
|
|
@@ -2266,8 +2269,15 @@ sub ExtractInfo($;@)
|
|
|
2266
2269
|
|
|
2267
2270
|
pop @{$$self{PATH}};
|
|
2268
2271
|
|
|
2269
|
-
|
|
2270
|
-
|
|
2272
|
+
if ($result) { # all done if successful
|
|
2273
|
+
if ($unkHeader) {
|
|
2274
|
+
$self->DeleteTag('FileType');
|
|
2275
|
+
$self->DeleteTag('FileTypeExtension');
|
|
2276
|
+
$self->DeleteTag('MIMEType');
|
|
2277
|
+
$self->VPrint(0,"Reset file type due to unknown header\n");
|
|
2278
|
+
}
|
|
2279
|
+
last;
|
|
2280
|
+
}
|
|
2271
2281
|
# seek back to try again from the same position in the file
|
|
2272
2282
|
$raf->Seek($pos, 0) or $seekErr = 1, last;
|
|
2273
2283
|
}
|
|
@@ -2787,7 +2797,14 @@ sub GetValue($$;$)
|
|
|
2787
2797
|
last;
|
|
2788
2798
|
}
|
|
2789
2799
|
$val = $$vals[$i];
|
|
2790
|
-
|
|
2800
|
+
if ($convList) {
|
|
2801
|
+
my $nextConv = $$convList[$i];
|
|
2802
|
+
if ($nextConv and $nextConv eq 'REPEAT') {
|
|
2803
|
+
undef $convList;
|
|
2804
|
+
} else {
|
|
2805
|
+
$conv = $nextConv;
|
|
2806
|
+
}
|
|
2807
|
+
}
|
|
2791
2808
|
}
|
|
2792
2809
|
# return undefined now if no value
|
|
2793
2810
|
return () unless defined $value;
|
|
@@ -3222,15 +3239,23 @@ sub GetFileType(;$$)
|
|
|
3222
3239
|
}
|
|
3223
3240
|
return @types;
|
|
3224
3241
|
}
|
|
3225
|
-
my $fileType;
|
|
3242
|
+
my ($fileType, $subType);
|
|
3226
3243
|
my $fileExt = GetFileExtension($file);
|
|
3227
|
-
|
|
3244
|
+
unless ($fileExt) {
|
|
3245
|
+
if ($file =~ s/ \((.*)\)$//) {
|
|
3246
|
+
$subType = $1;
|
|
3247
|
+
$fileExt = GetFileExtension($file);
|
|
3248
|
+
}
|
|
3249
|
+
$fileExt = uc($file) unless $fileExt;
|
|
3250
|
+
}
|
|
3228
3251
|
$fileExt and $fileType = $fileTypeLookup{$fileExt}; # look up the file type
|
|
3229
3252
|
$fileType = $fileTypeLookup{$fileType} while $fileType and not ref $fileType;
|
|
3230
3253
|
# return description if specified
|
|
3231
3254
|
# (allow input $file to be a FileType for this purpose)
|
|
3232
3255
|
if ($desc) {
|
|
3233
|
-
|
|
3256
|
+
$desc = $fileType ? $$fileType[1] : $fileDescription{$file};
|
|
3257
|
+
$desc .= ", $subType" if $subType;
|
|
3258
|
+
return $desc;
|
|
3234
3259
|
} elsif ($fileType and (not defined $desc or $desc ne '0')) {
|
|
3235
3260
|
# return only supported file types
|
|
3236
3261
|
my $mod = $moduleName{$$fileType[0]};
|
|
@@ -5119,7 +5144,9 @@ sub ConvertFileSize($)
|
|
|
5119
5144
|
$val < 10240 and return sprintf('%.1f kB', $val / 1024);
|
|
5120
5145
|
$val < 2097152 and return sprintf('%.0f kB', $val / 1024);
|
|
5121
5146
|
$val < 10485760 and return sprintf('%.1f MB', $val / 1048576);
|
|
5122
|
-
return sprintf('%.0f MB', $val / 1048576);
|
|
5147
|
+
$val < 2147483648 and return sprintf('%.0f MB', $val / 1048576);
|
|
5148
|
+
$val < 10737418240 and return sprintf('%.1f GB', $val / 1073741824);
|
|
5149
|
+
return sprintf('%.0f GB', $val / 1073741824);
|
|
5123
5150
|
}
|
|
5124
5151
|
|
|
5125
5152
|
#------------------------------------------------------------------------------
|
data/bin/lib/Image/ExifTool.pod
CHANGED
|
@@ -2180,9 +2180,10 @@ RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP,
|
|
|
2180
2180
|
Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Ricoh, SPIFF, SR2,
|
|
2181
2181
|
SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw,
|
|
2182
2182
|
Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent, Track#, VCalendar,
|
|
2183
|
-
VCard, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-
|
|
2184
|
-
XMP-
|
|
2185
|
-
XMP-
|
|
2183
|
+
VCard, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-GAudio, XMP-GImage,
|
|
2184
|
+
XMP-GPano, XMP-GSpherical, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas,
|
|
2185
|
+
XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell,
|
|
2186
|
+
XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji,
|
|
2186
2187
|
XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv,
|
|
2187
2188
|
XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro,
|
|
2188
2189
|
XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx,
|
|
@@ -34,7 +34,7 @@ use Image::ExifTool::Nikon;
|
|
|
34
34
|
use Image::ExifTool::Validate;
|
|
35
35
|
use Image::ExifTool::MacOS;
|
|
36
36
|
|
|
37
|
-
$VERSION = '3.
|
|
37
|
+
$VERSION = '3.09';
|
|
38
38
|
@ISA = qw(Exporter);
|
|
39
39
|
|
|
40
40
|
sub NumbersFirst($$);
|
|
@@ -501,7 +501,9 @@ must be subsequently re-linearized if this is required.
|
|
|
501
501
|
|
|
502
502
|
2) All metadata edits are reversible. While this would normally be
|
|
503
503
|
considered an advantage, it is a potential security problem because old
|
|
504
|
-
information is never actually deleted from the file.
|
|
504
|
+
information is never actually deleted from the file. (However, after
|
|
505
|
+
running ExifTool the old information may be removed permanently using the
|
|
506
|
+
"qpdf" utility with this command: "qpdf --linearize in.pdf out.pdf".)
|
|
505
507
|
},
|
|
506
508
|
DNG => q{
|
|
507
509
|
The main DNG tags are found in the EXIF table. The tables below define only
|
|
@@ -1004,10 +1006,16 @@ TagID: foreach $tagID (@keys) {
|
|
|
1004
1006
|
my (@printConvList, @indexList, $index, $valueConvHash);
|
|
1005
1007
|
if (ref $printConv eq 'ARRAY') {
|
|
1006
1008
|
for ($index=0; $index<@$printConv; ++$index) {
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1009
|
+
if (ref $$printConv[$index] eq 'HASH') {
|
|
1010
|
+
next unless %{$$printConv[$index]};
|
|
1011
|
+
push @printConvList, $$printConv[$index];
|
|
1012
|
+
push @indexList, $index;
|
|
1013
|
+
} elsif ($$printConv[$index] and $$printConv[$index] eq 'REPEAT' and $index) {
|
|
1014
|
+
push @printConvList, $$printConv[$index-1];
|
|
1015
|
+
push @indexList, 'N';
|
|
1016
|
+
} else {
|
|
1017
|
+
next;
|
|
1018
|
+
}
|
|
1011
1019
|
# collapse values with identical PrintConv's
|
|
1012
1020
|
if (@printConvList >= 2 and $printConvList[-1] eq $printConvList[-2]) {
|
|
1013
1021
|
if (ref $indexList[-2]) {
|
|
@@ -1034,11 +1042,11 @@ TagID: foreach $tagID (@keys) {
|
|
|
1034
1042
|
# collapse consecutive number ranges
|
|
1035
1043
|
my ($i, @i, $rngStart);
|
|
1036
1044
|
for ($i=0; $i<@$idx; ++$i) {
|
|
1037
|
-
if ($i < @$idx - 1 and $$idx[$i+1] == $$idx[$i] + 1) {
|
|
1038
|
-
$rngStart = $i unless defined $rngStart;
|
|
1045
|
+
if ($i < @$idx - 1 and ($$idx[$i+1] eq 'N' or $$idx[$i+1] == $$idx[$i] + 1)) {
|
|
1046
|
+
$rngStart = $$idx[$i] unless defined $rngStart;
|
|
1039
1047
|
next;
|
|
1040
1048
|
}
|
|
1041
|
-
push @i, defined($rngStart) ? "$rngStart
|
|
1049
|
+
push @i, (defined($rngStart) ? "$rngStart-" : '') . $$idx[$i];
|
|
1042
1050
|
}
|
|
1043
1051
|
($idx = join ', ', @i) =~ s/(.*),/$1 and/;
|
|
1044
1052
|
} elsif (not $$tagInfo{Relist}) {
|
|
@@ -85,7 +85,7 @@ sub ProcessSerialData($$$);
|
|
|
85
85
|
sub ProcessFilters($$$);
|
|
86
86
|
sub SwapWords($);
|
|
87
87
|
|
|
88
|
-
$VERSION = '3.
|
|
88
|
+
$VERSION = '3.77';
|
|
89
89
|
|
|
90
90
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
|
91
91
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
|
@@ -335,6 +335,7 @@ $VERSION = '3.75';
|
|
|
335
335
|
183.3 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #IB
|
|
336
336
|
183.4 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | C', #47
|
|
337
337
|
183.5 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S', #forum7109 (Sports 014)
|
|
338
|
+
183.6 => 'Sigma 100-400mm f/5-6.3 DG OS HSM', #PH ("| C" ?)
|
|
338
339
|
184 => 'Canon EF 400mm f/2.8L + 2x', #15
|
|
339
340
|
185 => 'Canon EF 600mm f/4L IS', #32
|
|
340
341
|
186 => 'Canon EF 70-200mm f/4L', #9
|
|
@@ -347,7 +348,8 @@ $VERSION = '3.75';
|
|
|
347
348
|
194 => 'Canon EF 80-200mm f/4.5-5.6 USM', #32
|
|
348
349
|
195 => 'Canon EF 35-105mm f/4.5-5.6 USM', #32
|
|
349
350
|
196 => 'Canon EF 75-300mm f/4-5.6 USM', #15/32
|
|
350
|
-
197 => 'Canon EF 75-300mm f/4-5.6 IS USM',
|
|
351
|
+
197 => 'Canon EF 75-300mm f/4-5.6 IS USM or Sigma Lens',
|
|
352
|
+
197.1 => 'Sigma 18-300mm f/3.5-6.3 DC Macro OS HS', #50
|
|
351
353
|
198 => 'Canon EF 50mm f/1.4 USM or Zeiss Lens',
|
|
352
354
|
198.1 => 'Zeiss Otus 55mm f/1.4 ZE', #JR (seen only on Sony camera)
|
|
353
355
|
198.2 => 'Zeiss Otus 85mm f/1.4 ZE', #JR (NC)
|
|
@@ -423,14 +425,15 @@ $VERSION = '3.75';
|
|
|
423
425
|
505 => 'Canon EF 35mm f/2 IS USM', #PH
|
|
424
426
|
506 => 'Canon EF 400mm f/4 DO IS II USM', #42
|
|
425
427
|
507 => 'Canon EF 16-35mm f/4L IS USM', #42
|
|
426
|
-
508 => 'Canon EF 11-24mm f/4L USM', #PH
|
|
428
|
+
508 => 'Canon EF 11-24mm f/4L USM or Tamron Lens', #PH
|
|
429
|
+
508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD', #PH (B023)
|
|
427
430
|
747 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens', #JR
|
|
428
431
|
747.1 => 'Tamron SP 150-600mm F5-6.3 Di VC USD G2', #50
|
|
429
432
|
748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x', #JR (1.4x Mk III)
|
|
430
433
|
750 => 'Canon EF 35mm f/1.4L II USM', #42
|
|
431
434
|
751 => 'Canon EF 16-35mm f/2.8L III USM', #42
|
|
432
435
|
752 => 'Canon EF 24-105mm f/4L IS II USM', #42
|
|
433
|
-
# (STM lenses
|
|
436
|
+
# (STM lenses - 0x10xx)
|
|
434
437
|
4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM',
|
|
435
438
|
4143 => 'Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens',
|
|
436
439
|
4143.1 => 'Tamron 18-200mm F/3.5-6.3 Di III VC', #42
|
|
@@ -448,8 +451,11 @@ $VERSION = '3.75';
|
|
|
448
451
|
4156 => 'Canon EF 50mm f/1.8 STM', #42
|
|
449
452
|
4157 => 'Canon EF-M 18-150mm 1:3.5-6.3 IS STM', #42
|
|
450
453
|
4158 => 'Canon EF-S 18-55mm f/4-5.6 IS STM', #PH
|
|
454
|
+
4160 => 'Canon EF-S 35mm f/2.8 Macro IS STM', #42
|
|
455
|
+
# (Nano USM lenses - 0x90xx)
|
|
451
456
|
36910 => 'Canon EF 70-300mm f/4-5.6 IS II USM', #42
|
|
452
457
|
36912 => 'Canon EF-S 18-135mm f/3.5-5.6 IS USM', #42
|
|
458
|
+
# (CN-E lenses - 0xf0xx)
|
|
453
459
|
61494 => 'Canon CN-E 85mm T1.3 L F', #PH
|
|
454
460
|
65535 => 'n/a',
|
|
455
461
|
);
|
|
@@ -686,6 +692,9 @@ $VERSION = '3.75';
|
|
|
686
692
|
0x4060000 => 'PowerShot SX620 HS',
|
|
687
693
|
0x4070000 => 'EOS M6',
|
|
688
694
|
0x4100000 => 'PowerShot G9 X Mark II',
|
|
695
|
+
0x4150000 => 'PowerShot ELPH 185 / IXUS 185 / IXY 200',
|
|
696
|
+
0x4160000 => 'PowerShot SX430 IS',
|
|
697
|
+
0x4170000 => 'PowerShot SX730 HS',
|
|
689
698
|
0x6040000 => 'PowerShot S100 / Digital IXUS / IXY Digital',
|
|
690
699
|
|
|
691
700
|
# (see http://cweb.canon.jp/e-support/faq/answer/digitalcamera/10447-1.html for PowerShot/IXUS/IXY names)
|
|
@@ -778,7 +787,9 @@ $VERSION = '3.75';
|
|
|
778
787
|
0x80000401 => 'EOS 5DS R',
|
|
779
788
|
0x80000404 => 'EOS Rebel T6 / 1300D / Kiss X80',
|
|
780
789
|
0x80000405 => 'EOS Rebel T7i / 800D / Kiss X9i',
|
|
790
|
+
0x80000406 => 'EOS 6D Mark II', #IB/42
|
|
781
791
|
0x80000408 => 'EOS 77D / 9000D',
|
|
792
|
+
0x80000417 => 'EOS Rebel SL2 / 200D / Kiss X9', #IB/42
|
|
782
793
|
);
|
|
783
794
|
|
|
784
795
|
my %canonQuality = (
|
|
@@ -7438,7 +7449,7 @@ my %ciMaxFocal = (
|
|
|
7438
7449
|
12 => '12 (5DS/5DSR)',
|
|
7439
7450
|
13 => '13 (80D)', #PH
|
|
7440
7451
|
14 => '14 (1300D)', #IB
|
|
7441
|
-
15 => '15 (77D/800D)', #IB
|
|
7452
|
+
15 => '15 (6DmkII/77D/200D/800D)', #IB
|
|
7442
7453
|
},
|
|
7443
7454
|
},
|
|
7444
7455
|
0x3f => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
|
|
@@ -7628,6 +7639,7 @@ my %ciMaxFocal = (
|
|
|
7628
7639
|
0 => 'Disable',
|
|
7629
7640
|
1 => 'Adjust all by the same amount',
|
|
7630
7641
|
2 => 'Adjust by lens',
|
|
7642
|
+
# 3 - seen this for EOS 77D, which doesn't have an AF Micro Adjust feature - PH
|
|
7631
7643
|
},
|
|
7632
7644
|
},
|
|
7633
7645
|
2 => {
|