exiftool_vendored 12.54.0 → 12.56.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +34 -4
- 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 +28 -28
- data/bin/fmt_files/kml.fmt +3 -0
- data/bin/fmt_files/kml_track.fmt +6 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
- 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 +3 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -4
- data/bin/lib/Image/ExifTool/InfiRay.pm +227 -0
- data/bin/lib/Image/ExifTool/JPEG.pm +40 -6
- data/bin/lib/Image/ExifTool/Matroska.pm +4 -4
- data/bin/lib/Image/ExifTool/Nikon.pm +187 -384
- data/bin/lib/Image/ExifTool/OpenEXR.pm +32 -15
- data/bin/lib/Image/ExifTool/PNG.pm +80 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +19 -4
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +127 -39
- data/bin/lib/Image/ExifTool/README +3 -0
- 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 +4544 -4525
- data/bin/lib/Image/ExifTool/TagNames.pod +229 -21
- data/bin/lib/Image/ExifTool/VCard.pm +19 -5
- data/bin/lib/Image/ExifTool.pm +56 -15
- 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,13 +7,43 @@ 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
|
+
|
28
|
+
Jan. 17, 2023 - Version 12.55
|
29
|
+
|
30
|
+
- Added support for geotagging from FlightAware KML files
|
31
|
+
- Decode two more types of timed GPS from MOV/MP4 videos (66 types now)
|
32
|
+
- Decode a few new Nikon tags (thanks Warren Hatch)
|
33
|
+
- Decode a new Samsung HEIC tag
|
34
|
+
- Decode FujiFilm RollAngle
|
35
|
+
- Fixed bug where the FlatName property wasn't working properly for some
|
36
|
+
user-defined structure tags
|
37
|
+
|
10
38
|
Jan. 6, 2023 - Version 12.54
|
11
39
|
|
12
|
-
- Increased precision of Sony FocusDistance2 conversion
|
13
40
|
- Decode a number of new Apple tags (thanks Frank Rupprecht)
|
14
|
-
-
|
15
|
-
|
16
|
-
|
41
|
+
- Increased precision of Sony FocusDistance2 conversion
|
42
|
+
- Fixed problem where GPSAltitude wasn't being set when geotagging from KML
|
43
|
+
files
|
44
|
+
- Fixed bug writing HEIC/AVIF files which have a zero-sized mdat (ie. media
|
45
|
+
data extends to end of file) which could cause an incorrect mdat size to be
|
46
|
+
written
|
17
47
|
|
18
48
|
Jan. 4, 2023 - Version 12.53
|
19
49
|
|
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
|
|
@@ -6326,9 +6326,9 @@ seconds behind GPS:
|
|
6326
6326
|
|
6327
6327
|
exiftool -geosync=+1:20 -geotag a.log DIR
|
6328
6328
|
|
6329
|
-
Advanced C<Geosync> features allow a linear time drift correction
|
6330
|
-
synchronization from previously geotagged images. See "geotag.html" in
|
6331
|
-
full ExifTool distribution for more information.
|
6329
|
+
Advanced C<Geosync> features allow a piecewise linear time drift correction
|
6330
|
+
and synchronization from previously geotagged images. See "geotag.html" in
|
6331
|
+
the full ExifTool distribution for more information.
|
6332
6332
|
|
6333
6333
|
Multiple B<-geotag> options may be used to concatenate GPS track log data.
|
6334
6334
|
Also, a single B<-geotag> option may be used to load multiple track log
|
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
@@ -1,5 +1,5 @@
|
|
1
1
|
#------------------------------------------------------------------------------
|
2
|
-
# File:
|
2
|
+
# File: kml_track.fmt
|
3
3
|
#
|
4
4
|
# Description: Example ExifTool print format file for generating a
|
5
5
|
# track in Google Earth KML format from a collection of
|
@@ -7,11 +7,11 @@
|
|
7
7
|
#
|
8
8
|
# Usage: From a collection of images:
|
9
9
|
#
|
10
|
-
# exiftool -p
|
10
|
+
# exiftool -p kml_track.fmt -r DIR [...] > out.kml
|
11
11
|
#
|
12
12
|
# From video files:
|
13
13
|
#
|
14
|
-
# exiftool -p
|
14
|
+
# exiftool -p kml_track.fmt -ee3 FILEorDIR [...] > out.kml
|
15
15
|
#
|
16
16
|
# Requires: ExifTool version 10.41 or later
|
17
17
|
#
|
@@ -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">
|
@@ -238,7 +238,7 @@ types of meta information. To determine a tag name, either consult this
|
|
238
238
|
documentation or run C<exiftool -s> on a file containing the information in
|
239
239
|
question.
|
240
240
|
|
241
|
-
I<(This documentation is the result of
|
241
|
+
I<(This documentation is the result of decades of research, testing and
|
242
242
|
reverse engineering, and is the most complete metadata tag list available
|
243
243
|
anywhere on the internet. It is provided not only for ExifTool users, but
|
244
244
|
more importantly as a public service to help augment the collective
|
@@ -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($$$);
|
@@ -798,6 +798,7 @@ my %faceCategories = (
|
|
798
798
|
},
|
799
799
|
0x1447 => { Name => 'FujiModel', Writable => 'string' },
|
800
800
|
0x1448 => { Name => 'FujiModel2', Writable => 'string' },
|
801
|
+
0x144d => { Name => 'RollAngle', Writable => 'rational64s' }, #forum14319
|
801
802
|
0x3803 => { #forum10037
|
802
803
|
Name => 'VideoRecordingMode',
|
803
804
|
Groups => { 2 => 'Video' },
|
@@ -807,6 +808,7 @@ my %faceCategories = (
|
|
807
808
|
0x00 => 'Normal',
|
808
809
|
0x10 => 'F-log',
|
809
810
|
0x20 => 'HLG',
|
811
|
+
0x30 => 'F-log2', #forum14384
|
810
812
|
},
|
811
813
|
},
|
812
814
|
0x3804 => { #forum10037
|