exiftool_vendored 12.17.1 → 12.32.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 +225 -1
- data/bin/MANIFEST +23 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +45 -43
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/config_files/acdsee.config +193 -6
- data/bin/config_files/convert_regions.config +25 -14
- data/bin/config_files/cuepointlist.config +70 -0
- data/bin/config_files/example.config +2 -9
- data/bin/exiftool +142 -87
- data/bin/fmt_files/gpx.fmt +2 -2
- data/bin/fmt_files/gpx_wpt.fmt +2 -2
- data/bin/fmt_files/kml.fmt +1 -1
- data/bin/fmt_files/kml_track.fmt +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +3 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +30 -12
- data/bin/lib/Image/ExifTool/CBOR.pm +277 -0
- data/bin/lib/Image/ExifTool/Canon.pm +49 -18
- data/bin/lib/Image/ExifTool/DJI.pm +6 -6
- data/bin/lib/Image/ExifTool/DPX.pm +13 -2
- data/bin/lib/Image/ExifTool/DjVu.pm +6 -5
- data/bin/lib/Image/ExifTool/Exif.pm +28 -11
- data/bin/lib/Image/ExifTool/FITS.pm +13 -2
- data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
- data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
- data/bin/lib/Image/ExifTool/GPS.pm +22 -11
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
- data/bin/lib/Image/ExifTool/ID3.pm +15 -3
- data/bin/lib/Image/ExifTool/JPEG.pm +74 -4
- data/bin/lib/Image/ExifTool/JSON.pm +27 -4
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +393 -16
- data/bin/lib/Image/ExifTool/LIF.pm +153 -0
- data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
- data/bin/lib/Image/ExifTool/M2TS.pm +137 -5
- data/bin/lib/Image/ExifTool/MIE.pm +4 -3
- data/bin/lib/Image/ExifTool/MRC.pm +341 -0
- data/bin/lib/Image/ExifTool/MWG.pm +3 -3
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +298 -82
- data/bin/lib/Image/ExifTool/Nikon.pm +19 -8
- data/bin/lib/Image/ExifTool/NikonSettings.pm +28 -11
- data/bin/lib/Image/ExifTool/Olympus.pm +6 -3
- data/bin/lib/Image/ExifTool/Other.pm +93 -0
- data/bin/lib/Image/ExifTool/PDF.pm +9 -12
- data/bin/lib/Image/ExifTool/PNG.pm +8 -7
- data/bin/lib/Image/ExifTool/Panasonic.pm +28 -3
- data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
- data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -3
- data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +247 -88
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +283 -141
- data/bin/lib/Image/ExifTool/README +3 -0
- data/bin/lib/Image/ExifTool/RIFF.pm +89 -12
- data/bin/lib/Image/ExifTool/Samsung.pm +48 -10
- data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -0
- data/bin/lib/Image/ExifTool/Sony.pm +237 -78
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4125 -4028
- data/bin/lib/Image/ExifTool/TagNames.pod +644 -286
- data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
- data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +55 -21
- data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -3
- data/bin/lib/Image/ExifTool/Writer.pl +47 -10
- data/bin/lib/Image/ExifTool/XMP.pm +39 -14
- data/bin/lib/Image/ExifTool/XMP2.pl +2 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
- data/bin/lib/Image/ExifTool.pm +223 -72
- data/bin/lib/Image/ExifTool.pod +114 -93
- data/bin/perl-Image-ExifTool.spec +43 -42
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +28 -13
@@ -17,7 +17,7 @@ use strict;
|
|
17
17
|
use vars qw($VERSION);
|
18
18
|
use Image::ExifTool qw(:DataAccess :Utils);
|
19
19
|
|
20
|
-
$VERSION = '1.
|
20
|
+
$VERSION = '1.04';
|
21
21
|
|
22
22
|
sub ProcessNikonSettings($$$);
|
23
23
|
|
@@ -592,7 +592,7 @@ my %infoD6 = (
|
|
592
592
|
},
|
593
593
|
},
|
594
594
|
0x026 => { Name => 'AF-AssistIlluminator', PrintConv => \%onOff }, # CSa11 (Z7_2)
|
595
|
-
|
595
|
+
0x027 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%onOff }, # CSa12 (D6,Z7_2) capability documented in manual, but visibility (& ability to test) requires a compatible lens
|
596
596
|
0x029 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1 (D6)
|
597
597
|
0x02a => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull }, # CSb2 (D6), CSb1 (Z7_2)
|
598
598
|
0x02b => { # CSb4 (D6), CSb2 (Z7_2)
|
@@ -911,14 +911,14 @@ my %infoD6 = (
|
|
911
911
|
},
|
912
912
|
0x05a => [{ # CSf6-b-1 and CSf6-b-2 (D6), CSf5-b-1 and CSf5-b-2 (Z7_2), (continued from above)
|
913
913
|
Name => 'CmdDialsChangeMainSub',
|
914
|
-
Condition => '$$self{CmdDialsChangeMainSubExposure} == 1',
|
914
|
+
Condition => '$$self{CmdDialsChangeMainSubExposure} and $$self{CmdDialsChangeMainSubExposure} == 1',
|
915
915
|
PrintConv => {
|
916
916
|
1 => 'Autofocus On, Exposure On',
|
917
917
|
2 => 'Autofocus Off, Exposure On',
|
918
918
|
},
|
919
919
|
},{
|
920
920
|
Name => 'CmdDialsChangeMainSub',
|
921
|
-
Condition => '$$self{CmdDialsChangeMainSubExposure} == 2',
|
921
|
+
Condition => '$$self{CmdDialsChangeMainSubExposure} and $$self{CmdDialsChangeMainSubExposure} == 2',
|
922
922
|
PrintConv => {
|
923
923
|
1 => 'Autofocus On, Exposure On (Mode A)',
|
924
924
|
2 => 'Autofocus Off, Exposure On (Mode A)',
|
@@ -1014,7 +1014,7 @@ my %infoD6 = (
|
|
1014
1014
|
}],
|
1015
1015
|
0x08b => [{ # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), (continued from above)
|
1016
1016
|
Name => 'CmdDialsReverseRotation',
|
1017
|
-
Condition => '$$self{CmdDialsReverseRotExposureComp} == 1',
|
1017
|
+
Condition => '$$self{CmdDialsReverseRotExposureComp} and $$self{CmdDialsReverseRotExposureComp} == 1',
|
1018
1018
|
PrintConv => {
|
1019
1019
|
1 => 'No',
|
1020
1020
|
2 => 'Shutter Speed & Aperture',
|
@@ -1313,7 +1313,7 @@ my %infoD6 = (
|
|
1313
1313
|
1 => 'Power Aperture (Open)',
|
1314
1314
|
2 => 'Exposure Compensation',
|
1315
1315
|
3 => 'Subject Tracking',
|
1316
|
-
4 => 'LiveView Info Display On/Off
|
1316
|
+
4 => 'LiveView Info Display On/Off',
|
1317
1317
|
5 => 'Grid Display',
|
1318
1318
|
6 => 'Zoom (Low)',
|
1319
1319
|
7 => 'Zoom (1:1)',
|
@@ -1357,7 +1357,7 @@ my %infoD6 = (
|
|
1357
1357
|
1 => 'Power Aperture (Close)',
|
1358
1358
|
2 => 'Exposure Compensation',
|
1359
1359
|
3 => 'Subject Tracking',
|
1360
|
-
4 => 'LiveView Info Display On/Off
|
1360
|
+
4 => 'LiveView Info Display On/Off',
|
1361
1361
|
5 => 'Grid Display',
|
1362
1362
|
6 => 'Zoom (Low)',
|
1363
1363
|
7 => 'Zoom (1:1)',
|
@@ -1578,7 +1578,7 @@ my %infoD6 = (
|
|
1578
1578
|
},
|
1579
1579
|
},{
|
1580
1580
|
Name => 'BracketProgram',
|
1581
|
-
Condition => '$$self{BracketSet} == 4',
|
1581
|
+
Condition => '$$self{BracketSet} and $$self{BracketSet} == 4',
|
1582
1582
|
Notes => 'White Balance Bracketing',
|
1583
1583
|
RawConv => '$$self{BracketProgram} = $val',
|
1584
1584
|
PrintConv => {
|
@@ -1595,7 +1595,7 @@ my %infoD6 = (
|
|
1595
1595
|
},
|
1596
1596
|
},{
|
1597
1597
|
Name => 'BracketProgram',
|
1598
|
-
Condition => '$$self{BracketSet} == 5',
|
1598
|
+
Condition => '$$self{BracketSet} and $$self{BracketSet} == 5',
|
1599
1599
|
Notes => 'Active-D Bracketing',
|
1600
1600
|
RawConv => '$$self{BracketProgram} = $val',
|
1601
1601
|
Mask => 0x0f,
|
@@ -1802,9 +1802,9 @@ my %infoD6 = (
|
|
1802
1802
|
},
|
1803
1803
|
},
|
1804
1804
|
0x139 => { Name => 'PlaybackFlickUp', RawConv => '$$self{PlaybackFlickUp} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-1-a # (D6)
|
1805
|
-
0x13a => { Name => 'PlaybackFlickUpRating', Condition => '$$self{PlaybackFlickUp} == 1', Notes => 'Meaningful only when PlaybackFlickUp is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-1-b # (D6)
|
1805
|
+
0x13a => { Name => 'PlaybackFlickUpRating', Condition => '$$self{PlaybackFlickUp} and $$self{PlaybackFlickUp} == 1', Notes => 'Meaningful only when PlaybackFlickUp is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-1-b # (D6)
|
1806
1806
|
0x13b => { Name => 'PlaybackFlickDown', RawConv => '$$self{PlaybackFlickDown} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-2-a # (D6)
|
1807
|
-
0x13c => { Name => 'PlaybackFlickDownRating', Condition => '$$self{PlaybackFlickDown} == 1', Notes => 'Meaningful only when PlaybackFlickDown is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-2-b # (D6)
|
1807
|
+
0x13c => { Name => 'PlaybackFlickDownRating', Condition => '$$self{PlaybackFlickDown} and $$self{PlaybackFlickDown} == 1', Notes => 'Meaningful only when PlaybackFlickDown is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-2-b # (D6)
|
1808
1808
|
0x13d => { # CSg2-d (D6)
|
1809
1809
|
Name => 'MovieFunc3Button',
|
1810
1810
|
PrintConv => {
|
@@ -1919,6 +1919,23 @@ my %infoD6 = (
|
|
1919
1919
|
10 => 'Auto (Animals)',
|
1920
1920
|
},
|
1921
1921
|
},
|
1922
|
+
0x170 => { Name => 'PreferSubSelectorCenter', PrintConv => \%offOn }, # CSf13 (D6 firmware v1.2.0)
|
1923
|
+
0x171 => { # CSb8 (D6 firmware v1.3.0)
|
1924
|
+
Name => 'KeepExposureWithTeleconverter',
|
1925
|
+
PrintConv => {
|
1926
|
+
1 => 'Off',
|
1927
|
+
2 => 'Shutter Speed',
|
1928
|
+
3 => 'ISO',
|
1929
|
+
},
|
1930
|
+
},
|
1931
|
+
0x174 => { # CSa17-d (D6 firmware v1.2.0)
|
1932
|
+
Name => 'FocusPointSelectionSpeed',
|
1933
|
+
PrintConv => {
|
1934
|
+
1 => 'Normal',
|
1935
|
+
2 => 'High',
|
1936
|
+
3 => 'Very High',
|
1937
|
+
},
|
1938
|
+
},
|
1922
1939
|
);
|
1923
1940
|
|
1924
1941
|
#------------------------------------------------------------------------------
|
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
40
40
|
use Image::ExifTool::Exif;
|
41
41
|
use Image::ExifTool::APP12;
|
42
42
|
|
43
|
-
$VERSION = '2.
|
43
|
+
$VERSION = '2.74';
|
44
44
|
|
45
45
|
sub PrintLensInfo($$$);
|
46
46
|
|
@@ -113,6 +113,8 @@ my %olympusLensTypes = (
|
|
113
113
|
'0 34 00' => 'Olympus Zuiko Digital ED 9-18mm F4.0-5.6', #7
|
114
114
|
'0 34 10' => 'Olympus M.Zuiko Digital ED 12-45mm F4.0 Pro', #IB
|
115
115
|
'0 35 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5 II', #PH
|
116
|
+
'0 35 10' => 'Olympus M.Zuiko 100-400mm F5.0-6.3', #IB
|
117
|
+
'0 36 10' => 'Olympus M.Zuiko Digital ED 8-25mm F4 Pro', #IB
|
116
118
|
# Sigma lenses
|
117
119
|
'1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
|
118
120
|
'1 01 10' => 'Sigma 30mm F2.8 EX DN', #NJ
|
@@ -138,7 +140,6 @@ my %olympusLensTypes = (
|
|
138
140
|
'1 15 00' => 'Sigma 10-20mm F4.0-5.6 EX DC HSM', #11
|
139
141
|
'1 16 00' => 'Sigma APO 70-200mm F2.8 II EX DG Macro HSM', #11
|
140
142
|
'1 17 00' => 'Sigma 50mm F1.4 EX DG HSM', #11
|
141
|
-
'1 18 60' => 'Test',
|
142
143
|
# Panasonic/Leica lenses
|
143
144
|
'2 01 00' => 'Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.', #11
|
144
145
|
'2 01 10' => 'Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS', #16
|
@@ -183,6 +184,7 @@ my %olympusLensTypes = (
|
|
183
184
|
'2 36 10' => 'Leica DG Elmarit 200mm F2.8 Power OIS', #IB
|
184
185
|
'2 37 10' => 'Leica DG Vario-Elmarit 50-200mm F2.8-4 Asph. Power OIS', #IB
|
185
186
|
'2 38 10' => 'Leica DG Vario-Summilux 10-25mm F1.7 Asph.', #IB
|
187
|
+
'2 40 10' => 'Leica DG Vario-Summilux 25-50mm F1.7 Asph.', #IB (H-X2550)
|
186
188
|
'3 01 00' => 'Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.', #11
|
187
189
|
'3 02 00' => 'Leica D Summilux 25mm F1.4 Asph.', #11
|
188
190
|
# Tamron lenses
|
@@ -429,6 +431,7 @@ my %olympusCameraTypes = (
|
|
429
431
|
S0085 => 'E-PL10', #IB
|
430
432
|
S0089 => 'E-M5MarkIII',
|
431
433
|
S0092 => 'E-M1MarkIII', #IB
|
434
|
+
S0093 => 'E-P7', #IB
|
432
435
|
SR45 => 'D220',
|
433
436
|
SR55 => 'D320L',
|
434
437
|
SR83 => 'D340L',
|
@@ -3952,7 +3955,7 @@ my %indexInfo = (
|
|
3952
3955
|
1 => 'LensTypeModel',
|
3953
3956
|
},
|
3954
3957
|
Notes => 'based on tags found in some Panasonic RW2 images',
|
3955
|
-
SeparateTable => 'LensType',
|
3958
|
+
SeparateTable => 'Olympus LensType',
|
3956
3959
|
ValueConv => '"$val[0] $val[1]"',
|
3957
3960
|
PrintConv => \%olympusLensTypes,
|
3958
3961
|
},
|
@@ -0,0 +1,93 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# File: Other.pm
|
3
|
+
#
|
4
|
+
# Description: Read meta information from other uncommon formats
|
5
|
+
#
|
6
|
+
# Revisions: 2021/07/16 - P. Harvey Created
|
7
|
+
#
|
8
|
+
# References: 1) PFM - http://www.pauldebevec.com/Research/HDR/PFM/
|
9
|
+
#------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
package Image::ExifTool::Other;
|
12
|
+
|
13
|
+
use strict;
|
14
|
+
use vars qw($VERSION);
|
15
|
+
use Image::ExifTool qw(:DataAccess :Utils);
|
16
|
+
use Image::ExifTool::Exif;
|
17
|
+
|
18
|
+
$VERSION = '1.00';
|
19
|
+
|
20
|
+
# Other info
|
21
|
+
%Image::ExifTool::Other::PFM = (
|
22
|
+
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
|
23
|
+
VARS => { NO_ID => 1 },
|
24
|
+
NOTES => q{
|
25
|
+
Tags extracted from Portable FloatMap images. See
|
26
|
+
L<http://www.pauldebevec.com/Research/HDR/PFM/> for the specification.
|
27
|
+
},
|
28
|
+
ColorSpace => { PrintConv => { PF => 'RGB', 'Pf' => 'Monochrome'} },
|
29
|
+
ImageWidth => { },
|
30
|
+
ImageHeight => { },
|
31
|
+
ByteOrder => { PrintConv => '$val > 0 ? "Big-endian" : "Little-endian"' },
|
32
|
+
);
|
33
|
+
|
34
|
+
#------------------------------------------------------------------------------
|
35
|
+
# Extract information from a Portable FloatMap image
|
36
|
+
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
37
|
+
# Returns: 1 on success, 0 if this wasn't a valid PFM file
|
38
|
+
sub ProcessPFM2($$)
|
39
|
+
{
|
40
|
+
my ($et, $dirInfo) = @_;
|
41
|
+
my $raf = $$dirInfo{RAF};
|
42
|
+
my $buff;
|
43
|
+
return 0 unless $raf->Read($buff, 256) and $buff =~ /^(P[Ff])\x0a(\d+) (\d+)\x0a([-+0-9.]+)\x0a/;
|
44
|
+
$et->SetFileType('PFM', 'image/x-pfm');
|
45
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::Other::PFM');
|
46
|
+
$et->HandleTag($tagTablePtr, ColorSpace => $1);
|
47
|
+
$et->HandleTag($tagTablePtr, ImageWidth => $2);
|
48
|
+
$et->HandleTag($tagTablePtr, ImageHeight => $3);
|
49
|
+
$et->HandleTag($tagTablePtr, ByteOrder => $4);
|
50
|
+
# hack to set proper file description (extension is the same for Printer Font Metrics files)
|
51
|
+
$Image::ExifTool::static_vars{OverrideFileDescription}{PFM} = 'Portable FloatMap',
|
52
|
+
return 1;
|
53
|
+
}
|
54
|
+
|
55
|
+
1; # end
|
56
|
+
|
57
|
+
__END__
|
58
|
+
|
59
|
+
=head1 NAME
|
60
|
+
|
61
|
+
Image::ExifTool::Other - Read meta information from other uncommon formats
|
62
|
+
|
63
|
+
=head1 SYNOPSIS
|
64
|
+
|
65
|
+
This module is used by Image::ExifTool
|
66
|
+
|
67
|
+
=head1 DESCRIPTION
|
68
|
+
|
69
|
+
This module contains routines required by Image::ExifTool to extract
|
70
|
+
information from Portable FloatMap (PFM) images.
|
71
|
+
|
72
|
+
=head1 AUTHOR
|
73
|
+
|
74
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
75
|
+
|
76
|
+
This library is free software; you can redistribute it and/or modify it
|
77
|
+
under the same terms as Perl itself.
|
78
|
+
|
79
|
+
=head1 REFERENCES
|
80
|
+
|
81
|
+
=over 4
|
82
|
+
|
83
|
+
=item PFM L<http://www.pauldebevec.com/Research/HDR/PFM/>
|
84
|
+
|
85
|
+
=back
|
86
|
+
|
87
|
+
=head1 SEE ALSO
|
88
|
+
|
89
|
+
L<Image::ExifTool::TagNames/Other Tags>,
|
90
|
+
L<Image::ExifTool(3pm)|Image::ExifTool>
|
91
|
+
|
92
|
+
=cut
|
93
|
+
|
@@ -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.53';
|
25
25
|
|
26
26
|
sub FetchObject($$$$);
|
27
27
|
sub ExtractObject($$;$$);
|
@@ -280,7 +280,10 @@ my %supportedFilter = (
|
|
280
280
|
ConvertToDict => 1,
|
281
281
|
},
|
282
282
|
Cs1 => {
|
283
|
-
SubDirectory => { TagTable => 'Image::ExifTool::PDF::
|
283
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PDF::ICCBased' },
|
284
|
+
},
|
285
|
+
CS0 => {
|
286
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PDF::ICCBased' },
|
284
287
|
},
|
285
288
|
);
|
286
289
|
|
@@ -291,14 +294,7 @@ my %supportedFilter = (
|
|
291
294
|
},
|
292
295
|
);
|
293
296
|
|
294
|
-
# tags in PDF Cs1
|
295
|
-
%Image::ExifTool::PDF::Cs1 = (
|
296
|
-
_stream => {
|
297
|
-
SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::Main' },
|
298
|
-
},
|
299
|
-
);
|
300
|
-
|
301
|
-
# tags in PDF ICCBased dictionary
|
297
|
+
# tags in PDF ICCBased, Cs1 and CS0 dictionaries
|
302
298
|
%Image::ExifTool::PDF::ICCBased = (
|
303
299
|
_stream => {
|
304
300
|
SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::Main' },
|
@@ -1989,16 +1985,17 @@ sub ProcessDict($$$$;$$)
|
|
1989
1985
|
} else {
|
1990
1986
|
$val = ReadPDFValue($val);
|
1991
1987
|
}
|
1992
|
-
# convert from UTF-16 (big endian) to UTF-8 or Latin if necessary
|
1993
|
-
# unless this is binary data (hex-encoded strings would not have been converted)
|
1994
1988
|
if (ref $val) {
|
1995
1989
|
if (ref $val eq 'ARRAY') {
|
1990
|
+
delete $$et{LIST_TAGS}{$tagInfo} if $$tagInfo{List};
|
1996
1991
|
my $v;
|
1997
1992
|
foreach $v (@$val) {
|
1998
1993
|
$et->FoundTag($tagInfo, $v);
|
1999
1994
|
}
|
2000
1995
|
}
|
2001
1996
|
} elsif (defined $val) {
|
1997
|
+
# convert from UTF-16 (big endian) to UTF-8 or Latin if necessary
|
1998
|
+
# unless this is binary data (hex-encoded strings would not have been converted)
|
2002
1999
|
my $format = $$tagInfo{Format} || $$tagInfo{Writable} || 'string';
|
2003
2000
|
$val = ConvertPDFDate($val) if $format eq 'date';
|
2004
2001
|
if (not $$tagInfo{Binary} and $val =~ /[\x18-\x1f\x80-\xff]/) {
|
@@ -36,7 +36,7 @@ use strict;
|
|
36
36
|
use vars qw($VERSION $AUTOLOAD %stdCase);
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
38
38
|
|
39
|
-
$VERSION = '1.
|
39
|
+
$VERSION = '1.59';
|
40
40
|
|
41
41
|
sub ProcessPNG_tEXt($$$);
|
42
42
|
sub ProcessPNG_iTXt($$$);
|
@@ -89,7 +89,7 @@ $Image::ExifTool::PNG::colorType = -1;
|
|
89
89
|
|
90
90
|
# data and text chunk types
|
91
91
|
my %isDatChunk = ( IDAT => 1, JDAT => 1, JDAA => 1 );
|
92
|
-
my %isTxtChunk = ( tEXt => 1, zTXt => 1, iTXt => 1 );
|
92
|
+
my %isTxtChunk = ( tEXt => 1, zTXt => 1, iTXt => 1, eXIf => 1 );
|
93
93
|
|
94
94
|
# chunks that we shouldn't move other chunks across (ref 3)
|
95
95
|
my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND => 1,
|
@@ -478,6 +478,8 @@ my %unreg = ( Notes => 'unregistered' );
|
|
478
478
|
if the L<Compress|../ExifTool.html#Compress> option is used and Compress::Zlib is available. Raw profile
|
479
479
|
information is always created as compressed zTXt if Compress::Zlib is
|
480
480
|
available, or tEXt otherwise. Standard XMP is written as uncompressed iTXt.
|
481
|
+
User-defined tags may set an 'iTXt' flag in the tag definition to be written
|
482
|
+
only as iTXt.
|
481
483
|
|
482
484
|
Alternate languages are accessed by suffixing the tag name with a '-',
|
483
485
|
followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or
|
@@ -975,7 +977,7 @@ sub FoundPNG($$$$;$$$$)
|
|
975
977
|
$$tagInfo{LangCode} = $lang if $lang;
|
976
978
|
# make unknown profiles binary data type
|
977
979
|
$$tagInfo{Binary} = 1 if $tag =~ /^Raw profile type /;
|
978
|
-
$verbose and $et->VPrint(0, "
|
980
|
+
$verbose and $et->VPrint(0, " [adding $tag]\n");
|
979
981
|
AddTagToTable($tagTablePtr, $tag, $tagInfo);
|
980
982
|
}
|
981
983
|
#
|
@@ -1382,9 +1384,8 @@ sub ProcessPNG($$)
|
|
1382
1384
|
# to add it as a text profile chunk if this isn't successful
|
1383
1385
|
# (ie. if Compress::Zlib wasn't available)
|
1384
1386
|
Add_iCCP($et, $outfile);
|
1385
|
-
AddChunks($et, $outfile) or $err = 1;
|
1386
|
-
|
1387
|
-
AddChunks($et, $outfile, 'IFD0') if $chunk eq $endChunk;
|
1387
|
+
AddChunks($et, $outfile) or $err = 1; # add all text chunks
|
1388
|
+
AddChunks($et, $outfile, 'IFD0') or $err = 1; # and eXIf chunk
|
1388
1389
|
} elsif ($chunk eq 'PLTE') {
|
1389
1390
|
# iCCP chunk must come before PLTE (and IDAT, handled above)
|
1390
1391
|
# (ignore errors -- will add later as text profile if this fails)
|
@@ -1444,7 +1445,7 @@ sub ProcessPNG($$)
|
|
1444
1445
|
} else {
|
1445
1446
|
$msg = 'fixed';
|
1446
1447
|
}
|
1447
|
-
$et->WarnOnce("Text chunk(s) found after $$et{FileType} $wasDat ($msg)", 1);
|
1448
|
+
$et->WarnOnce("Text/EXIF chunk(s) found after $$et{FileType} $wasDat ($msg)", 1);
|
1448
1449
|
}
|
1449
1450
|
# read chunk data and CRC
|
1450
1451
|
unless ($raf->Read($dbuf,$len)==$len and $raf->Read($cbuf, 4)==4) {
|
@@ -37,7 +37,7 @@ use vars qw($VERSION %leicaLensTypes);
|
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
38
38
|
use Image::ExifTool::Exif;
|
39
39
|
|
40
|
-
$VERSION = '2.
|
40
|
+
$VERSION = '2.16';
|
41
41
|
|
42
42
|
sub ProcessLeicaLEIC($$$);
|
43
43
|
sub WhiteBalanceConv($;$$);
|
@@ -449,7 +449,7 @@ my %shootingMode = (
|
|
449
449
|
same as the number printed on the camera body
|
450
450
|
},
|
451
451
|
PrintConv => q{
|
452
|
-
return $val unless $val=~/^([A-Z]
|
452
|
+
return $val unless $val=~/^([A-Z][0-9A-Z]{2})(\d{2})(\d{2})(\d{2})(\d{4})/;
|
453
453
|
my $yr = $2 + ($2 < 70 ? 2000 : 1900);
|
454
454
|
return "($1) $yr:$3:$4 no. $5";
|
455
455
|
},
|
@@ -1423,6 +1423,18 @@ my %shootingMode = (
|
|
1423
1423
|
Name => 'NoiseReductionStrength',
|
1424
1424
|
Writable => 'rational64s',
|
1425
1425
|
},
|
1426
|
+
0xe4 => { #IB
|
1427
|
+
Name => 'LensTypeModel',
|
1428
|
+
Condition => '$format eq "int16u"',
|
1429
|
+
Writable => 'int16u',
|
1430
|
+
RawConv => q{
|
1431
|
+
return undef unless $val;
|
1432
|
+
require Image::ExifTool::Olympus; # (to load Composite LensID)
|
1433
|
+
return $val;
|
1434
|
+
},
|
1435
|
+
ValueConv => '$_=sprintf("%.4x",$val); s/(..)(..)/$2 $1/; $_',
|
1436
|
+
ValueConvInv => '$val =~ s/(..) (..)/$2$1/; hex($val)',
|
1437
|
+
},
|
1426
1438
|
0x0e00 => {
|
1427
1439
|
Name => 'PrintIM',
|
1428
1440
|
Description => 'Print Image Matching',
|
@@ -2118,6 +2130,7 @@ my %shootingMode = (
|
|
2118
2130
|
Name => 'UserProfile',
|
2119
2131
|
Writable => 'string',
|
2120
2132
|
},
|
2133
|
+
# 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
|
2121
2134
|
0x359 => { #23
|
2122
2135
|
Name => 'ISOSelected',
|
2123
2136
|
Writable => 'int32s',
|
@@ -2134,7 +2147,19 @@ my %shootingMode = (
|
|
2134
2147
|
PrintConv => 'sprintf("%.1f", $val)',
|
2135
2148
|
PrintConvInv => '$val',
|
2136
2149
|
},
|
2137
|
-
|
2150
|
+
0x035b => { #IB
|
2151
|
+
Name => 'CorrelatedColorTemp', # (in Kelvin)
|
2152
|
+
Writable => 'int16u',
|
2153
|
+
},
|
2154
|
+
0x035c => { #IB
|
2155
|
+
Name => 'ColorTint', # (same units as Adobe is using)
|
2156
|
+
Writable => 'int16s',
|
2157
|
+
},
|
2158
|
+
0x035d => { #IB
|
2159
|
+
Name => 'WhitePoint', # (x/y)
|
2160
|
+
Writable => 'rational64u',
|
2161
|
+
Count => 2,
|
2162
|
+
},
|
2138
2163
|
);
|
2139
2164
|
|
2140
2165
|
# Type 2 tags (ref PH)
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
58
58
|
use Image::ExifTool::GPS;
|
59
59
|
use Image::ExifTool::HP;
|
60
60
|
|
61
|
-
$VERSION = '3.
|
61
|
+
$VERSION = '3.39';
|
62
62
|
|
63
63
|
sub CryptShutterCount($$);
|
64
64
|
sub PrintFilter($$$);
|
@@ -340,6 +340,7 @@ sub DecodeAFPoints($$$$;$);
|
|
340
340
|
'8 64' => 'HD PENTAX-D FA* 50mm F1.4 SDM AW', #27
|
341
341
|
'8 65' => 'HD PENTAX-D FA 70-210mm F4 ED SDM WR', #PH
|
342
342
|
'8 66' => 'HD PENTAX-D FA 85mm F1.4 ED SDM AW', #James O'Neill
|
343
|
+
'8 195' => 'HD PENTAX DA* 16-50mm F2.8 ED PLM AW', #27
|
343
344
|
'8 196' => 'HD PENTAX-DA* 11-18mm F2.8 ED DC AW', #29
|
344
345
|
'8 197' => 'HD PENTAX-DA 55-300mm F4.5-6.3 ED PLM WR RE', #29
|
345
346
|
'8 198' => 'smc PENTAX-DA L 18-50mm F4-5.6 DC WR RE', #29
|
@@ -548,6 +549,7 @@ my %pentaxModelID = (
|
|
548
549
|
0x13222 => 'K-70', #29 (Ricoh)
|
549
550
|
0x1322c => 'KP', #29 (Ricoh)
|
550
551
|
0x13240 => 'K-1 Mark II', # (Ricoh)
|
552
|
+
0x13254 => 'K-3 Mark III', #IB (Ricoh)
|
551
553
|
0x13290 => 'WG-70', # (Ricoh)
|
552
554
|
);
|
553
555
|
|
@@ -2222,6 +2224,7 @@ my %binaryDataAttrs = (
|
|
2222
2224
|
17 => '17 (K-70)', #29
|
2223
2225
|
18 => '18 (KP)', #PH
|
2224
2226
|
19 => '19 (GR III)', #PH
|
2227
|
+
20 => '20 (K-3III)', #PH
|
2225
2228
|
},
|
2226
2229
|
},
|
2227
2230
|
0x0067 => { #PH (K-5)
|
@@ -2454,6 +2457,7 @@ my %binaryDataAttrs = (
|
|
2454
2457
|
'2 0' => 'Standard',
|
2455
2458
|
'3 0' => 'Fast',
|
2456
2459
|
# '1 108' - seen for GR III
|
2460
|
+
# '3 84' - seen for K-3III
|
2457
2461
|
},
|
2458
2462
|
},
|
2459
2463
|
0x007b => { #PH (K-5)
|
@@ -2597,8 +2601,9 @@ my %binaryDataAttrs = (
|
|
2597
2601
|
},
|
2598
2602
|
},
|
2599
2603
|
},
|
2600
|
-
0x0095 => { #31
|
2604
|
+
0x0095 => [{ #31
|
2601
2605
|
Name => 'SkinToneCorrection',
|
2606
|
+
Condition => '$count == 2',
|
2602
2607
|
Writable => 'int8s',
|
2603
2608
|
Count => 2,
|
2604
2609
|
PrintConv => {
|
@@ -2606,7 +2611,15 @@ my %binaryDataAttrs = (
|
|
2606
2611
|
'1 1' => 'On (type 1)',
|
2607
2612
|
'1 2' => 'On (type 2)',
|
2608
2613
|
},
|
2609
|
-
},
|
2614
|
+
},{
|
2615
|
+
Name => 'SkinToneCorrection',
|
2616
|
+
Condition => '$count == 3',
|
2617
|
+
Writable => 'int8s',
|
2618
|
+
Count => 3,
|
2619
|
+
PrintConv => {
|
2620
|
+
'0 0 0' => 'Off',
|
2621
|
+
},
|
2622
|
+
}],
|
2610
2623
|
0x0096 => { #31
|
2611
2624
|
Name => 'ClarityControl',
|
2612
2625
|
Writable => 'int8s',
|
@@ -2842,8 +2855,18 @@ my %binaryDataAttrs = (
|
|
2842
2855
|
# High: 0000000238c0e960fde0f9203140f5a0fce0f1e031403f00e600fb00f7803760f120fc60ef403460
|
2843
2856
|
# Very High:000000023d20e520fdc0f7203420f4c0fb60ee6036404400e120fae0f5403aa0f020fac0eb403a00
|
2844
2857
|
},
|
2845
|
-
|
2846
|
-
|
2858
|
+
0x021c => { #IB
|
2859
|
+
Name => 'ColorMatrixA2',
|
2860
|
+
Format => 'int16s',
|
2861
|
+
Writable => 'undef',
|
2862
|
+
Count => 9,
|
2863
|
+
},
|
2864
|
+
0x021d => { #IB
|
2865
|
+
Name => 'ColorMatrixB2',
|
2866
|
+
Format => 'int16s',
|
2867
|
+
Writable => 'undef',
|
2868
|
+
Count => 9,
|
2869
|
+
},
|
2847
2870
|
# 0x021e - undef[8] (K-5, Q)
|
2848
2871
|
0x021f => { #JD
|
2849
2872
|
Name => 'AFInfo',
|
@@ -15,7 +15,7 @@ use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.07';
|
19
19
|
|
20
20
|
sub WritePhaseOne($$$);
|
21
21
|
sub ProcessPhaseOne($$$);
|
@@ -73,10 +73,11 @@ my @formatName = ( undef, 'string', 'int16s', undef, 'int32s' );
|
|
73
73
|
PrintConv => { #PH
|
74
74
|
1 => 'RAW 1', #? (encrypted)
|
75
75
|
2 => 'RAW 2', #? (encrypted)
|
76
|
-
3 => 'IIQ L',
|
76
|
+
3 => 'IIQ L', # (now "L14", ref IB)
|
77
77
|
# 4?
|
78
78
|
5 => 'IIQ S',
|
79
|
-
6 => 'IIQ Sv2',
|
79
|
+
6 => 'IIQ Sv2', # (now "S14" for "IIQ 14 Smart" and "IIQ 14 Sensor+", ref IB)
|
80
|
+
8 => 'IIQ L16', #IB ("IIQ 16 Extended" and "IIQ 16 Large")
|
80
81
|
},
|
81
82
|
},
|
82
83
|
0x010f => {
|
@@ -988,6 +988,12 @@ sub ProcessPhotoshop($$$)
|
|
988
988
|
$size += 1 if $size & 0x01; # size is padded to an even # bytes
|
989
989
|
$pos += $size;
|
990
990
|
}
|
991
|
+
# warn about incorrect IPTCDigest
|
992
|
+
if ($$et{VALUE}{IPTCDigest} and $$et{VALUE}{CurrentIPTCDigest} and
|
993
|
+
$$et{VALUE}{IPTCDigest} ne $$et{VALUE}{CurrentIPTCDigest})
|
994
|
+
{
|
995
|
+
$et->WarnOnce('IPTCDigest is not current. XMP may be out of sync');
|
996
|
+
}
|
991
997
|
delete $$et{LOW_PRIORITY_DIR}{'*'};
|
992
998
|
return $success;
|
993
999
|
}
|