exiftool-vendored.pl 12.33.0 → 12.34.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.
- package/bin/Changes +18 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/exiftool +5 -3
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -1
- package/bin/lib/Image/ExifTool/Canon.pm +14 -2
- package/bin/lib/Image/ExifTool/Charset.pm +2 -0
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
- package/bin/lib/Image/ExifTool/PDF.pm +5 -3
- package/bin/lib/Image/ExifTool/QuickTime.pm +4 -2
- package/bin/lib/Image/ExifTool/README +4 -0
- package/bin/lib/Image/ExifTool/Sony.pm +27 -11
- package/bin/lib/Image/ExifTool/TagLookup.pm +81 -1
- package/bin/lib/Image/ExifTool/TagNames.pod +100 -10
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -0
- package/bin/lib/Image/ExifTool/Writer.pl +40 -0
- package/bin/lib/Image/ExifTool/XMP.pm +12 -9
- package/bin/lib/Image/ExifTool/XMP2.pl +2 -1
- package/bin/lib/Image/ExifTool.pm +28 -3
- package/bin/lib/Image/ExifTool.pod +9 -1
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +1 -1
package/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
|
package/bin/META.json
CHANGED
package/bin/META.yml
CHANGED
package/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.
|
package/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
|
#------------------------------------------------------------------------------
|
|
@@ -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';
|
|
@@ -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
|
|
package/bin/pp_build_exe.args
CHANGED
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
# 10) Copy zip archive to web servers.
|
|
22
22
|
# 11) Update zip file version in link and text of html/index.html.
|
|
23
23
|
#------------------------------------------------------------------------------
|
|
24
|
-
-T exiftool-12.
|
|
25
|
-
#--info=FileVersion=12.3.
|
|
26
|
-
#--info=ProductVersion=12.3.
|
|
27
|
-
##"--info=Build Date=2021:10:
|
|
24
|
+
-T exiftool-12.34
|
|
25
|
+
#--info=FileVersion=12.3.4.0
|
|
26
|
+
#--info=ProductVersion=12.3.4.0
|
|
27
|
+
##"--info=Build Date=2021:10:27 11:53:38-04:00"
|
|
28
28
|
##"--info=Bundled Perl Version=ActivePerl 5.24.0"
|
|
29
29
|
##"--info=LegalCopyright=Copyright (c) 2003-2021, Phil Harvey"
|
|
30
30
|
##"--info=ProductName=ExifTool"
|