exiftool_vendored 12.18.0 → 12.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +236 -4
- 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 +152 -97
- 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 +31 -13
- data/bin/lib/Image/ExifTool/CBOR.pm +331 -0
- data/bin/lib/Image/ExifTool/Canon.pm +44 -19
- 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 +124 -13
- 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 +30 -5
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +395 -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 +3 -3
- data/bin/lib/Image/ExifTool/Microsoft.pm +298 -82
- data/bin/lib/Image/ExifTool/Nikon.pm +18 -5
- data/bin/lib/Image/ExifTool/NikonSettings.pm +19 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +10 -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 +234 -75
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +283 -141
- data/bin/lib/Image/ExifTool/README +5 -2
- 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 +230 -69
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4145 -4029
- data/bin/lib/Image/ExifTool/TagNames.pod +671 -287
- 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 +45 -15
- data/bin/lib/Image/ExifTool/XMP2.pl +3 -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 +233 -81
- 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
@@ -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.75';
|
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',
|
@@ -3606,6 +3609,10 @@ my %indexInfo = (
|
|
3606
3609
|
Format => 'string[24]',
|
3607
3610
|
Groups => { 2 => 'Time' },
|
3608
3611
|
},
|
3612
|
+
0x17f => {
|
3613
|
+
Name => 'LensModel',
|
3614
|
+
Format => 'string[32]'
|
3615
|
+
},
|
3609
3616
|
);
|
3610
3617
|
|
3611
3618
|
# yet a different "thmb" atom format (PH, E-M5)
|
@@ -3952,7 +3959,7 @@ my %indexInfo = (
|
|
3952
3959
|
1 => 'LensTypeModel',
|
3953
3960
|
},
|
3954
3961
|
Notes => 'based on tags found in some Panasonic RW2 images',
|
3955
|
-
SeparateTable => 'LensType',
|
3962
|
+
SeparateTable => 'Olympus LensType',
|
3956
3963
|
ValueConv => '"$val[0] $val[1]"',
|
3957
3964
|
PrintConv => \%olympusLensTypes,
|
3958
3965
|
},
|
@@ -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
|
}
|