exiftool_vendored 12.55.0 → 12.56.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 +19 -1
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +19 -19
- data/bin/arg_files/xmp2exif.args +4 -1
- data/bin/exiftool +25 -25
- data/bin/fmt_files/kml.fmt +3 -0
- data/bin/fmt_files/kml_track.fmt +3 -0
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
- data/bin/lib/Image/ExifTool/Canon.pm +8 -2
- data/bin/lib/Image/ExifTool/Exif.pm +31 -2
- data/bin/lib/Image/ExifTool/FlashPix.pm +69 -8
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
- data/bin/lib/Image/ExifTool/InfiRay.pm +227 -0
- data/bin/lib/Image/ExifTool/JPEG.pm +40 -6
- data/bin/lib/Image/ExifTool/Nikon.pm +158 -380
- data/bin/lib/Image/ExifTool/OpenEXR.pm +32 -15
- data/bin/lib/Image/ExifTool/PNG.pm +80 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +23 -14
- data/bin/lib/Image/ExifTool/Real.pm +2 -2
- data/bin/lib/Image/ExifTool/Sony.pm +5 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4536 -4519
- data/bin/lib/Image/ExifTool/TagNames.pod +216 -14
- data/bin/lib/Image/ExifTool/VCard.pm +19 -5
- data/bin/lib/Image/ExifTool.pm +55 -14
- data/bin/lib/Image/ExifTool.pod +51 -50
- data/bin/perl-Image-ExifTool.spec +18 -18
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 868b41884f8ad70975ed61e8b20a68ed6528884fddb24c3cac299e10efdb7eb5
|
4
|
+
data.tar.gz: 62539abf29b08ec70f5846bd3e290fd475fc98a043f80a5515520fbcecd2bbb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc4ed320dc2e6455b3b71a5b41080f0d7d97e5f67ed3a7ee7acc61528c18d6f4daa353724a41a2c26eec0bc9a137a2f5221f7adb536d12d813187264f7cb2ec1
|
7
|
+
data.tar.gz: 21594ef130d424275c02a3cc27f87064df0b6fa49245e6469a7c767fbf67821436ee22d44a5db2bbaff6909e976cc8a69498892f6a4b77e58a40c29bbe78e5c1
|
data/bin/Changes
CHANGED
@@ -7,6 +7,24 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 12.50. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Feb. 9, 2023 - Version 12.56
|
11
|
+
|
12
|
+
- Added support for VNT (both Scene7 Vignette and V-Note document) files
|
13
|
+
- Added read support for InfiRay APP2 metadata (thanks Marcos Del Sol Vives)
|
14
|
+
- Added some new Sony LensType values (thanks Jos Roost and Francois Piette)
|
15
|
+
- Added a new FujiFilm VideoRecordingMode value (thanks Greybeard)
|
16
|
+
- Added two new Canon LensTypes and CanonModelIDs (thanks Norbert Wasser)
|
17
|
+
- Added ability to extract semantic images from Apple ProRaw DNG files
|
18
|
+
- Added read support for the PNG cICP chunk
|
19
|
+
- Decode more Nikon tags (thanks Warren Hatch)
|
20
|
+
- Extract PreviewImage from Insta360 trailer record 0x200
|
21
|
+
- Extract EmbeddedImageRectangle and some other new tags from VNT files
|
22
|
+
- Minor improvement to arg_files/xmp2exif.args (thanks StarGeek)
|
23
|
+
- Enhanced -ee option to extract metadata from all frames of a multipart EXR
|
24
|
+
image
|
25
|
+
- Removed EXR Layout tag and incorporated into new Flags tag
|
26
|
+
- Patched possible hang problem when reading corrupted .rm audio files
|
27
|
+
|
10
28
|
Jan. 17, 2023 - Version 12.55
|
11
29
|
|
12
30
|
- Added support for geotagging from FlightAware KML files
|
@@ -14,7 +32,7 @@ Jan. 17, 2023 - Version 12.55
|
|
14
32
|
- Decode a few new Nikon tags (thanks Warren Hatch)
|
15
33
|
- Decode a new Samsung HEIC tag
|
16
34
|
- Decode FujiFilm RollAngle
|
17
|
-
- Fixed bug where FlatName property wasn't working properly for some
|
35
|
+
- Fixed bug where the FlatName property wasn't working properly for some
|
18
36
|
user-defined structure tags
|
19
37
|
|
20
38
|
Jan. 6, 2023 - Version 12.54
|
data/bin/MANIFEST
CHANGED
@@ -90,6 +90,7 @@ html/TagNames/ID3.html
|
|
90
90
|
html/TagNames/IPTC.html
|
91
91
|
html/TagNames/ISO.html
|
92
92
|
html/TagNames/ITC.html
|
93
|
+
html/TagNames/InfiRay.html
|
93
94
|
html/TagNames/JFIF.html
|
94
95
|
html/TagNames/JPEG.html
|
95
96
|
html/TagNames/JSON.html
|
@@ -301,6 +302,7 @@ lib/Image/ExifTool/ISO.pm
|
|
301
302
|
lib/Image/ExifTool/ITC.pm
|
302
303
|
lib/Image/ExifTool/Import.pm
|
303
304
|
lib/Image/ExifTool/InDesign.pm
|
305
|
+
lib/Image/ExifTool/InfiRay.pm
|
304
306
|
lib/Image/ExifTool/JPEG.pm
|
305
307
|
lib/Image/ExifTool/JPEGDigest.pm
|
306
308
|
lib/Image/ExifTool/JSON.pm
|
@@ -616,6 +618,8 @@ t/InDesign.t
|
|
616
618
|
t/InDesign_2.out
|
617
619
|
t/InDesign_3.out
|
618
620
|
t/InDesign_4.out
|
621
|
+
t/InfiRay.t
|
622
|
+
t/InfiRay_2.out
|
619
623
|
t/JSON.t
|
620
624
|
t/JSON_2.out
|
621
625
|
t/JVC.t
|
@@ -1034,6 +1038,7 @@ t/images/IPTC.jpg
|
|
1034
1038
|
t/images/ISO.iso
|
1035
1039
|
t/images/ITC.itc
|
1036
1040
|
t/images/InDesign.indd
|
1041
|
+
t/images/InfiRay.jpg
|
1037
1042
|
t/images/JSON.json
|
1038
1043
|
t/images/JVC.jpg
|
1039
1044
|
t/images/JVC2.jpg
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -39,23 +39,23 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
39
39
|
CHM r | FPF r | MKA r | PFA r | TTF r
|
40
40
|
COS r | FPX r | MKS r | PFB r | TXT r
|
41
41
|
CR2 r/w | GIF r/w | MKV r | PFM r | VCF r
|
42
|
-
CR3 r/w | GPR r/w | MNG r/w | PGF r |
|
43
|
-
CRM r/w | GZ r | MOBI r | PGM r/w |
|
44
|
-
CRW r/w | HDP r/w | MODD r | PLIST r |
|
45
|
-
CS1 r/w | HDR r | MOI r | PICT r |
|
46
|
-
CSV r | HEIC r/w | MOS r/w | PMP r |
|
47
|
-
CUR r | HEIF r/w | MOV r/w | PNG r/w |
|
48
|
-
CZI r | HTML r | MP3 r | PPM r/w |
|
49
|
-
DCM r | ICC r/w/c | MP4 r/w | PPT r |
|
50
|
-
DCP r/w | ICO r | MPC r | PPTX r |
|
51
|
-
DCR r | ICS r | MPG r | PS r/w |
|
52
|
-
DFONT r | IDML r | MPO r/w | PSB r/w |
|
53
|
-
DIVX r | IIQ r/w | MQV r/w | PSD r/w |
|
54
|
-
DJVU r | IND r/w | MRC r | PSP r |
|
55
|
-
DLL r | INSP r/w | MRW r/w | QTIF r/w |
|
56
|
-
DNG r/w | INSV r | MXF r | R3D r |
|
57
|
-
DOC r | INX r | NEF r/w | RA r |
|
58
|
-
DOCX r | ISO r | NKSC r/w | RAF r/w |
|
42
|
+
CR3 r/w | GPR r/w | MNG r/w | PGF r | VNT r
|
43
|
+
CRM r/w | GZ r | MOBI r | PGM r/w | VRD r/w/c
|
44
|
+
CRW r/w | HDP r/w | MODD r | PLIST r | VSD r
|
45
|
+
CS1 r/w | HDR r | MOI r | PICT r | WAV r
|
46
|
+
CSV r | HEIC r/w | MOS r/w | PMP r | WDP r/w
|
47
|
+
CUR r | HEIF r/w | MOV r/w | PNG r/w | WEBP r/w
|
48
|
+
CZI r | HTML r | MP3 r | PPM r/w | WEBM r
|
49
|
+
DCM r | ICC r/w/c | MP4 r/w | PPT r | WMA r
|
50
|
+
DCP r/w | ICO r | MPC r | PPTX r | WMV r
|
51
|
+
DCR r | ICS r | MPG r | PS r/w | WTV r
|
52
|
+
DFONT r | IDML r | MPO r/w | PSB r/w | WV r
|
53
|
+
DIVX r | IIQ r/w | MQV r/w | PSD r/w | X3F r/w
|
54
|
+
DJVU r | IND r/w | MRC r | PSP r | XCF r
|
55
|
+
DLL r | INSP r/w | MRW r/w | QTIF r/w | XLS r
|
56
|
+
DNG r/w | INSV r | MXF r | R3D r | XLSX r
|
57
|
+
DOC r | INX r | NEF r/w | RA r | XMP r/w/c
|
58
|
+
DOCX r | ISO r | NKSC r/w | RAF r/w | ZIP r
|
59
59
|
|
60
60
|
Meta Information
|
61
61
|
----------------------+----------------------+---------------------
|
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
|
|
107
107
|
terminal window to extract and run ExifTool:
|
108
108
|
|
109
109
|
cd ~/Desktop
|
110
|
-
gzip -dc Image-ExifTool-12.
|
111
|
-
cd Image-ExifTool-12.
|
110
|
+
gzip -dc Image-ExifTool-12.56.tar.gz | tar -xf -
|
111
|
+
cd Image-ExifTool-12.56
|
112
112
|
./exiftool t/images/ExifTool.jpg
|
113
113
|
|
114
114
|
Note: These commands extract meta information from one of the test images.
|
data/bin/arg_files/xmp2exif.args
CHANGED
@@ -15,6 +15,8 @@
|
|
15
15
|
# 2018/05/07 - PH Added support for GPSDestXxxRef tags
|
16
16
|
# 2021/09/30 - PH Removed erroneous "-" when copying CreatorTool
|
17
17
|
# 2022/03/31 - PH IPTC Photometadata Mapping Guidelines 2202.1 update
|
18
|
+
# 2023/01/30 - PH Also write Composite:SubSecDateTimeOriginal from
|
19
|
+
# XMP-exif:DateTimeOriginal
|
18
20
|
#
|
19
21
|
# References: http://www.metadataworkinggroup.org/specs/
|
20
22
|
# https://iptc.org/std/photometadata/documentation/mappingguidelines/
|
@@ -34,8 +36,9 @@
|
|
34
36
|
-EXIF:all < XMP-tiff:all
|
35
37
|
-EXIF:ImageDescription < XMP-dc:Description
|
36
38
|
-EXIF:DateTimeOriginal < XMP-photoshop:DateCreated
|
37
|
-
# the following
|
39
|
+
# the following SubSec tags also write/delete the corresponding EXIF
|
38
40
|
# SubSecTime and OffsetTime tags as appropriate
|
41
|
+
-Composite:SubSecDateTimeOriginal < XMP-exif:DateTimeOriginal
|
39
42
|
-Composite:SubSecDateTimeOriginal < XMP-photoshop:DateCreated
|
40
43
|
-Composite:SubSecCreateDate < XMP-xmp:CreateDate
|
41
44
|
-Composite:SubSecModifyDate < XMP-xmp:ModifyDate
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '12.
|
14
|
+
my $version = '12.56';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
BEGIN {
|
@@ -725,7 +725,7 @@ for (;;) {
|
|
725
725
|
}
|
726
726
|
if ($verbose > 1) {
|
727
727
|
print "Include directories:\n";
|
728
|
-
print " $_\n" foreach @INC;
|
728
|
+
ref $_ or print " $_\n" foreach @INC;
|
729
729
|
}
|
730
730
|
} else {
|
731
731
|
print "$version$str$Image::ExifTool::RELEASE\n";
|
@@ -4558,23 +4558,23 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
4558
4558
|
CHM r | FPF r | MKA r | PFA r | TTF r
|
4559
4559
|
COS r | FPX r | MKS r | PFB r | TXT r
|
4560
4560
|
CR2 r/w | GIF r/w | MKV r | PFM r | VCF r
|
4561
|
-
CR3 r/w | GPR r/w | MNG r/w | PGF r |
|
4562
|
-
CRM r/w | GZ r | MOBI r | PGM r/w |
|
4563
|
-
CRW r/w | HDP r/w | MODD r | PLIST r |
|
4564
|
-
CS1 r/w | HDR r | MOI r | PICT r |
|
4565
|
-
CSV r | HEIC r/w | MOS r/w | PMP r |
|
4566
|
-
CUR r | HEIF r/w | MOV r/w | PNG r/w |
|
4567
|
-
CZI r | HTML r | MP3 r | PPM r/w |
|
4568
|
-
DCM r | ICC r/w/c | MP4 r/w | PPT r |
|
4569
|
-
DCP r/w | ICO r | MPC r | PPTX r |
|
4570
|
-
DCR r | ICS r | MPG r | PS r/w |
|
4571
|
-
DFONT r | IDML r | MPO r/w | PSB r/w |
|
4572
|
-
DIVX r | IIQ r/w | MQV r/w | PSD r/w |
|
4573
|
-
DJVU r | IND r/w | MRC r | PSP r |
|
4574
|
-
DLL r | INSP r/w | MRW r/w | QTIF r/w |
|
4575
|
-
DNG r/w | INSV r | MXF r | R3D r |
|
4576
|
-
DOC r | INX r | NEF r/w | RA r |
|
4577
|
-
DOCX r | ISO r | NKSC r/w | RAF r/w |
|
4561
|
+
CR3 r/w | GPR r/w | MNG r/w | PGF r | VNT r
|
4562
|
+
CRM r/w | GZ r | MOBI r | PGM r/w | VRD r/w/c
|
4563
|
+
CRW r/w | HDP r/w | MODD r | PLIST r | VSD r
|
4564
|
+
CS1 r/w | HDR r | MOI r | PICT r | WAV r
|
4565
|
+
CSV r | HEIC r/w | MOS r/w | PMP r | WDP r/w
|
4566
|
+
CUR r | HEIF r/w | MOV r/w | PNG r/w | WEBP r/w
|
4567
|
+
CZI r | HTML r | MP3 r | PPM r/w | WEBM r
|
4568
|
+
DCM r | ICC r/w/c | MP4 r/w | PPT r | WMA r
|
4569
|
+
DCP r/w | ICO r | MPC r | PPTX r | WMV r
|
4570
|
+
DCR r | ICS r | MPG r | PS r/w | WTV r
|
4571
|
+
DFONT r | IDML r | MPO r/w | PSB r/w | WV r
|
4572
|
+
DIVX r | IIQ r/w | MQV r/w | PSD r/w | X3F r/w
|
4573
|
+
DJVU r | IND r/w | MRC r | PSP r | XCF r
|
4574
|
+
DLL r | INSP r/w | MRW r/w | QTIF r/w | XLS r
|
4575
|
+
DNG r/w | INSV r | MXF r | R3D r | XLSX r
|
4576
|
+
DOC r | INX r | NEF r/w | RA r | XMP r/w/c
|
4577
|
+
DOCX r | ISO r | NKSC r/w | RAF r/w | ZIP r
|
4578
4578
|
|
4579
4579
|
Meta Information
|
4580
4580
|
----------------------+----------------------+---------------------
|
@@ -5206,9 +5206,9 @@ Note that this option is fundamentally different than all other output
|
|
5206
5206
|
format options because it requires information from all input files to be
|
5207
5207
|
buffered in memory before the output is written. This may result in
|
5208
5208
|
excessive memory usage when processing a very large number of files with a
|
5209
|
-
single command. Also, it makes this option incompatible with the B<-w>
|
5210
|
-
|
5211
|
-
either use the JSON (B<-j>) or XML (B<-X>) output format, or use B<-p> to
|
5209
|
+
single command. Also, it makes this option incompatible with the B<-w> and
|
5210
|
+
B<-W> options. When processing a large number of files, it is recommended
|
5211
|
+
to either use the JSON (B<-j>) or XML (B<-X>) output format, or use B<-p> to
|
5212
5212
|
generate a fixed-column CSV file instead of using the B<-csv> option.
|
5213
5213
|
|
5214
5214
|
=item B<-csvDelim> I<STR>
|
@@ -5477,7 +5477,7 @@ with this command:
|
|
5477
5477
|
|
5478
5478
|
produces output like this:
|
5479
5479
|
|
5480
|
-
-- Generated by ExifTool 12.
|
5480
|
+
-- Generated by ExifTool 12.56 --
|
5481
5481
|
File: a.jpg - 2003:10:31 15:44:19
|
5482
5482
|
(f/5.6, 1/60s, ISO 100)
|
5483
5483
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5981,8 +5981,8 @@ of the file processing. Both functions have a return value of 1. Case is
|
|
5981
5981
|
significant for function names.
|
5982
5982
|
|
5983
5983
|
End() - end processing after this file
|
5984
|
-
EndDir() - end processing of files in
|
5985
|
-
compatible with
|
5984
|
+
EndDir() - end processing of files in the current directory
|
5985
|
+
after this file (not compatible with -fileOrder)
|
5986
5986
|
|
5987
5987
|
Notes:
|
5988
5988
|
|
data/bin/fmt_files/kml.fmt
CHANGED
@@ -24,6 +24,9 @@
|
|
24
24
|
# extension is used.
|
25
25
|
# 5) The -fileOrder option may be used to control the order of the
|
26
26
|
# generated placemarks when processing multiple files.
|
27
|
+
# 6) The "0" in the coordinates line may be changed to "$gpsaltitude#"
|
28
|
+
# and the altitudeMode may be changed to "absolute" to store
|
29
|
+
# altitude information if it exists in the track log.
|
27
30
|
#------------------------------------------------------------------------------
|
28
31
|
#[HEAD]<?xml version="1.0" encoding="UTF-8"?>
|
29
32
|
#[HEAD]<kml xmlns="http://earth.google.com/kml/2.0">
|
data/bin/fmt_files/kml_track.fmt
CHANGED
@@ -21,6 +21,9 @@
|
|
21
21
|
# 2) The -fileOrder option may be used to control the order of the
|
22
22
|
# waypoints when processing multiple still-image files, or the
|
23
23
|
# order of the tracks when processing multiple video files.
|
24
|
+
# 3) The "0" in the BODY line below may be changed to "$gpsaltitude#"
|
25
|
+
# and the altitudeMode may be changed to "absolute" to store
|
26
|
+
# altitude information if it exists in the track log.
|
24
27
|
#------------------------------------------------------------------------------
|
25
28
|
#[HEAD]<?xml version="1.0" encoding="UTF-8"?>
|
26
29
|
#[HEAD]<kml xmlns="http://earth.google.com/kml/2.0">
|
@@ -314,10 +314,12 @@ C<integer> is a string of digits (possibly beginning with a '+' or '-'),
|
|
314
314
|
C<real> is a floating point number, C<rational> is entered as a floating
|
315
315
|
point number but stored as two C<integer> strings separated by a '/'
|
316
316
|
character, C<date> is a date/time string entered in the format "YYYY:mm:dd
|
317
|
-
HH:MM:SS[.ss][+/-HH:MM]"
|
318
|
-
|
319
|
-
|
320
|
-
|
317
|
+
HH:MM:SS[.ss][+/-HH:MM]" but some partial date/time formats are also
|
318
|
+
accepted (see L<https://exiftool.org/faq.html#Q5>), C<boolean> is either
|
319
|
+
"True" or "False" (but "true" and "false" may be written as a ValueConv
|
320
|
+
value for compatibility with non-conforming applications), C<struct>
|
321
|
+
indicates a structured tag, and C<lang-alt> is a tag that supports alternate
|
322
|
+
languages.
|
321
323
|
|
322
324
|
When reading, C<struct> tags are extracted only if the L<Struct|../ExifTool.html#Struct> (-struct)
|
323
325
|
option is used. Otherwise the corresponding I<Flattened> tags, indicated by
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.65';
|
92
92
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
@@ -621,8 +621,10 @@ $VERSION = '4.64';
|
|
621
621
|
'61182.41' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
|
622
622
|
'61182.42' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
|
623
623
|
'61182.43' => 'Canon RF 135mm F1.8 L IS USM', #42
|
624
|
+
'61182.44' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
625
|
+
'61182.45' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
|
624
626
|
# we need the RFLensType values for the following...
|
625
|
-
'61182.
|
627
|
+
'61182.46' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
|
626
628
|
65535 => 'n/a',
|
627
629
|
);
|
628
630
|
|
@@ -983,7 +985,9 @@ $VERSION = '4.64';
|
|
983
985
|
0x80000465 => 'EOS R10', #42
|
984
986
|
0x80000467 => 'PowerShot ZOOM',
|
985
987
|
0x80000468 => 'EOS M50 Mark II / Kiss M2', #IB
|
988
|
+
0x80000480 => 'EOS R50', #42
|
986
989
|
0x80000481 => 'EOS R6 Mark II', #42
|
990
|
+
0x80000487 => 'EOS R8', #42
|
987
991
|
0x80000520 => 'EOS D2000C', #IB
|
988
992
|
0x80000560 => 'EOS D6000C', #PH (guess)
|
989
993
|
);
|
@@ -6840,6 +6844,8 @@ my %ciMaxFocal = (
|
|
6840
6844
|
300 => 'Canon RF 1200mm F8L IS USM + RF2x', #42
|
6841
6845
|
302 => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
|
6842
6846
|
303 => 'Canon RF 135mm F1.8 L IS USM', #42
|
6847
|
+
304 => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
6848
|
+
305 => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
|
6843
6849
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
6844
6850
|
},
|
6845
6851
|
},
|
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
56
56
|
use Image::ExifTool qw(:DataAccess :Utils);
|
57
57
|
use Image::ExifTool::MakerNotes;
|
58
58
|
|
59
|
-
$VERSION = '4.
|
59
|
+
$VERSION = '4.43';
|
60
60
|
|
61
61
|
sub ProcessExif($$$);
|
62
62
|
sub WriteExif($$$);
|
@@ -578,6 +578,13 @@ my %opcodeInfo = (
|
|
578
578
|
ValueConv => '$val=join(" ",unpack("N*",pack("V*",split(" ",$val))));\$val',
|
579
579
|
ByteOrder => 'LittleEndian',
|
580
580
|
},
|
581
|
+
{
|
582
|
+
Condition => '$$self{Compression} and $$self{Compression} eq "34892"', # DNG Lossy JPEG
|
583
|
+
Name => 'OtherImageStart',
|
584
|
+
IsOffset => 1,
|
585
|
+
OffsetPair => 0x117, # point to associated byte counts
|
586
|
+
DataTag => 'OtherImage',
|
587
|
+
},
|
581
588
|
{
|
582
589
|
# (APP1 IFD2 is for Leica JPEG preview)
|
583
590
|
Condition => q[
|
@@ -664,6 +671,12 @@ my %opcodeInfo = (
|
|
664
671
|
ValueConv => '$val=join(" ",unpack("N*",pack("V*",split(" ",$val))));\$val',
|
665
672
|
ByteOrder => 'LittleEndian',
|
666
673
|
},
|
674
|
+
{
|
675
|
+
Condition => '$$self{Compression} and $$self{Compression} eq "34892"', # DNG Lossy JPEG
|
676
|
+
Name => 'OtherImageLength',
|
677
|
+
OffsetPair => 0x111, # point to associated offset
|
678
|
+
DataTag => 'OtherImage',
|
679
|
+
},
|
667
680
|
{
|
668
681
|
# (APP1 IFD2 is for Leica JPEG preview)
|
669
682
|
Condition => q[
|
@@ -4706,12 +4719,28 @@ my %subSecConv = (
|
|
4706
4719
|
0 => 'OtherImageStart',
|
4707
4720
|
1 => 'OtherImageLength',
|
4708
4721
|
},
|
4722
|
+
Desire => {
|
4723
|
+
2 => 'OtherImageStart (1)',
|
4724
|
+
3 => 'OtherImageLength (1)',
|
4725
|
+
},
|
4709
4726
|
Notes => q{
|
4710
4727
|
this tag is writable, and may be used to update existing embedded images,
|
4711
4728
|
but not create or delete them
|
4712
4729
|
},
|
4713
|
-
# retrieve
|
4730
|
+
# retrieve all other images
|
4714
4731
|
RawConv => q{
|
4732
|
+
if ($val[2] and $val[3]) {
|
4733
|
+
my $i = 1;
|
4734
|
+
for (;;) {
|
4735
|
+
my %val = ( 0 => $$val{2}, 1 => $$val{3} );
|
4736
|
+
$self->FoundTag($tagInfo, \%val);
|
4737
|
+
++$i;
|
4738
|
+
$$val{2} = "$$val{0} ($i)";
|
4739
|
+
last unless defined $$self{VALUE}{$$val{2}};
|
4740
|
+
$$val{3} = "$$val{1} ($i)";
|
4741
|
+
last unless defined $$self{VALUE}{$$val{3}};
|
4742
|
+
}
|
4743
|
+
}
|
4715
4744
|
@grps = $self->GetGroup($$val{0});
|
4716
4745
|
Image::ExifTool::Exif::ExtractImage($self,$val[0],$val[1],"OtherImage");
|
4717
4746
|
},
|
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
21
|
use Image::ExifTool::Exif;
|
22
22
|
use Image::ExifTool::ASF; # for GetGUID()
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.42';
|
25
25
|
|
26
26
|
sub ProcessFPX($$);
|
27
27
|
sub ProcessFPXR($$$);
|
@@ -483,10 +483,18 @@ my %fpxFileType = (
|
|
483
483
|
},
|
484
484
|
IeImg => {
|
485
485
|
Name => 'EmbeddedImage',
|
486
|
-
Notes =>
|
486
|
+
Notes => q{
|
487
|
+
embedded images in Scene7 vignette VNT files. EmbeddedImageRectangle is
|
488
|
+
generated for applicable images, and may be associated with the
|
489
|
+
corresponding EmbeddedImage via the family 3 group name
|
490
|
+
},
|
487
491
|
Groups => { 2 => 'Preview' },
|
488
492
|
Binary => 1,
|
489
493
|
},
|
494
|
+
IeImg_rect => { # (not a real tag -- extracted from Contents of VNT file)
|
495
|
+
Name => 'EmbeddedImageRectangle',
|
496
|
+
Hidden => 1,
|
497
|
+
},
|
490
498
|
);
|
491
499
|
|
492
500
|
# Summary Information properties
|
@@ -1059,6 +1067,7 @@ my %fpxFileType = (
|
|
1059
1067
|
%Image::ExifTool::FlashPix::Contents = (
|
1060
1068
|
PROCESS_PROC => \&ProcessProperties,
|
1061
1069
|
GROUPS => { 2 => 'Image' },
|
1070
|
+
OriginalFileName => { Name => 'OriginalFileName', Hidden => 1 }, # (not a real tag -- extracted from Contents of VNT file)
|
1062
1071
|
);
|
1063
1072
|
|
1064
1073
|
# CompObj tags
|
@@ -1537,11 +1546,43 @@ sub ProcessContents($$$)
|
|
1537
1546
|
my $isFLA;
|
1538
1547
|
|
1539
1548
|
# all of my FLA samples contain "Contents" data, and no other FPX-like samples have
|
1540
|
-
# this, but check the data for a familiar pattern to be
|
1541
|
-
# Contents of all of my FLA samples start with two bytes
|
1542
|
-
# then 0x01) followed by a number of zero bytes
|
1543
|
-
# somehow to the value of the first byte),
|
1544
|
-
|
1549
|
+
# this (except Scene7 VNT viles), but check the data for a familiar pattern to be
|
1550
|
+
# sure this is FLA: the Contents of all of my FLA samples start with two bytes
|
1551
|
+
# (0x29,0x38,0x3f,0x43 or 0x47, then 0x01) followed by a number of zero bytes
|
1552
|
+
# (from 0x18 to 0x26 of them, related somehow to the value of the first byte),
|
1553
|
+
# followed by the string "DocumentPage"
|
1554
|
+
if ($$dataPt =~ /^..\0+\xff\xff\x01\0\x0d\0CDocumentPage/s) {
|
1555
|
+
$isFLA = 1;
|
1556
|
+
} elsif ($$dataPt =~ /^\0{4}.(.{1,255})\x60\xa1\x3f\x22\0{5}(.{8})/sg) {
|
1557
|
+
# this looks like a VNT file
|
1558
|
+
$et->OverrideFileType('VNT', 'image/x-vignette');
|
1559
|
+
# hack to set proper file description (extension is the same for V-Note files)
|
1560
|
+
$Image::ExifTool::static_vars{OverrideFileDescription}{VNT} = 'Scene7 Vignette',
|
1561
|
+
my $name = $1;
|
1562
|
+
my ($w, $h) = unpack('V2',$2);
|
1563
|
+
$et->FoundTag(ImageWidth => $w);
|
1564
|
+
$et->FoundTag(ImageHeight => $h);
|
1565
|
+
$et->HandleTag($tagTablePtr, OriginalFileName => $name);
|
1566
|
+
if ($$dataPt =~ /\G\x01\0{4}(.{12})/sg) {
|
1567
|
+
# (first 4 bytes seem to be number of objects, next 4 bytes are zero, then ICC size)
|
1568
|
+
my $size = unpack('x8V', $1);
|
1569
|
+
# (not useful?) $et->FoundTag(NumObjects => $num);
|
1570
|
+
if ($size and pos($$dataPt) + $size < length($$dataPt)) {
|
1571
|
+
my $dat = substr($$dataPt, pos($$dataPt), $size);
|
1572
|
+
$et->FoundTag(ICC_Profile => $dat);
|
1573
|
+
pos($$dataPt) += $size;
|
1574
|
+
}
|
1575
|
+
$$et{IeImg_lkup} = { };
|
1576
|
+
# - the byte after TargetRole1 is 0x0d or 0x11 for separate images in my samples,
|
1577
|
+
# and 0x1c or 0x23 for inline masks
|
1578
|
+
while ($$dataPt =~ /\x0bTargetRole1.\x80\0\0\x01.{4}(.{24})/sg) {
|
1579
|
+
my ($index, @coords) = unpack('Vx4V4', $1);
|
1580
|
+
next if $index == 0xffffffff;
|
1581
|
+
$$et{IeImg_lkup}{$index} and $et->WarnOnce('Duplicate image index');
|
1582
|
+
$$et{IeImg_lkup}{$index} = "@coords";
|
1583
|
+
}
|
1584
|
+
}
|
1585
|
+
}
|
1545
1586
|
|
1546
1587
|
# do a brute-force scan of the "Contents" for UTF-16 XMP
|
1547
1588
|
# (this may always be little-endian, but allow for either endianness)
|
@@ -2337,8 +2378,24 @@ sub ProcessFPX($$)
|
|
2337
2378
|
);
|
2338
2379
|
my $subTablePtr = GetTagTable($$subdir{TagTable});
|
2339
2380
|
$et->ProcessDirectory(\%dirInfo, $subTablePtr, $$subdir{ProcessProc});
|
2381
|
+
} elsif (defined $size and $size > length($buff)) {
|
2382
|
+
$et->WarnOnce('Truncated object');
|
2340
2383
|
} else {
|
2341
|
-
$
|
2384
|
+
$buff = substr($buff, 0, $size) if defined $size and $size < length($buff);
|
2385
|
+
if ($tag =~ /^IeImg_0*(\d+)$/) {
|
2386
|
+
# set document number for embedded images and their positions (if available, VNT files)
|
2387
|
+
my $num = $1;
|
2388
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
2389
|
+
$et->FoundTag($tagInfo, $buff);
|
2390
|
+
if ($$et{IeImg_lkup} and $$et{IeImg_lkup}{$num}) {
|
2391
|
+
# save position of this image
|
2392
|
+
$et->HandleTag($tagTablePtr, IeImg_rect => $$et{IeImg_lkup}{$num});
|
2393
|
+
delete $$et{IeImg_lkup}{$num};
|
2394
|
+
}
|
2395
|
+
delete $$et{DOC_NUM};
|
2396
|
+
} else {
|
2397
|
+
$et->FoundTag($tagInfo, $buff);
|
2398
|
+
}
|
2342
2399
|
}
|
2343
2400
|
# save object index number for all found tags
|
2344
2401
|
my $num2 = $$et{NUM_FOUND};
|
@@ -2395,6 +2452,10 @@ sub ProcessFPX($$)
|
|
2395
2452
|
# process Word document table
|
2396
2453
|
ProcessDocumentTable($et);
|
2397
2454
|
|
2455
|
+
if ($$et{IeImg_lkup} and %{$$et{IeImg_lkup}}) {
|
2456
|
+
$et->Warn('Image positions exist without corresponding images');
|
2457
|
+
}
|
2458
|
+
|
2398
2459
|
return 1;
|
2399
2460
|
}
|
2400
2461
|
|
@@ -31,7 +31,7 @@ use vars qw($VERSION);
|
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
32
32
|
use Image::ExifTool::Exif;
|
33
33
|
|
34
|
-
$VERSION = '1.
|
34
|
+
$VERSION = '1.87';
|
35
35
|
|
36
36
|
sub ProcessFujiDir($$$);
|
37
37
|
sub ProcessFaceRec($$$);
|
@@ -808,6 +808,7 @@ my %faceCategories = (
|
|
808
808
|
0x00 => 'Normal',
|
809
809
|
0x10 => 'F-log',
|
810
810
|
0x20 => 'HLG',
|
811
|
+
0x30 => 'F-log2', #forum14384
|
811
812
|
},
|
812
813
|
},
|
813
814
|
0x3804 => { #forum10037
|