exiftool_vendored 12.33.0 → 12.34.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 +18 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +5 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -1
- data/bin/lib/Image/ExifTool/Canon.pm +14 -2
- data/bin/lib/Image/ExifTool/Charset.pm +2 -0
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
- data/bin/lib/Image/ExifTool/PDF.pm +5 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +4 -2
- data/bin/lib/Image/ExifTool/README +4 -0
- data/bin/lib/Image/ExifTool/Sony.pm +27 -11
- data/bin/lib/Image/ExifTool/TagLookup.pm +81 -1
- data/bin/lib/Image/ExifTool/TagNames.pod +100 -10
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -0
- data/bin/lib/Image/ExifTool/Writer.pl +40 -0
- data/bin/lib/Image/ExifTool/XMP.pm +12 -9
- data/bin/lib/Image/ExifTool/XMP2.pl +2 -1
- data/bin/lib/Image/ExifTool.pm +28 -3
- data/bin/lib/Image/ExifTool.pod +9 -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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab3c45f9ea8ba8771084a357dc9e5b8deb7eef973b4edee129f974899a412bf2
|
4
|
+
data.tar.gz: 12d0a164cf31c3283809dae4e5cccd9bb8b7e667216fe6b1f104c0247da3b62d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57a16498bc569f83ec79e0ca6179b073ebe2b8c468ba93c397d44f90259d28a37390a1a2b06770b4ffc8c36c7e63abfa055e82771b6cddfac3f6e1de78c7f3b9
|
7
|
+
data.tar.gz: 7eec435a6bd1a16cf49aa3324a0633cec6a319e9358ff5277c6601b509b9c967636092137237cfa9c265b28b0fd7209719f4b90432b8761c25d47d626b5f679d
|
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.30. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Oct. 27, 2021 - Version 12.34
|
11
|
+
|
12
|
+
- Added support for ICC.2:2019 (Profile version 5.0.0 - iccMAX) color profiles
|
13
|
+
- Added ability to detect/delete a Windows Zone.Identifier alternate data
|
14
|
+
stream (ADS) via the new ZoneIdentifier tag
|
15
|
+
- Added support for the Sony ILCE-7M4 (thanks Jos Roost)
|
16
|
+
- Added a new Sony lens (thanks LibRaw and Jos Roost)
|
17
|
+
- Added a new SonyModelID (thanks LibRaw)
|
18
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
19
|
+
- Improved handling of some SVG files
|
20
|
+
- Patched -overwrite_original_in_place option to open the output file in
|
21
|
+
update mode rather than write mode (to allow some write optimizations on
|
22
|
+
certain filesystems)
|
23
|
+
- Fixed case of tag ID for new XMP-iptcExt:EventID (thanks Michael Steidl)
|
24
|
+
- Fixed problem extracting ICC_Profile information from some PDF files
|
25
|
+
- API Changes:
|
26
|
+
- Added QuickTimePad option
|
27
|
+
|
10
28
|
Oct. 16, 2021 - Version 12.33
|
11
29
|
|
12
30
|
- Added support for DNG version 1.6.0.0
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -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.34.tar.gz | tar -xf -
|
111
|
+
cd Image-ExifTool-12.34
|
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/exiftool
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
use strict;
|
11
11
|
require 5.004;
|
12
12
|
|
13
|
-
my $version = '12.
|
13
|
+
my $version = '12.34';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -3061,12 +3061,14 @@ sub SetImageInfo($$$)
|
|
3061
3061
|
# temporarily disable CTRL-C during this critical operation
|
3062
3062
|
$critical = 1;
|
3063
3063
|
undef $tmpFile; # handle deletion of temporary file ourself
|
3064
|
-
if ($et->Open(\*ORIG_FILE, $file, '
|
3064
|
+
if ($et->Open(\*ORIG_FILE, $file, '+<')) {
|
3065
3065
|
binmode(ORIG_FILE);
|
3066
3066
|
while (read(NEW_FILE, $buff, 65536)) {
|
3067
3067
|
print ORIG_FILE $buff or $err = 1;
|
3068
3068
|
}
|
3069
3069
|
close(NEW_FILE);
|
3070
|
+
# Handle files being shorter than the original
|
3071
|
+
eval { truncate(ORIG_FILE, tell(ORIG_FILE)) } or $err = 1;
|
3070
3072
|
close(ORIG_FILE) or $err = 1;
|
3071
3073
|
if ($err) {
|
3072
3074
|
Warn "Couldn't overwrite in place - $file\n";
|
@@ -5408,7 +5410,7 @@ with this command:
|
|
5408
5410
|
|
5409
5411
|
produces output like this:
|
5410
5412
|
|
5411
|
-
-- Generated by ExifTool 12.
|
5413
|
+
-- Generated by ExifTool 12.34 --
|
5412
5414
|
File: a.jpg - 2003:10:31 15:44:19
|
5413
5415
|
(f/5.6, 1/60s, ISO 100)
|
5414
5416
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
|
|
35
35
|
use Image::ExifTool::Validate;
|
36
36
|
use Image::ExifTool::MacOS;
|
37
37
|
|
38
|
-
$VERSION = '3.
|
38
|
+
$VERSION = '3.46';
|
39
39
|
@ISA = qw(Exporter);
|
40
40
|
|
41
41
|
sub NumbersFirst($$);
|
@@ -469,6 +469,11 @@ the PrintConv option is enabled and no time zone is specified. This is
|
|
469
469
|
because Apple software may display crazy values if the time zone is missing
|
470
470
|
for some tags.
|
471
471
|
|
472
|
+
By default ExifTool will remove null padding from some QuickTime containers
|
473
|
+
in Canon CR3 files when writing, but the
|
474
|
+
L<QuickTimePad|../ExifTool.html#QuickTimePad> option may be used to preserve
|
475
|
+
the original size by padding with nulls if necessary.
|
476
|
+
|
472
477
|
See
|
473
478
|
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
|
474
479
|
for the official specification.
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.53';
|
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)
|
@@ -595,7 +595,10 @@ $VERSION = '4.52';
|
|
595
595
|
'61182.21' => 'Canon RF 70-200mm F4L IS USM', #42
|
596
596
|
'61182.22' => 'Canon RF 50mm F1.8 STM', #42
|
597
597
|
'61182.23' => 'Canon RF 14-35mm F4L IS USM', #IB
|
598
|
-
'61182.24' => 'Canon RF
|
598
|
+
'61182.24' => 'Canon RF 100-400mm F5.6-8 IS USM', #42
|
599
|
+
'61182.25' => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
|
600
|
+
'61182.26' => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
|
601
|
+
'61182.27' => 'Canon RF 16mm F2.8 STM', #42
|
599
602
|
#'61182.xx' => 'Canon RF 100mm F2.8L MACRO IS USM',
|
600
603
|
65535 => 'n/a',
|
601
604
|
);
|
@@ -6776,6 +6779,9 @@ my %ciMaxFocal = (
|
|
6776
6779
|
278 => 'Canon RF 70-200mm F4L IS USM', #42
|
6777
6780
|
280 => 'Canon RF 50mm F1.8 STM', #42
|
6778
6781
|
281 => 'Canon RF 14-35mm F4L IS USM', #42/IB
|
6782
|
+
283 => 'Canon RF 100-400mm F5.6-8 IS USM', #42
|
6783
|
+
284 => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
|
6784
|
+
285 => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
|
6779
6785
|
288 => 'Canon RF 16mm F2.8 STM', #42
|
6780
6786
|
#xxx => 'Canon RF 100mm F2.8L MACRO IS USM',
|
6781
6787
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
@@ -8752,6 +8758,7 @@ my %filterConv = (
|
|
8752
8758
|
# --> ignored when reading, but offsets are updated when writing
|
8753
8759
|
CMT1 => { # (CR3 files)
|
8754
8760
|
Name => 'IFD0',
|
8761
|
+
PreservePadding => 1,
|
8755
8762
|
SubDirectory => {
|
8756
8763
|
TagTable => 'Image::ExifTool::Exif::Main',
|
8757
8764
|
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
@@ -8760,6 +8767,7 @@ my %filterConv = (
|
|
8760
8767
|
},
|
8761
8768
|
CMT2 => { # (CR3 files)
|
8762
8769
|
Name => 'ExifIFD',
|
8770
|
+
PreservePadding => 1,
|
8763
8771
|
SubDirectory => {
|
8764
8772
|
TagTable => 'Image::ExifTool::Exif::Main',
|
8765
8773
|
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
@@ -8768,6 +8776,7 @@ my %filterConv = (
|
|
8768
8776
|
},
|
8769
8777
|
CMT3 => { # (CR3 files)
|
8770
8778
|
Name => 'MakerNoteCanon',
|
8779
|
+
PreservePadding => 1,
|
8771
8780
|
SubDirectory => {
|
8772
8781
|
TagTable => 'Image::ExifTool::Canon::Main',
|
8773
8782
|
ProcessProc => \&ProcessCMT3,
|
@@ -8776,6 +8785,7 @@ my %filterConv = (
|
|
8776
8785
|
},
|
8777
8786
|
CMT4 => { # (CR3 files)
|
8778
8787
|
Name => 'GPSInfo',
|
8788
|
+
PreservePadding => 1,
|
8779
8789
|
SubDirectory => {
|
8780
8790
|
TagTable => 'Image::ExifTool::GPS::Main',
|
8781
8791
|
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
@@ -8786,6 +8796,7 @@ my %filterConv = (
|
|
8786
8796
|
THMB => {
|
8787
8797
|
Name => 'ThumbnailImage',
|
8788
8798
|
Groups => { 2 => 'Preview' },
|
8799
|
+
PreservePadding => 1,
|
8789
8800
|
RawConv => 'substr($val, 16)',
|
8790
8801
|
Binary => 1,
|
8791
8802
|
},
|
@@ -8800,6 +8811,7 @@ my %filterConv = (
|
|
8800
8811
|
WRITE_PROC => 'Image::ExifTool::QuickTime::WriteQuickTime',
|
8801
8812
|
CNOP => {
|
8802
8813
|
Name => 'CanonVRD',
|
8814
|
+
PreservePadding => 1,
|
8803
8815
|
SubDirectory => {
|
8804
8816
|
TagTable => 'Image::ExifTool::CanonVRD::Main',
|
8805
8817
|
WriteProc => 'Image::ExifTool::CanonVRD::WriteCanonDR4',
|
@@ -6,6 +6,8 @@
|
|
6
6
|
# Revisions: 2009/08/28 - P. Harvey created
|
7
7
|
# 2010/01/20 - P. Harvey complete re-write
|
8
8
|
# 2010/07/16 - P. Harvey added UTF-16 support
|
9
|
+
#
|
10
|
+
# Notes: Charset lookups are generated using my convertCharset script
|
9
11
|
#------------------------------------------------------------------------------
|
10
12
|
|
11
13
|
package Image::ExifTool::Charset;
|
@@ -11,6 +11,7 @@
|
|
11
11
|
# 4) http://www.color.org/privatetag2007-01.pdf
|
12
12
|
# 5) http://www.color.org/icc_specs2.xalter (approved revisions, 2010-07-16)
|
13
13
|
# 6) Eef Vreeland private communication
|
14
|
+
# 7) https://color.org/specification/ICC.2-2019.pdf
|
14
15
|
#
|
15
16
|
# Notes: The ICC profile information is different: the format of each
|
16
17
|
# tag is embedded in the information instead of in the directory
|
@@ -24,7 +25,7 @@ use strict;
|
|
24
25
|
use vars qw($VERSION);
|
25
26
|
use Image::ExifTool qw(:DataAccess :Utils);
|
26
27
|
|
27
|
-
$VERSION = '1.
|
28
|
+
$VERSION = '1.37';
|
28
29
|
|
29
30
|
sub ProcessICC($$);
|
30
31
|
sub ProcessICC_Profile($$$);
|
@@ -52,6 +53,11 @@ my %profileClass = (
|
|
52
53
|
abst => 'Abstract Profile',
|
53
54
|
nmcl => 'NamedColor Profile',
|
54
55
|
nkpf => 'Nikon Input Device Profile (NON-STANDARD!)', # (written by Nikon utilities)
|
56
|
+
# additions in v5 (ref 7)
|
57
|
+
cenc => 'ColorEncodingSpace Profile',
|
58
|
+
'mid '=> 'MultiplexIdentification Profile',
|
59
|
+
mlnk => 'MultiplexLink Profile',
|
60
|
+
mvis => 'MultiplexVisualization Profile',
|
55
61
|
);
|
56
62
|
my %manuSig = ( #6
|
57
63
|
'NONE' => 'none',
|
@@ -539,6 +545,90 @@ my %manuSig = ( #6
|
|
539
545
|
Binary => 1, # (NC)
|
540
546
|
},
|
541
547
|
|
548
|
+
# new tags in v5 (ref 7)
|
549
|
+
A2B3 => 'AToB3',
|
550
|
+
A2M0 => 'AToM0',
|
551
|
+
B2A3 => 'BToA3',
|
552
|
+
bcp0 => 'BRDFColorimetricParameter3Tag',
|
553
|
+
bcp1 => 'BRDFColorimetricParam1',
|
554
|
+
bcp2 => 'BRDFColorimetricParam2',
|
555
|
+
bcp3 => 'BRDFColorimetricParam3',
|
556
|
+
bsp0 => 'BRDFSpectralParam0',
|
557
|
+
bsp1 => 'BRDFSpectralParam1',
|
558
|
+
bsp2 => 'BRDFSpectralParam2',
|
559
|
+
bsp3 => 'BRDFSpectralParam3',
|
560
|
+
bAB0 => 'BRDFAToB0',
|
561
|
+
bAB1 => 'BRDFAToB1',
|
562
|
+
bAB2 => 'BRDFAToB2',
|
563
|
+
bAB3 => 'BRDFAToB3',
|
564
|
+
bBA0 => 'BRDFBToA0',
|
565
|
+
bBA1 => 'BRDFBToA1',
|
566
|
+
bBA2 => 'BRDFBToA2',
|
567
|
+
bBA3 => 'BRDFBToA3',
|
568
|
+
bBD0 => 'BRDFBToD0',
|
569
|
+
bBD1 => 'BRDFBToD1',
|
570
|
+
bBD2 => 'BRDFBToD2',
|
571
|
+
bBD3 => 'BRDFBToD3',
|
572
|
+
bDB0 => 'BRDFDToB0',
|
573
|
+
bDB1 => 'BRDFDToB1',
|
574
|
+
bDB2 => 'BRDFDToB2',
|
575
|
+
bDB3 => 'BRDFDToB3',
|
576
|
+
bMB0 => 'BRDFMToB0',
|
577
|
+
bMB1 => 'BRDFMToB1',
|
578
|
+
bMB2 => 'BRDFMToB2',
|
579
|
+
bMB3 => 'BRDFMToB3',
|
580
|
+
bMS0 => 'BRDFMToS0',
|
581
|
+
bMS1 => 'BRDFMToS1',
|
582
|
+
bMS2 => 'BRDFMToS2',
|
583
|
+
bMS3 => 'BRDFMToS3',
|
584
|
+
dAB0 => 'DirectionalAToB0',
|
585
|
+
dAB1 => 'DirectionalAToB1',
|
586
|
+
dAB2 => 'DirectionalAToB2',
|
587
|
+
dAB3 => 'DirectionalAToB3',
|
588
|
+
dBA0 => 'DirectionalBToA0',
|
589
|
+
dBA1 => 'DirectionalBToA1',
|
590
|
+
dBA2 => 'DirectionalBToA2',
|
591
|
+
dBA3 => 'DirectionalBToA3',
|
592
|
+
dBD0 => 'DirectionalBToD0',
|
593
|
+
dBD1 => 'DirectionalBToD1',
|
594
|
+
dBD2 => 'DirectionalBToD2',
|
595
|
+
dBD3 => 'DirectionalBToD3',
|
596
|
+
dDB0 => 'DirectionalDToB0',
|
597
|
+
dDB1 => 'DirectionalDToB1',
|
598
|
+
dDB2 => 'DirectionalDToB2',
|
599
|
+
dDB3 => 'DirectionalDToB3',
|
600
|
+
gdb0 => 'GamutBoundaryDescription0',
|
601
|
+
gdb1 => 'GamutBoundaryDescription1',
|
602
|
+
gdb2 => 'GamutBoundaryDescription2',
|
603
|
+
gdb3 => 'GamutBoundaryDescription3',
|
604
|
+
'mdv '=> 'MultiplexDefaultValues',
|
605
|
+
mcta => 'MultiplixTypeArray',
|
606
|
+
minf => 'MeasurementInfo',
|
607
|
+
miin => 'MeasurementInputInfo',
|
608
|
+
M2A0 => 'MToA0',
|
609
|
+
M2B0 => 'MToB0',
|
610
|
+
M2B1 => 'MToB1',
|
611
|
+
M2B2 => 'MToB2',
|
612
|
+
M2B3 => 'MToB3',
|
613
|
+
M2S0 => 'MToS0',
|
614
|
+
M2S1 => 'MToS1',
|
615
|
+
M2S2 => 'MToS2',
|
616
|
+
M2S3 => 'MToS3',
|
617
|
+
cept => 'ColorEncodingParams',
|
618
|
+
csnm => 'ColorSpaceName',
|
619
|
+
cloo => 'ColorantOrderOut',
|
620
|
+
clio => 'ColorantInfoOut',
|
621
|
+
c2sp => 'CustomToStandardPcc',
|
622
|
+
'CxF '=> 'CXF',
|
623
|
+
nmcl => 'NamedColor',
|
624
|
+
psin => 'ProfileSequenceInfo',
|
625
|
+
rfnm => 'ReferenceName',
|
626
|
+
svcn => 'SpectralViewingConditions',
|
627
|
+
swpt => 'SpectralWhitePoint',
|
628
|
+
s2cp => 'StandardToCustomPcc',
|
629
|
+
smap => 'SurfaceMap',
|
630
|
+
# smwp ? (seen in some v5 samples)
|
631
|
+
|
542
632
|
# the following entry represents the ICC profile header, and doesn't
|
543
633
|
# exist as a tag in the directory. It is only in this table to provide
|
544
634
|
# a link so ExifTool can locate the header tags
|
@@ -850,7 +940,7 @@ sub FormatICCTag($$$)
|
|
850
940
|
# dataType
|
851
941
|
if ($type eq 'data' and $size >= 12) {
|
852
942
|
my $form = Get32u($dataPt, $offset+8);
|
853
|
-
# format 0 is
|
943
|
+
# format 0 is UTF-8 data
|
854
944
|
$form == 0 and return substr($$dataPt, $offset+12, $size-12);
|
855
945
|
# binary data and other data types treat as binary (ie. don't format)
|
856
946
|
}
|
@@ -1022,7 +1112,7 @@ sub ValidateICC($)
|
|
1022
1112
|
$profileClass{substr($$valPtr, 12, 4)} or $err = 'profile class';
|
1023
1113
|
my $col = substr($$valPtr, 16, 4); # ColorSpaceData
|
1024
1114
|
my $con = substr($$valPtr, 20, 4); # ConnectionSpace
|
1025
|
-
my $match = '(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR)';
|
1115
|
+
my $match = '(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR|nc..|\0{4})';
|
1026
1116
|
$col =~ /$match/ or $err = 'color space';
|
1027
1117
|
$con =~ /$match/ or $err = 'connection space';
|
1028
1118
|
return $err ? "Invalid ICC profile (bad $err)" : undef;
|
@@ -1134,7 +1224,7 @@ sub ProcessICC_Profile($$$)
|
|
1134
1224
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tagID);
|
1135
1225
|
# unknown tags aren't generated automatically by GetTagInfo()
|
1136
1226
|
# if the tagID's aren't numeric, so we must do this manually:
|
1137
|
-
if (not $tagInfo and $$et{OPTIONS}{Unknown}) {
|
1227
|
+
if (not $tagInfo and ($$et{OPTIONS}{Unknown} or $verbose)) {
|
1138
1228
|
$tagInfo = { Unknown => 1 };
|
1139
1229
|
AddTagToTable($tagTablePtr, $tagID, $tagInfo);
|
1140
1230
|
}
|
@@ -1277,6 +1367,8 @@ under the same terms as Perl itself.
|
|
1277
1367
|
|
1278
1368
|
=item L<http://developer.apple.com/documentation/GraphicsImaging/Reference/ColorSync_Manager/ColorSync_Manager.pdf>
|
1279
1369
|
|
1370
|
+
=item L<https://color.org/specification/ICC.2-2019.pdf>
|
1371
|
+
|
1280
1372
|
=back
|
1281
1373
|
|
1282
1374
|
=head1 SEE ALSO
|
@@ -21,7 +21,7 @@ use vars qw($VERSION $AUTOLOAD $lastFetched);
|
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
22
22
|
require Exporter;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.54';
|
25
25
|
|
26
26
|
sub FetchObject($$$$);
|
27
27
|
sub ExtractObject($$;$$);
|
@@ -280,10 +280,12 @@ my %supportedFilter = (
|
|
280
280
|
ConvertToDict => 1,
|
281
281
|
},
|
282
282
|
Cs1 => {
|
283
|
-
SubDirectory => { TagTable => 'Image::ExifTool::PDF::
|
283
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PDF::DefaultRGB' },
|
284
|
+
ConvertToDict => 1, # (just in case)
|
284
285
|
},
|
285
286
|
CS0 => {
|
286
|
-
SubDirectory => { TagTable => 'Image::ExifTool::PDF::
|
287
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PDF::DefaultRGB' },
|
288
|
+
ConvertToDict => 1, # (just in case)
|
287
289
|
},
|
288
290
|
);
|
289
291
|
|
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
47
47
|
use Image::ExifTool::Exif;
|
48
48
|
use Image::ExifTool::GPS;
|
49
49
|
|
50
|
-
$VERSION = '2.
|
50
|
+
$VERSION = '2.71';
|
51
51
|
|
52
52
|
sub ProcessMOV($$;$);
|
53
53
|
sub ProcessKeys($$$);
|
@@ -558,6 +558,7 @@ my %eeBox2 = (
|
|
558
558
|
# *** this is where ExifTool writes XMP in MP4 videos (as per XMP spec) ***
|
559
559
|
Condition => '$$valPt=~/^\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x99\x94\x91\xe3\xaf\xac/',
|
560
560
|
WriteGroup => 'XMP', # (write main XMP tags here)
|
561
|
+
PreservePadding => 1,
|
561
562
|
SubDirectory => {
|
562
563
|
TagTable => 'Image::ExifTool::XMP::Main',
|
563
564
|
Start => 16,
|
@@ -607,6 +608,7 @@ my %eeBox2 = (
|
|
607
608
|
Name => 'PreviewImage',
|
608
609
|
Condition => '$$valPt=~/^\xea\xf4\x2b\x5e\x1c\x98\x4b\x88\xb9\xfb\xb7\xdc\x40\x6e\x4d\x16/',
|
609
610
|
Groups => { 2 => 'Preview' },
|
611
|
+
PreservePadding => 1,
|
610
612
|
# 0x00 - undef[16]: UUID
|
611
613
|
# 0x10 - int32u[2]: "0 1" (version and/or item count?)
|
612
614
|
# 0x18 - int32u: PRVW atom size
|
@@ -9425,7 +9427,7 @@ ItemID: foreach $id (keys %$items) {
|
|
9425
9427
|
for (;;) {
|
9426
9428
|
last if $pos + 16 > $size;
|
9427
9429
|
my ($len, $type, $flags, $ctry, $lang) = unpack("x${pos}Na4Nnn", $val);
|
9428
|
-
last if $pos + $len > $size;
|
9430
|
+
last if $pos + $len > $size or not $len;
|
9429
9431
|
my ($value, $langInfo, $oldDir);
|
9430
9432
|
my $format = $$tagInfo{Format};
|
9431
9433
|
if ($type eq 'data' and $len >= 16) {
|
@@ -450,6 +450,10 @@ numerical, and generated automatically otherwise.
|
|
450
450
|
may be written if the tag already exists. By default, all
|
451
451
|
MakerNotes tags are permanent unless otherwise specified.
|
452
452
|
|
453
|
+
'PreservePadding' - [QuickTime only] flag to preserve the
|
454
|
+
original size of the QuickTime atom by padding with nulls when
|
455
|
+
writing with the QuickTimePad option.
|
456
|
+
|
453
457
|
'PrintHex' - specifies that unknown PrintConv values should
|
454
458
|
be printed in hex (eg. 'Unknown (0x1)'). Also causes
|
455
459
|
numerical tag values to be printed in hex in the HTML tag name
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
34
34
|
use Image::ExifTool::Exif;
|
35
35
|
use Image::ExifTool::Minolta;
|
36
36
|
|
37
|
-
$VERSION = '3.
|
37
|
+
$VERSION = '3.47';
|
38
38
|
|
39
39
|
sub ProcessSRF($$$);
|
40
40
|
sub ProcessSR2($$$);
|
@@ -241,7 +241,8 @@ sub PrintInvLensSpec($;$$);
|
|
241
241
|
50528 => 'Sigma 35mm F1.4 DG DN | A', #IB/JR (021)
|
242
242
|
50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
|
243
243
|
50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
|
244
|
-
|
244
|
+
50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
|
245
|
+
|
245
246
|
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
|
246
247
|
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
|
247
248
|
50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
|
@@ -1580,6 +1581,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1580
1581
|
65535 => 'n/a',
|
1581
1582
|
},
|
1582
1583
|
},
|
1584
|
+
# 0x203a - 0x2041: first seen October 2021 for ILCE-7M4
|
1583
1585
|
0x3000 => {
|
1584
1586
|
Name => 'ShotInfo',
|
1585
1587
|
SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
|
@@ -1608,7 +1610,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1608
1610
|
# from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
|
1609
1611
|
{
|
1610
1612
|
Name => 'Tag9050a',
|
1611
|
-
Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
|
1613
|
+
Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
|
1612
1614
|
SubDirectory => {
|
1613
1615
|
TagTable => 'Image::ExifTool::Sony::Tag9050a',
|
1614
1616
|
ByteOrder => 'LittleEndian',
|
@@ -1622,7 +1624,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1622
1624
|
},
|
1623
1625
|
},{
|
1624
1626
|
Name => 'Tag9050c',
|
1625
|
-
Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)/',
|
1627
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)/',
|
1626
1628
|
SubDirectory => {
|
1627
1629
|
TagTable => 'Image::ExifTool::Sony::Tag9050c',
|
1628
1630
|
ByteOrder => 'LittleEndian',
|
@@ -2032,6 +2034,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
2032
2034
|
385 => 'ILME-FX3', #JR
|
2033
2035
|
386 => 'ILCE-7RM3A', #JR
|
2034
2036
|
387 => 'ILCE-7RM4A', #forum12542
|
2037
|
+
388 => 'ILCE-7M4', #IB/JR
|
2035
2038
|
},
|
2036
2039
|
},
|
2037
2040
|
0xb020 => { #2
|
@@ -7954,7 +7957,7 @@ my %isoSetting2010 = (
|
|
7954
7957
|
},
|
7955
7958
|
0x0088 => {
|
7956
7959
|
Name => 'InternalSerialNumber', #(NC)
|
7957
|
-
Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
|
7960
|
+
Condition => '$$self{Model} =~ /^(ILCE-(7M4|7SM3)|ILME-FX3)/',
|
7958
7961
|
Format => 'int8u[6]',
|
7959
7962
|
PrintConv => 'unpack "H*", pack "C*", split " ", $val',
|
7960
7963
|
},
|
@@ -8192,7 +8195,7 @@ my %isoSetting2010 = (
|
|
8192
8195
|
},
|
8193
8196
|
0x002a => [{
|
8194
8197
|
Name => 'Quality2',
|
8195
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
|
8198
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8196
8199
|
PrintConv => {
|
8197
8200
|
0 => 'JPEG',
|
8198
8201
|
1 => 'RAW',
|
@@ -8201,7 +8204,7 @@ my %isoSetting2010 = (
|
|
8201
8204
|
},
|
8202
8205
|
},{
|
8203
8206
|
Name => 'Quality2',
|
8204
|
-
Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
|
8207
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8205
8208
|
PrintConv => {
|
8206
8209
|
1 => 'JPEG',
|
8207
8210
|
2 => 'RAW',
|
@@ -8212,13 +8215,13 @@ my %isoSetting2010 = (
|
|
8212
8215
|
}],
|
8213
8216
|
0x0047 => {
|
8214
8217
|
Name => 'SonyImageHeight',
|
8215
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
|
8218
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8216
8219
|
Format => 'int16u',
|
8217
8220
|
PrintConv => '$val > 0 ? 8*$val : "n.a."',
|
8218
8221
|
},
|
8219
8222
|
0x0053 => {
|
8220
8223
|
Name => 'ModelReleaseYear',
|
8221
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
|
8224
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8222
8225
|
Format => 'int8u',
|
8223
8226
|
PrintConv => 'sprintf("20%.2d", $val)',
|
8224
8227
|
},
|
@@ -8233,10 +8236,11 @@ my %isoSetting2010 = (
|
|
8233
8236
|
FIRST_ENTRY => 0,
|
8234
8237
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
8235
8238
|
DATAMEMBER => [ 0 ],
|
8236
|
-
IS_SUBDIR => [ 0x0498, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
|
8239
|
+
IS_SUBDIR => [ 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
|
8237
8240
|
0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
|
8238
8241
|
|
8239
8242
|
0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8243
|
+
0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8240
8244
|
0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8241
8245
|
0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8242
8246
|
0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
@@ -9505,7 +9509,7 @@ my %isoSetting2010 = (
|
|
9505
9509
|
WRITE_PROC => \&WriteEnciphered,
|
9506
9510
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
9507
9511
|
FORMAT => 'int8u',
|
9508
|
-
NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
|
9512
|
+
NOTES => 'Valid for the ILCE-1/7M4/7SM3, ILME-FX3.',
|
9509
9513
|
FIRST_ENTRY => 0,
|
9510
9514
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
9511
9515
|
0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
|
@@ -9632,10 +9636,22 @@ my %isoSetting2010 = (
|
|
9632
9636
|
},
|
9633
9637
|
0x088f => {
|
9634
9638
|
Name => 'VignettingCorrParams',
|
9639
|
+
Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
|
9640
|
+
Format => 'int16s[16]',
|
9641
|
+
},
|
9642
|
+
0x0891 => {
|
9643
|
+
Name => 'VignettingCorrParams',
|
9644
|
+
Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
|
9635
9645
|
Format => 'int16s[16]',
|
9636
9646
|
},
|
9637
9647
|
0x0914 => {
|
9638
9648
|
Name => 'ChromaticAberrationCorrParams',
|
9649
|
+
Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
|
9650
|
+
Format => 'int16s[32]',
|
9651
|
+
},
|
9652
|
+
0x0916 => {
|
9653
|
+
Name => 'ChromaticAberrationCorrParams',
|
9654
|
+
Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
|
9639
9655
|
Format => 'int16s[32]',
|
9640
9656
|
},
|
9641
9657
|
);
|
@@ -2345,7 +2345,7 @@ my %tagLookup = (
|
|
2345
2345
|
'eventfieldnotes' => { 116 => [\'Event','EventFieldNotes'] },
|
2346
2346
|
'eventfieldnumber' => { 116 => [\'Event','EventFieldNumber'] },
|
2347
2347
|
'eventhabitat' => { 116 => [\'Event','EventHabitat'] },
|
2348
|
-
'eventid' => { 116 => [\'Event','EventEventID'], 480 => '
|
2348
|
+
'eventid' => { 116 => [\'Event','EventEventID'], 480 => 'EventId' },
|
2349
2349
|
'eventlatestdate' => { 116 => [\'Event','EventLatestDate'] },
|
2350
2350
|
'eventmonth' => { 116 => [\'Event','EventMonth'] },
|
2351
2351
|
'eventnumber' => { 372 => 0x9, 373 => 0x37, 374 => 0x3a },
|
@@ -6431,6 +6431,7 @@ my %tagLookup = (
|
|
6431
6431
|
'yield' => { 486 => 'yield' },
|
6432
6432
|
'yposition' => { 117 => 0x11f },
|
6433
6433
|
'yresolution' => { 117 => 0x11b, 132 => 0x5, 361 => 0x4, 490 => 'YResolution' },
|
6434
|
+
'zoneidentifier' => { 118 => 'ZoneIdentifier' },
|
6434
6435
|
'zonematching' => { 183 => 0x10a, 186 => [0x3a,0x4a], 411 => 0xb024 },
|
6435
6436
|
'zonematchingmode' => { 181 => 0x14 },
|
6436
6437
|
'zonematchingon' => { 180 => 0x75 },
|
@@ -6657,6 +6658,8 @@ my %tagExists = (
|
|
6657
6658
|
'atob0' => 1,
|
6658
6659
|
'atob1' => 1,
|
6659
6660
|
'atob2' => 1,
|
6661
|
+
'atob3' => 1,
|
6662
|
+
'atom0' => 1,
|
6660
6663
|
'atsccontent' => 1,
|
6661
6664
|
'attachments' => 1,
|
6662
6665
|
'attitude' => 1,
|
@@ -6896,6 +6899,38 @@ my %tagExists = (
|
|
6896
6899
|
'brain' => 1,
|
6897
6900
|
'brandingimageid' => 1,
|
6898
6901
|
'brandingname' => 1,
|
6902
|
+
'brdfatob0' => 1,
|
6903
|
+
'brdfatob1' => 1,
|
6904
|
+
'brdfatob2' => 1,
|
6905
|
+
'brdfatob3' => 1,
|
6906
|
+
'brdfbtoa0' => 1,
|
6907
|
+
'brdfbtoa1' => 1,
|
6908
|
+
'brdfbtoa2' => 1,
|
6909
|
+
'brdfbtoa3' => 1,
|
6910
|
+
'brdfbtod0' => 1,
|
6911
|
+
'brdfbtod1' => 1,
|
6912
|
+
'brdfbtod2' => 1,
|
6913
|
+
'brdfbtod3' => 1,
|
6914
|
+
'brdfcolorimetricparam1' => 1,
|
6915
|
+
'brdfcolorimetricparam2' => 1,
|
6916
|
+
'brdfcolorimetricparam3' => 1,
|
6917
|
+
'brdfcolorimetricparameter3tag' => 1,
|
6918
|
+
'brdfdtob0' => 1,
|
6919
|
+
'brdfdtob1' => 1,
|
6920
|
+
'brdfdtob2' => 1,
|
6921
|
+
'brdfdtob3' => 1,
|
6922
|
+
'brdfmtob0' => 1,
|
6923
|
+
'brdfmtob1' => 1,
|
6924
|
+
'brdfmtob2' => 1,
|
6925
|
+
'brdfmtob3' => 1,
|
6926
|
+
'brdfmtos0' => 1,
|
6927
|
+
'brdfmtos1' => 1,
|
6928
|
+
'brdfmtos2' => 1,
|
6929
|
+
'brdfmtos3' => 1,
|
6930
|
+
'brdfspectralparam0' => 1,
|
6931
|
+
'brdfspectralparam1' => 1,
|
6932
|
+
'brdfspectralparam2' => 1,
|
6933
|
+
'brdfspectralparam3' => 1,
|
6899
6934
|
'breakchar' => 1,
|
6900
6935
|
'brightdefectintegrationms' => 1,
|
6901
6936
|
'brightdefectisocode' => 1,
|
@@ -6908,6 +6943,7 @@ my %tagExists = (
|
|
6908
6943
|
'btoa0' => 1,
|
6909
6944
|
'btoa1' => 1,
|
6910
6945
|
'btoa2' => 1,
|
6946
|
+
'btoa3' => 1,
|
6911
6947
|
'btod0' => 1,
|
6912
6948
|
'btod1' => 1,
|
6913
6949
|
'btod2' => 1,
|
@@ -7241,7 +7277,9 @@ my %tagExists = (
|
|
7241
7277
|
'colorant3coordinates' => 1,
|
7242
7278
|
'colorant3name' => 1,
|
7243
7279
|
'colorantcount' => 1,
|
7280
|
+
'colorantinfoout' => 1,
|
7244
7281
|
'colorantorder' => 1,
|
7282
|
+
'colorantorderout' => 1,
|
7245
7283
|
'coloranttable' => 1,
|
7246
7284
|
'coloranttableout' => 1,
|
7247
7285
|
'coloraverages' => 1,
|
@@ -7280,6 +7318,7 @@ my %tagExists = (
|
|
7280
7318
|
'colordata8' => 1,
|
7281
7319
|
'colordata9' => 1,
|
7282
7320
|
'colordataunknown' => 1,
|
7321
|
+
'colorencodingparams' => 1,
|
7283
7322
|
'colorgroup' => 1,
|
7284
7323
|
'colorhalftoninginfo' => 1,
|
7285
7324
|
'colorimetricintentimagestate' => 1,
|
@@ -7301,6 +7340,7 @@ my %tagExists = (
|
|
7301
7340
|
'colorsamplersresource2' => 1,
|
7302
7341
|
'colorsetup' => 1,
|
7303
7342
|
'colorspacedata' => 1,
|
7343
|
+
'colorspacename' => 1,
|
7304
7344
|
'colorspecapproximation' => 1,
|
7305
7345
|
'colorspecdata' => 1,
|
7306
7346
|
'colorspecification' => 1,
|
@@ -7518,6 +7558,8 @@ my %tagExists = (
|
|
7518
7558
|
'customsettingsd810' => 1,
|
7519
7559
|
'customsettingsd850' => 1,
|
7520
7560
|
'customsettingsd90' => 1,
|
7561
|
+
'customtostandardpcc' => 1,
|
7562
|
+
'cxf' => 1,
|
7521
7563
|
'd-lightinghqdata' => 1,
|
7522
7564
|
'd-lightinghsdata' => 1,
|
7523
7565
|
'd2' => 1,
|
@@ -7681,6 +7723,22 @@ my %tagExists = (
|
|
7681
7723
|
'digitalimagebroker' => 1,
|
7682
7724
|
'digitalsignature' => 1,
|
7683
7725
|
'dimensions' => 1,
|
7726
|
+
'directionalatob0' => 1,
|
7727
|
+
'directionalatob1' => 1,
|
7728
|
+
'directionalatob2' => 1,
|
7729
|
+
'directionalatob3' => 1,
|
7730
|
+
'directionalbtoa0' => 1,
|
7731
|
+
'directionalbtoa1' => 1,
|
7732
|
+
'directionalbtoa2' => 1,
|
7733
|
+
'directionalbtoa3' => 1,
|
7734
|
+
'directionalbtod0' => 1,
|
7735
|
+
'directionalbtod1' => 1,
|
7736
|
+
'directionalbtod2' => 1,
|
7737
|
+
'directionalbtod3' => 1,
|
7738
|
+
'directionaldtob0' => 1,
|
7739
|
+
'directionaldtob1' => 1,
|
7740
|
+
'directionaldtob2' => 1,
|
7741
|
+
'directionaldtob3' => 1,
|
7684
7742
|
'directors' => 1,
|
7685
7743
|
'disableflagspresent' => 1,
|
7686
7744
|
'discardobjects' => 1,
|
@@ -8250,6 +8308,10 @@ my %tagExists = (
|
|
8250
8308
|
'gammared' => 1,
|
8251
8309
|
'gammatable' => 1,
|
8252
8310
|
'gamut' => 1,
|
8311
|
+
'gamutboundarydescription0' => 1,
|
8312
|
+
'gamutboundarydescription1' => 1,
|
8313
|
+
'gamutboundarydescription2' => 1,
|
8314
|
+
'gamutboundarydescription3' => 1,
|
8253
8315
|
'gapless' => 1,
|
8254
8316
|
'gaudio' => 1,
|
8255
8317
|
'gaussianweights' => 1,
|
@@ -9239,6 +9301,7 @@ my %tagExists = (
|
|
9239
9301
|
'measurementgeometry' => 1,
|
9240
9302
|
'measurementilluminant' => 1,
|
9241
9303
|
'measurementinfo' => 1,
|
9304
|
+
'measurementinputinfo' => 1,
|
9242
9305
|
'measurementobserver' => 1,
|
9243
9306
|
'measurementscale' => 1,
|
9244
9307
|
'mebx' => 1,
|
@@ -9420,9 +9483,20 @@ my %tagExists = (
|
|
9420
9483
|
'msdocumenttextposition' => 1,
|
9421
9484
|
'mspropertysetstorage' => 1,
|
9422
9485
|
'msstereo' => 1,
|
9486
|
+
'mtoa0' => 1,
|
9487
|
+
'mtob0' => 1,
|
9488
|
+
'mtob1' => 1,
|
9489
|
+
'mtob2' => 1,
|
9490
|
+
'mtob3' => 1,
|
9491
|
+
'mtos0' => 1,
|
9492
|
+
'mtos1' => 1,
|
9493
|
+
'mtos2' => 1,
|
9494
|
+
'mtos3' => 1,
|
9423
9495
|
'multiexp' => 1,
|
9424
9496
|
'multiexposureversion' => 1,
|
9425
9497
|
'multimediatype' => 1,
|
9498
|
+
'multiplexdefaultvalues' => 1,
|
9499
|
+
'multiplixtypearray' => 1,
|
9426
9500
|
'multiprofiles' => 1,
|
9427
9501
|
'multiquality' => 1,
|
9428
9502
|
'multishoton' => 1,
|
@@ -9991,6 +10065,7 @@ my %tagExists = (
|
|
9991
10065
|
'profileifd' => 1,
|
9992
10066
|
'profilesequencedesc' => 1,
|
9993
10067
|
'profilesequenceidentifier' => 1,
|
10068
|
+
'profilesequenceinfo' => 1,
|
9994
10069
|
'profilesize' => 1,
|
9995
10070
|
'profileversion' => 1,
|
9996
10071
|
'progid' => 1,
|
@@ -10195,6 +10270,7 @@ my %tagExists = (
|
|
10195
10270
|
'reelnumber' => 1,
|
10196
10271
|
'reeltimecode' => 1,
|
10197
10272
|
'reference' => 1,
|
10273
|
+
'referencename' => 1,
|
10198
10274
|
'referencetemperature' => 1,
|
10199
10275
|
'reflectedapparenttemperature' => 1,
|
10200
10276
|
'reflection' => 1,
|
@@ -10632,6 +10708,8 @@ my %tagExists = (
|
|
10632
10708
|
'specialeffectsopticalfilter' => 1,
|
10633
10709
|
'specialfolderdata' => 1,
|
10634
10710
|
'specificationversion' => 1,
|
10711
|
+
'spectralviewingconditions' => 1,
|
10712
|
+
'spectralwhitepoint' => 1,
|
10635
10713
|
'speed' => 1,
|
10636
10714
|
'sphericalvideo' => 1,
|
10637
10715
|
'sphericalvideoxml' => 1,
|
@@ -10652,6 +10730,7 @@ my %tagExists = (
|
|
10652
10730
|
'srgbrendering' => 1,
|
10653
10731
|
'stampinfo' => 1,
|
10654
10732
|
'stamptoolcount' => 1,
|
10733
|
+
'standardtocustompcc' => 1,
|
10655
10734
|
'standbymonitorofftime' => 1,
|
10656
10735
|
'starring' => 1,
|
10657
10736
|
'startdate' => 1,
|
@@ -10775,6 +10854,7 @@ my %tagExists = (
|
|
10775
10854
|
'suggestedpalette' => 1,
|
10776
10855
|
'summary' => 1,
|
10777
10856
|
'summaryinfo' => 1,
|
10857
|
+
'surfacemap' => 1,
|
10778
10858
|
'surroundmode' => 1,
|
10779
10859
|
'surroundshotvideo' => 1,
|
10780
10860
|
'surroundshotvideoname' => 1,
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
12
12
|
=head1 TAG TABLES
|
13
13
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
15
|
-
They contain a total of
|
15
|
+
They contain a total of 24447 tags, with 15878 unique tag names.
|
16
16
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
@@ -3161,8 +3161,8 @@ These tags belong to the ExifTool XMP-exif family 1 group.
|
|
3161
3161
|
|
3162
3162
|
=head3 XMP exifEX Tags
|
3163
3163
|
|
3164
|
-
EXIF tags added by the EXIF 2.
|
3165
|
-
L<
|
3164
|
+
EXIF tags added by the EXIF 2.32 for XMP specification (see
|
3165
|
+
L<https://cipa.jp/std/documents/download_e.html?DC-010-2020_E>).
|
3166
3166
|
|
3167
3167
|
These tags belong to the ExifTool XMP-exifEX family 1 group.
|
3168
3168
|
|
@@ -5569,32 +5569,98 @@ specification.
|
|
5569
5569
|
'A2B0' AToB0 no
|
5570
5570
|
'A2B1' AToB1 no
|
5571
5571
|
'A2B2' AToB2 no
|
5572
|
+
'A2B3' AToB3 no
|
5573
|
+
'A2M0' AToM0 no
|
5572
5574
|
'B2A0' BToA0 no
|
5573
5575
|
'B2A1' BToA1 no
|
5574
5576
|
'B2A2' BToA2 no
|
5577
|
+
'B2A3' BToA3 no
|
5575
5578
|
'B2D0' BToD0 no
|
5576
5579
|
'B2D1' BToD1 no
|
5577
5580
|
'B2D2' BToD2 no
|
5578
5581
|
'B2D3' BToD3 no
|
5582
|
+
'CxF ' CXF no
|
5579
5583
|
'D2B0' DToB0 no
|
5580
5584
|
'D2B1' DToB1 no
|
5581
5585
|
'D2B2' DToB2 no
|
5582
5586
|
'D2B3' DToB3 no
|
5583
5587
|
'Header' ProfileHeader ICC_Profile Header
|
5588
|
+
'M2A0' MToA0 no
|
5589
|
+
'M2B0' MToB0 no
|
5590
|
+
'M2B1' MToB1 no
|
5591
|
+
'M2B2' MToB2 no
|
5592
|
+
'M2B3' MToB3 no
|
5593
|
+
'M2S0' MToS0 no
|
5594
|
+
'M2S1' MToS1 no
|
5595
|
+
'M2S2' MToS2 no
|
5596
|
+
'M2S3' MToS3 no
|
5584
5597
|
'MS00' WCSProfiles no
|
5598
|
+
'bAB0' BRDFAToB0 no
|
5599
|
+
'bAB1' BRDFAToB1 no
|
5600
|
+
'bAB2' BRDFAToB2 no
|
5601
|
+
'bAB3' BRDFAToB3 no
|
5602
|
+
'bBA0' BRDFBToA0 no
|
5603
|
+
'bBA1' BRDFBToA1 no
|
5604
|
+
'bBA2' BRDFBToA2 no
|
5605
|
+
'bBA3' BRDFBToA3 no
|
5606
|
+
'bBD0' BRDFBToD0 no
|
5607
|
+
'bBD1' BRDFBToD1 no
|
5608
|
+
'bBD2' BRDFBToD2 no
|
5609
|
+
'bBD3' BRDFBToD3 no
|
5610
|
+
'bDB0' BRDFDToB0 no
|
5611
|
+
'bDB1' BRDFDToB1 no
|
5612
|
+
'bDB2' BRDFDToB2 no
|
5613
|
+
'bDB3' BRDFDToB3 no
|
5614
|
+
'bMB0' BRDFMToB0 no
|
5615
|
+
'bMB1' BRDFMToB1 no
|
5616
|
+
'bMB2' BRDFMToB2 no
|
5617
|
+
'bMB3' BRDFMToB3 no
|
5618
|
+
'bMS0' BRDFMToS0 no
|
5619
|
+
'bMS1' BRDFMToS1 no
|
5620
|
+
'bMS2' BRDFMToS2 no
|
5621
|
+
'bMS3' BRDFMToS3 no
|
5585
5622
|
'bTRC' BlueTRC no
|
5586
5623
|
'bXYZ' BlueMatrixColumn no
|
5624
|
+
'bcp0' BRDFColorimetricParameter3Tag no
|
5625
|
+
'bcp1' BRDFColorimetricParam1 no
|
5626
|
+
'bcp2' BRDFColorimetricParam2 no
|
5627
|
+
'bcp3' BRDFColorimetricParam3 no
|
5587
5628
|
'bfd ' UCRBG no
|
5588
5629
|
'bkpt' MediaBlackPoint no
|
5630
|
+
'bsp0' BRDFSpectralParam0 no
|
5631
|
+
'bsp1' BRDFSpectralParam1 no
|
5632
|
+
'bsp2' BRDFSpectralParam2 no
|
5633
|
+
'bsp3' BRDFSpectralParam3 no
|
5634
|
+
'c2sp' CustomToStandardPcc no
|
5589
5635
|
'calt' CalibrationDateTime no
|
5636
|
+
'cept' ColorEncodingParams no
|
5590
5637
|
'chad' ChromaticAdaptation no
|
5591
5638
|
'chrm' Chromaticity ICC_Profile Chromaticity
|
5592
5639
|
'ciis' ColorimetricIntentImageState no
|
5640
|
+
'clio' ColorantInfoOut no
|
5641
|
+
'cloo' ColorantOrderOut no
|
5593
5642
|
'clot' ColorantTableOut no
|
5594
5643
|
'clro' ColorantOrder no
|
5595
5644
|
'clrt' ColorantTable ICC_Profile ColorantTable
|
5596
5645
|
'cprt' ProfileCopyright no
|
5597
5646
|
'crdi' CRDInfo no
|
5647
|
+
'csnm' ColorSpaceName no
|
5648
|
+
'dAB0' DirectionalAToB0 no
|
5649
|
+
'dAB1' DirectionalAToB1 no
|
5650
|
+
'dAB2' DirectionalAToB2 no
|
5651
|
+
'dAB3' DirectionalAToB3 no
|
5652
|
+
'dBA0' DirectionalBToA0 no
|
5653
|
+
'dBA1' DirectionalBToA1 no
|
5654
|
+
'dBA2' DirectionalBToA2 no
|
5655
|
+
'dBA3' DirectionalBToA3 no
|
5656
|
+
'dBD0' DirectionalBToD0 no
|
5657
|
+
'dBD1' DirectionalBToD1 no
|
5658
|
+
'dBD2' DirectionalBToD2 no
|
5659
|
+
'dBD3' DirectionalBToD3 no
|
5660
|
+
'dDB0' DirectionalDToB0 no
|
5661
|
+
'dDB1' DirectionalDToB1 no
|
5662
|
+
'dDB2' DirectionalDToB2 no
|
5663
|
+
'dDB3' DirectionalDToB3 no
|
5598
5664
|
'desc' ProfileDescription no
|
5599
5665
|
'devs' DeviceSettings no
|
5600
5666
|
'dmdd' DeviceModelDesc no
|
@@ -5604,14 +5670,23 @@ specification.
|
|
5604
5670
|
'gTRC' GreenTRC no
|
5605
5671
|
'gXYZ' GreenMatrixColumn no
|
5606
5672
|
'gamt' Gamut no
|
5673
|
+
'gdb0' GamutBoundaryDescription0 no
|
5674
|
+
'gdb1' GamutBoundaryDescription1 no
|
5675
|
+
'gdb2' GamutBoundaryDescription2 no
|
5676
|
+
'gdb3' GamutBoundaryDescription3 no
|
5607
5677
|
'kTRC' GrayTRC no
|
5608
5678
|
'lumi' Luminance no
|
5679
|
+
'mcta' MultiplixTypeArray no
|
5680
|
+
'mdv ' MultiplexDefaultValues no
|
5609
5681
|
'meas' Measurement ICC_Profile Measurement
|
5610
5682
|
'meta' Metadata ICC_Profile Metadata
|
5683
|
+
'miin' MeasurementInputInfo no
|
5684
|
+
'minf' MeasurementInfo no
|
5611
5685
|
'mmod' MakeAndModel no
|
5612
5686
|
'ncl2' NamedColor2 no
|
5613
5687
|
'ncol' NamedColor no
|
5614
5688
|
'ndin' NativeDisplayInfo no
|
5689
|
+
'nmcl' NamedColor no
|
5615
5690
|
'pre0' Preview0 no
|
5616
5691
|
'pre1' Preview1 no
|
5617
5692
|
'pre2' Preview2 no
|
@@ -5623,18 +5698,24 @@ specification.
|
|
5623
5698
|
'psd3' PostScript2CRD3 no
|
5624
5699
|
'pseq' ProfileSequenceDesc no
|
5625
5700
|
'psid' ProfileSequenceIdentifier no
|
5701
|
+
'psin' ProfileSequenceInfo no
|
5626
5702
|
'psvm' PS2CRDVMSize no
|
5627
5703
|
'rTRC' RedTRC no
|
5628
5704
|
'rXYZ' RedMatrixColumn no
|
5629
5705
|
'resp' OutputResponse no
|
5706
|
+
'rfnm' ReferenceName no
|
5630
5707
|
'rhoc' ReflectionHardcopyOrigColorimetry no
|
5631
5708
|
'rig0' PerceptualRenderingIntentGamut no
|
5632
5709
|
'rig2' SaturationRenderingIntentGamut no
|
5633
5710
|
'rpoc' ReflectionPrintOutputColorimetry no
|
5711
|
+
's2cp' StandardToCustomPcc no
|
5634
5712
|
'sape' SceneAppearanceEstimates no
|
5635
5713
|
'scoe' SceneColorimetryEstimates no
|
5636
5714
|
'scrd' ScreeningDesc no
|
5637
5715
|
'scrn' Screening no
|
5716
|
+
'smap' SurfaceMap no
|
5717
|
+
'svcn' SpectralViewingConditions no
|
5718
|
+
'swpt' SpectralWhitePoint no
|
5638
5719
|
'targ' CharTarget no
|
5639
5720
|
'tech' Technology no
|
5640
5721
|
'vcgt' VideoCardGamma no
|
@@ -18744,6 +18825,7 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
|
|
18744
18825
|
Index1 Tag Name Writable
|
18745
18826
|
------ -------- --------
|
18746
18827
|
1176 ISOInfo Sony ISOInfo
|
18828
|
+
1181 ISOInfo Sony ISOInfo
|
18747
18829
|
1185 ISOInfo Sony ISOInfo
|
18748
18830
|
1186 ISOInfo Sony ISOInfo
|
18749
18831
|
1437 ISOInfo Sony ISOInfo
|
@@ -19074,7 +19156,7 @@ E-mount models.
|
|
19074
19156
|
|
19075
19157
|
=head3 Sony Tag9416 Tags
|
19076
19158
|
|
19077
|
-
Valid for the ILCE-1/7SM3, ILME-FX3.
|
19159
|
+
Valid for the ILCE-1/7M4/7SM3, ILME-FX3.
|
19078
19160
|
|
19079
19161
|
Index1 Tag Name Writable
|
19080
19162
|
------ -------- --------
|
@@ -19098,7 +19180,9 @@ Valid for the ILCE-1/7SM3, ILME-FX3.
|
|
19098
19180
|
115 MinFocalLength no
|
19099
19181
|
117 MaxFocalLength no
|
19100
19182
|
2191 VignettingCorrParams no
|
19183
|
+
2193 VignettingCorrParams no
|
19101
19184
|
2324 ChromaticAberrationCorrParams no
|
19185
|
+
2326 ChromaticAberrationCorrParams no
|
19102
19186
|
|
19103
19187
|
=head3 Sony PIC Tags
|
19104
19188
|
|
@@ -25049,22 +25133,22 @@ This is the PDF document catalog.
|
|
25049
25133
|
|
25050
25134
|
Tag ID Tag Name Writable
|
25051
25135
|
------ -------- --------
|
25052
|
-
'CS0' CS0 PDF
|
25053
|
-
'Cs1' Cs1 PDF
|
25136
|
+
'CS0' CS0 PDF DefaultRGB
|
25137
|
+
'Cs1' Cs1 PDF DefaultRGB
|
25054
25138
|
'DefaultCMYK' DefaultCMYK PDF DefaultRGB
|
25055
25139
|
'DefaultRGB' DefaultRGB PDF DefaultRGB
|
25056
25140
|
|
25057
|
-
=head3 PDF
|
25141
|
+
=head3 PDF DefaultRGB Tags
|
25058
25142
|
|
25059
25143
|
Tag ID Tag Name Writable
|
25060
25144
|
------ -------- --------
|
25061
|
-
'
|
25145
|
+
'ICCBased' ICCBased PDF ICCBased
|
25062
25146
|
|
25063
|
-
=head3 PDF
|
25147
|
+
=head3 PDF ICCBased Tags
|
25064
25148
|
|
25065
25149
|
Tag ID Tag Name Writable
|
25066
25150
|
------ -------- --------
|
25067
|
-
'
|
25151
|
+
'_stream' _stream ICC_Profile
|
25068
25152
|
|
25069
25153
|
=head3 PDF Properties Tags
|
25070
25154
|
|
@@ -26079,6 +26163,11 @@ the PrintConv option is enabled and no time zone is specified. This is
|
|
26079
26163
|
because Apple software may display crazy values if the time zone is missing
|
26080
26164
|
for some tags.
|
26081
26165
|
|
26166
|
+
By default ExifTool will remove null padding from some QuickTime containers
|
26167
|
+
in Canon CR3 files when writing, but the
|
26168
|
+
QuickTimePad option may be used to preserve
|
26169
|
+
the original size by padding with nulls if necessary.
|
26170
|
+
|
26082
26171
|
See
|
26083
26172
|
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
|
26084
26173
|
for the official specification.
|
@@ -35464,6 +35553,7 @@ FileName.
|
|
35464
35553
|
XMP XMP yes!
|
35465
35554
|
XResolution File no
|
35466
35555
|
YResolution File no
|
35556
|
+
ZoneIdentifier System yes!
|
35467
35557
|
|
35468
35558
|
=head2 Composite Tags
|
35469
35559
|
|
@@ -1067,6 +1067,9 @@ sub WriteQuickTime($$$)
|
|
1067
1067
|
# 3=optional base offset, 4=optional item ID)
|
1068
1068
|
ChunkOffset => \@chunkOffset,
|
1069
1069
|
);
|
1070
|
+
# set InPlace flag so XMP will be padded properly when
|
1071
|
+
# QuickTimePad is used if this is an XMP directory
|
1072
|
+
$subdirInfo{InPlace} = 2 if $et->Options('QuickTimePad');
|
1070
1073
|
# pass the header pointer if necessary (for EXIF IFD's
|
1071
1074
|
# where the Base offset is at the end of the header)
|
1072
1075
|
if ($hdrLen and $hdrLen < $size) {
|
@@ -1331,6 +1334,13 @@ sub WriteQuickTime($$$)
|
|
1331
1334
|
}
|
1332
1335
|
# write the new atom if it was modified
|
1333
1336
|
if (defined $newData) {
|
1337
|
+
my $sizeDiff = length($buff) - length($newData);
|
1338
|
+
if ($sizeDiff > 0 and $$tagInfo{PreservePadding} and $et->Options('QuickTimePad')) {
|
1339
|
+
$newData .= "\0" x $sizeDiff;
|
1340
|
+
$et->VPrint(1, " ($$tagInfo{Name} padded to original size)");
|
1341
|
+
} elsif ($sizeDiff) {
|
1342
|
+
$et->VPrint(1, " ($$tagInfo{Name} changed size)");
|
1343
|
+
}
|
1334
1344
|
my $len = length($newData) + 8;
|
1335
1345
|
$len > 0x7fffffff and $et->Error("$$tagInfo{Name} to large to write"), last;
|
1336
1346
|
# update size in ChunkOffset list for modified 'uuid' atom
|
@@ -2074,6 +2074,46 @@ sub SetSystemTags($$)
|
|
2074
2074
|
last;
|
2075
2075
|
}
|
2076
2076
|
}
|
2077
|
+
# delete Windows Zone.Identifier if specified
|
2078
|
+
my $zhash = $self->GetNewValueHash($Image::ExifTool::Extra{ZoneIdentifier});
|
2079
|
+
if ($zhash) {
|
2080
|
+
my $res = -1;
|
2081
|
+
if ($^O ne 'MSWin32') {
|
2082
|
+
$self->Warn('ZoneIdentifer is a Windows-only tag');
|
2083
|
+
} elsif (ref $file) {
|
2084
|
+
$self->Warn('Writing ZoneIdentifer requires a file name');
|
2085
|
+
} elsif (defined $self->GetNewValue('ZoneIdentifier', \$zhash)) {
|
2086
|
+
$self->Warn('ZoneIndentifier may only be delted');
|
2087
|
+
} elsif (not eval { require Win32API::File }) {
|
2088
|
+
$self->Warn('Install Win32API::File to write ZoneIdentifier');
|
2089
|
+
} else {
|
2090
|
+
my ($wattr, $wide);
|
2091
|
+
my $zfile = "${file}:Zone.Identifier";
|
2092
|
+
if ($self->EncodeFileName($zfile)) {
|
2093
|
+
$wide = 1;
|
2094
|
+
$wattr = eval { Win32API::File::GetFileAttributesW($zfile) };
|
2095
|
+
} else {
|
2096
|
+
$wattr = eval { Win32API::File::GetFileAttributes($zfile) };
|
2097
|
+
}
|
2098
|
+
if ($wattr == Win32API::File::INVALID_FILE_ATTRIBUTES()) {
|
2099
|
+
$res = 0; # file doesn't exist, nothing to do
|
2100
|
+
} elsif ($wattr & Win32API::File::FILE_ATTRIBUTE_READONLY()) {
|
2101
|
+
$self->Warn('Zone.Identifier stream is read-only');
|
2102
|
+
} else {
|
2103
|
+
if ($wide) {
|
2104
|
+
$res = 1 if eval { Win32API::File::DeleteFileW($zfile) };
|
2105
|
+
} else {
|
2106
|
+
$res = 1 if eval { Win32API::File::DeleteFile($zfile) };
|
2107
|
+
}
|
2108
|
+
if ($res > 0) {
|
2109
|
+
$self->VPrint(0, " Deleting Zone.Identifier stream\n");
|
2110
|
+
} else {
|
2111
|
+
$self->Warn('Error deleting Zone.Identifier stream');
|
2112
|
+
}
|
2113
|
+
}
|
2114
|
+
}
|
2115
|
+
$result = $res if $res == 1 or not $result;
|
2116
|
+
}
|
2077
2117
|
return $result;
|
2078
2118
|
}
|
2079
2119
|
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
require Exporter;
|
52
52
|
|
53
|
-
$VERSION = '3.
|
53
|
+
$VERSION = '3.47';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -2142,8 +2142,8 @@ my %sPantryItem = (
|
|
2142
2142
|
NAMESPACE => 'exifEX',
|
2143
2143
|
PRIORITY => 0, # not as reliable as actual EXIF tags
|
2144
2144
|
NOTES => q{
|
2145
|
-
EXIF tags added by the EXIF 2.
|
2146
|
-
L<
|
2145
|
+
EXIF tags added by the EXIF 2.32 for XMP specification (see
|
2146
|
+
L<https://cipa.jp/std/documents/download_e.html?DC-010-2020_E>).
|
2147
2147
|
},
|
2148
2148
|
Gamma => { Writable => 'rational' },
|
2149
2149
|
PhotographicSensitivity => { Writable => 'integer' },
|
@@ -2349,8 +2349,9 @@ my %sPantryItem = (
|
|
2349
2349
|
Scene => { Groups => { 2 => 'Other' }, List => 'Bag' },
|
2350
2350
|
SubjectCode => { Groups => { 2 => 'Other' }, List => 'Bag' },
|
2351
2351
|
# Copyright - have seen this in a sample (Jan 2021), but I think it is non-standard
|
2352
|
-
|
2353
|
-
|
2352
|
+
# new IPTC Core 1.3 properties
|
2353
|
+
AltTextAccessibility => { Groups => { 2 => 'Other' }, Writable => 'lang-alt' },
|
2354
|
+
ExtDescrAccessibility => { Groups => { 2 => 'Other' }, Writable => 'lang-alt' },
|
2354
2355
|
);
|
2355
2356
|
|
2356
2357
|
# Adobe Lightroom namespace properties (lr) (ref PH)
|
@@ -3975,14 +3976,16 @@ sub ProcessXMP($$;$)
|
|
3975
3976
|
} elsif ($buf2 =~ /<plist[\s>]/) {
|
3976
3977
|
$type = 'PLIST';
|
3977
3978
|
}
|
3978
|
-
if ($isSVG and $$et{XMP_CAPTURE}) {
|
3979
|
-
$et->Error("ExifTool does not yet support writing of SVG images");
|
3980
|
-
return 0;
|
3981
|
-
}
|
3982
3979
|
}
|
3983
3980
|
$isXML = 1;
|
3984
3981
|
} elsif ($2 eq '<rdf:RDF') {
|
3985
3982
|
$isRDF = 1; # recognize XMP without x:xmpmeta element
|
3983
|
+
} elsif ($2 eq '<svg') {
|
3984
|
+
$isSVG = $isXML = 1;
|
3985
|
+
}
|
3986
|
+
if ($isSVG and $$et{XMP_CAPTURE}) {
|
3987
|
+
$et->Error("ExifTool does not yet support writing of SVG images");
|
3988
|
+
return 0;
|
3986
3989
|
}
|
3987
3990
|
if ($buff =~ /^\0\0/) {
|
3988
3991
|
$fmt = 'N'; # UTF-32 MM with or without BOM
|
@@ -797,7 +797,8 @@ my %sImageRegion = ( # new in 1.5
|
|
797
797
|
audioBitsPerSample => { Groups => { 2 => 'Audio' }, Writable => 'integer' },
|
798
798
|
# new IPTC Extension schema 1.5 property
|
799
799
|
ImageRegion => { Groups => { 2 => 'Image' }, List => 'Bag', Struct => \%sImageRegion },
|
800
|
-
|
800
|
+
# new Extension 1.6 property
|
801
|
+
EventId => { Name => 'EventID', List => 'Bag' },
|
801
802
|
);
|
802
803
|
|
803
804
|
#------------------------------------------------------------------------------
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exePath
|
30
30
|
%static_vars);
|
31
31
|
|
32
|
-
$VERSION = '12.
|
32
|
+
$VERSION = '12.34';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -909,7 +909,7 @@ $testLen = 1024; # number of bytes to read when testing for magic number
|
|
909
909
|
GZIP => '\x1f\x8b\x08',
|
910
910
|
HDR => '#\?(RADIANCE|RGBE)\x0a',
|
911
911
|
HTML => '(\xef\xbb\xbf)?\s*(?i)<(!DOCTYPE\s+HTML|HTML|\?xml)', # (case insensitive)
|
912
|
-
ICC => '.{12}(scnr|mntr|prtr|link|spac|abst|nmcl|nkpf)(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR){2}',
|
912
|
+
ICC => '.{12}(scnr|mntr|prtr|link|spac|abst|nmcl|nkpf|cenc|mid |mlnk|mvis)(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR|nc..|\0{4}){2}',
|
913
913
|
IND => '\x06\x06\xed\xf5\xd8\x1d\x46\xe5\xbd\x31\xef\xe7\xfe\x74\xb7\x1d',
|
914
914
|
# ISO => signature is at byte 32768
|
915
915
|
ITC => '.{4}itch',
|
@@ -1208,6 +1208,18 @@ my %systemTagsNotes = (
|
|
1208
1208
|
},
|
1209
1209
|
PrintConv => \&ConvertFileSize,
|
1210
1210
|
},
|
1211
|
+
ZoneIdentifier => {
|
1212
|
+
Groups => { 1 => 'System', 2 => 'Other' },
|
1213
|
+
Notes => q{
|
1214
|
+
Windows only. Used to indicate that a file has a Zone.Identifier alternate
|
1215
|
+
data stream, which is used by some Windows browsers to mark downloaded files
|
1216
|
+
as possibly unsafe to run. May be deleted to remove this stream. Requires
|
1217
|
+
Win32API::File
|
1218
|
+
},
|
1219
|
+
Writable => 1,
|
1220
|
+
WritePseudo => 1,
|
1221
|
+
Protected => 1,
|
1222
|
+
},
|
1211
1223
|
FileType => {
|
1212
1224
|
Groups => { 2 => 'Other' },
|
1213
1225
|
Notes => q{
|
@@ -2320,6 +2332,7 @@ sub ClearOptions($)
|
|
2320
2332
|
Password => undef, # password for password-protected PDF documents
|
2321
2333
|
PrintConv => 1, # flag to enable print conversion
|
2322
2334
|
QuickTimeHandler => 1, # flag to add mdir Handler to newly created Meta box
|
2335
|
+
QuickTimePad=> undef, # flag to preserve padding of QuickTime CR3 tags
|
2323
2336
|
QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
|
2324
2337
|
RequestAll => undef, # extract all tags that must be specifically requested
|
2325
2338
|
RequestTags => undef, # extra tags to request (on top of those in the tag list)
|
@@ -2369,7 +2382,7 @@ sub ExtractInfo($;@)
|
|
2369
2382
|
my $fast = $$options{FastScan} || 0;
|
2370
2383
|
my $req = $$self{REQ_TAG_LOOKUP};
|
2371
2384
|
my $reqAll = $$options{RequestAll} || 0;
|
2372
|
-
my (%saveOptions, $reEntry, $rsize, $type, @startTime, $saveOrder, $isDir);
|
2385
|
+
my (%saveOptions, $reEntry, $rsize, $zid, $type, @startTime, $saveOrder, $isDir);
|
2373
2386
|
|
2374
2387
|
# check for internal ReEntry option to allow recursive calls to ExtractInfo
|
2375
2388
|
if (ref $_[1] eq 'HASH' and $_[1]{ReEntry} and
|
@@ -2461,6 +2474,17 @@ sub ExtractInfo($;@)
|
|
2461
2474
|
}
|
2462
2475
|
# get size of resource fork on Mac OS
|
2463
2476
|
$rsize = -s "$filename/..namedfork/rsrc" if $^O eq 'darwin' and not $$self{IN_RESOURCE};
|
2477
|
+
# check to see if Zone.Identifier file exists in Windows
|
2478
|
+
if ($^O eq 'MSWin32' and eval { require Win32API::File }) {
|
2479
|
+
my $wattr;
|
2480
|
+
my $zfile = "${filename}:Zone.Identifier";
|
2481
|
+
if ($self->EncodeFileName($zfile)) {
|
2482
|
+
$wattr = eval { Win32API::File::GetFileAttributesW($zfile) };
|
2483
|
+
} else {
|
2484
|
+
$wattr = eval { Win32API::File::GetFileAttributes($zfile) };
|
2485
|
+
}
|
2486
|
+
$zid = 1 unless $wattr == Win32API::File::INVALID_FILE_ATTRIBUTES();
|
2487
|
+
}
|
2464
2488
|
}
|
2465
2489
|
# open the file
|
2466
2490
|
if ($self->Open(\*EXIFTOOL_FILE, $filename)) {
|
@@ -2503,6 +2527,7 @@ sub ExtractInfo($;@)
|
|
2503
2527
|
my $fileSize = $stat[7];
|
2504
2528
|
$self->FoundTag('FileSize', $stat[7]) if defined $stat[7];
|
2505
2529
|
$self->FoundTag('ResourceForkSize', $rsize) if $rsize;
|
2530
|
+
$self->FoundTag('ZoneIdentifier', 'Exists') if $zid;
|
2506
2531
|
$self->FoundTag('FileModifyDate', $stat[9]) if defined $stat[9];
|
2507
2532
|
$self->FoundTag('FileAccessDate', $stat[8]) if defined $stat[8];
|
2508
2533
|
my $cTag = $^O eq 'MSWin32' ? 'FileCreateDate' : 'FileInodeChangeDate';
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -860,6 +860,14 @@ commonly found in samples from other software, and it has been reported that
|
|
860
860
|
Apple QuickTime Player and Photos.apps will ignore ItemList tags if this is
|
861
861
|
missing. Default is 1.
|
862
862
|
|
863
|
+
=item QuickTimePad
|
864
|
+
|
865
|
+
Flag to preserve the padding of some QuickTime atoms when writing.
|
866
|
+
QuickTime-based Canon CR3 files pad the values of container atoms with null
|
867
|
+
bytes. This padding is removed by default when the file is rewritten, but
|
868
|
+
setting this option to 1 adds padding to preserve the original atom size if
|
869
|
+
the new atom would be smaller than the original. Default is undef.
|
870
|
+
|
863
871
|
=item QuickTimeUTC
|
864
872
|
|
865
873
|
Flag set to assume that QuickTime date/time values are stored as UTC,
|
@@ -1236,7 +1244,7 @@ The following ExifTool options are effective in the call to L</WriteInfo>:
|
|
1236
1244
|
|
1237
1245
|
ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact,
|
1238
1246
|
Compress, FixBase, IgnoreMinorErrors, NoMultiExif, NoPDFList, Password,
|
1239
|
-
QuickTimeHandler, Verbose and WriteMode.
|
1247
|
+
QuickTimeHandler, QuickTimePad, Verbose and WriteMode.
|
1240
1248
|
|
1241
1249
|
=head2 GetTagList
|
1242
1250
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool_vendored
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.
|
4
|
+
version: 12.34.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-10-
|
12
|
+
date: 2021-10-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|