exiftool_vendored 12.62.0 → 12.63.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 +29 -1
- data/bin/MANIFEST +1 -0
- data/bin/META.json +4 -1
- data/bin/META.yml +4 -1
- data/bin/Makefile.PL +7 -1
- data/bin/README +10 -7
- data/bin/exiftool +22 -16
- data/bin/lib/Image/ExifTool/7Z.pm +793 -0
- data/bin/lib/Image/ExifTool/Canon.pm +1 -0
- data/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
- data/bin/lib/Image/ExifTool/Exif.pm +31 -14
- data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -3
- data/bin/lib/Image/ExifTool/GPS.pm +5 -2
- data/bin/lib/Image/ExifTool/Geotag.pm +4 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +225 -28
- data/bin/lib/Image/ExifTool/MPF.pm +2 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- data/bin/lib/Image/ExifTool/PNG.pm +6 -6
- data/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
- data/bin/lib/Image/ExifTool/QuickTime.pm +41 -12
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +18 -18
- data/bin/lib/Image/ExifTool/README +1 -1
- data/bin/lib/Image/ExifTool/RIFF.pm +11 -9
- data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
- data/bin/lib/Image/ExifTool/Sony.pm +102 -8
- data/bin/lib/Image/ExifTool/TagLookup.pm +982 -953
- data/bin/lib/Image/ExifTool/TagNames.pod +75 -5
- data/bin/lib/Image/ExifTool/Validate.pm +17 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
- data/bin/lib/Image/ExifTool/Writer.pl +7 -6
- data/bin/lib/Image/ExifTool/XMP.pm +14 -2
- data/bin/lib/Image/ExifTool/XMP2.pl +32 -0
- data/bin/lib/Image/ExifTool/ZIP.pm +5 -5
- data/bin/lib/Image/ExifTool.pm +54 -33
- data/bin/lib/Image/ExifTool.pod +17 -6
- data/bin/perl-Image-ExifTool.spec +6 -6
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -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 26443 tags, with 16891 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
|
@@ -798,6 +798,13 @@ for the official EXIF 2.32 specification.
|
|
798
798
|
0xa433 LensMake ExifIFD string
|
799
799
|
0xa434 LensModel ExifIFD string
|
800
800
|
0xa435 LensSerialNumber ExifIFD string
|
801
|
+
0xa436 Title ExifIFD string/
|
802
|
+
0xa437 Photographer ExifIFD string
|
803
|
+
0xa438 ImageEditor ExifIFD string
|
804
|
+
0xa439 CameraFirmware ExifIFD string
|
805
|
+
0xa43a RAWDevelopingSoftware ExifIFD string
|
806
|
+
0xa43b ImageEditingSoftware ExifIFD string
|
807
|
+
0xa43c MetadataEditingSoftware ExifIFD string
|
801
808
|
0xa460 CompositeImage ExifIFD int16u
|
802
809
|
0xa461 CompositeImageCount ExifIFD int16u[2]
|
803
810
|
0xa462 CompositeImageExposureTimes ExifIFD undef
|
@@ -1306,6 +1313,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
|
|
1306
1313
|
GPano XMP GPano
|
1307
1314
|
GSpherical XMP GSpherical
|
1308
1315
|
hdr XMP hdr
|
1316
|
+
hdrgm XMP hdrgm
|
1309
1317
|
ics XMP ics
|
1310
1318
|
iptcCore XMP iptcCore
|
1311
1319
|
iptcExt XMP iptcExt
|
@@ -1319,6 +1327,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
|
|
1319
1327
|
mwg-kw MWG Keywords
|
1320
1328
|
mwg-rs MWG Regions
|
1321
1329
|
nine Nikon nine
|
1330
|
+
panorama XMP panorama
|
1322
1331
|
pdf XMP pdf
|
1323
1332
|
pdfx XMP pdfx
|
1324
1333
|
photomech PhotoMechanic XMP
|
@@ -4047,6 +4056,8 @@ These tags belong to the ExifTool XMP-et family 1 group.
|
|
4047
4056
|
|
4048
4057
|
Tag Name Writable
|
4049
4058
|
-------- --------
|
4059
|
+
OriginalImageHash string
|
4060
|
+
OriginalImageHashType string
|
4050
4061
|
OriginalImageMD5 string
|
4051
4062
|
|
4052
4063
|
=head3 XMP exif Tags
|
@@ -4498,6 +4509,24 @@ These tags belong to the ExifTool XMP-hdr family 1 group.
|
|
4498
4509
|
CCVWhiteXY string
|
4499
4510
|
SceneReferred boolean
|
4500
4511
|
|
4512
|
+
=head3 XMP hdrgm Tags
|
4513
|
+
|
4514
|
+
Tags used in Adobe gain map images.
|
4515
|
+
|
4516
|
+
These tags belong to the ExifTool XMP-hdrgm family 1 group.
|
4517
|
+
|
4518
|
+
Tag Name Writable
|
4519
|
+
-------- --------
|
4520
|
+
BaseRenditionIsHDR boolean
|
4521
|
+
GainMapMax real+
|
4522
|
+
GainMapMin real+
|
4523
|
+
Gamma real/+
|
4524
|
+
HDRCapacityMax real
|
4525
|
+
HDRCapacityMin real
|
4526
|
+
OffsetHDR real+
|
4527
|
+
OffsetSDR real+
|
4528
|
+
Version string/
|
4529
|
+
|
4501
4530
|
=head3 XMP ics Tags
|
4502
4531
|
|
4503
4532
|
Tags used by IDimager. Nested TagStructure structures are unrolled to an
|
@@ -5127,6 +5156,19 @@ These tags belong to the ExifTool XMP-mediapro family 1 group.
|
|
5127
5156
|
Status string
|
5128
5157
|
UserFields string+
|
5129
5158
|
|
5159
|
+
=head3 XMP panorama Tags
|
5160
|
+
|
5161
|
+
Adobe Photoshop Panorama-profile tags.
|
5162
|
+
|
5163
|
+
These tags belong to the ExifTool XMP-panorama family 1 group.
|
5164
|
+
|
5165
|
+
Tag Name Writable
|
5166
|
+
-------- --------
|
5167
|
+
Transformation string
|
5168
|
+
VirtualFocalLength real
|
5169
|
+
VirtualImageXCenter real
|
5170
|
+
VirtualImageYCenter real
|
5171
|
+
|
5130
5172
|
=head3 XMP pdf Tags
|
5131
5173
|
|
5132
5174
|
Adobe PDF namespace tags. The official XMP specification defines only
|
@@ -20439,6 +20481,8 @@ WX300, but not for panorama images.
|
|
20439
20481
|
6294 LensType int16u
|
20440
20482
|
6296 DistortionCorrParamsPresent int8u
|
20441
20483
|
6297 DistortionCorrParamsNumber int8u
|
20484
|
+
6444 AspectRatio int8u
|
20485
|
+
6792 AspectRatio int8u
|
20442
20486
|
|
20443
20487
|
=head3 Sony Tag2010f Tags
|
20444
20488
|
|
@@ -20469,6 +20513,7 @@ Valid for DSC-RX100M2, DSC-QX10/QX100.
|
|
20469
20513
|
4406 MinFocalLength int16u
|
20470
20514
|
4408 MaxFocalLength int16u
|
20471
20515
|
4412 SonyISO int16u
|
20516
|
+
6444 AspectRatio int8u
|
20472
20517
|
|
20473
20518
|
=head3 Sony Tag2010g Tags
|
20474
20519
|
|
@@ -20507,6 +20552,7 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.
|
|
20507
20552
|
6338 LensType int16u
|
20508
20553
|
6340 DistortionCorrParamsPresent int8u
|
20509
20554
|
6341 DistortionCorrParamsNumber int8u
|
20555
|
+
6488 AspectRatio int8u
|
20510
20556
|
|
20511
20557
|
=head3 Sony Tag2010h Tags
|
20512
20558
|
|
@@ -20546,6 +20592,7 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.
|
|
20546
20592
|
6386 LensType int16u
|
20547
20593
|
6388 DistortionCorrParamsPresent int8u
|
20548
20594
|
6389 DistortionCorrParamsNumber int8u
|
20595
|
+
6444 AspectRatio int8u
|
20549
20596
|
|
20550
20597
|
=head3 Sony Tag2010i Tags
|
20551
20598
|
|
@@ -20584,6 +20631,7 @@ RX100M5A/RX100M7/HX99.
|
|
20584
20631
|
6134 LensType int16u
|
20585
20632
|
6136 DistortionCorrParamsPresent int8u
|
20586
20633
|
6137 DistortionCorrParamsNumber int8u
|
20634
|
+
6284 AspectRatio int8u
|
20587
20635
|
|
20588
20636
|
=head3 Sony MeterInfo9 Tags
|
20589
20637
|
|
@@ -20825,6 +20873,9 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
|
|
20825
20873
|
42 Quality2 int8u
|
20826
20874
|
71 SonyImageHeight int16u~
|
20827
20875
|
83 ModelReleaseYear int8u~
|
20876
|
+
307 ShutterType int8u
|
20877
|
+
313 ShutterType int8u
|
20878
|
+
319 ShutterType int8u
|
20828
20879
|
|
20829
20880
|
=head3 Sony Tag9401 Tags
|
20830
20881
|
|
@@ -20836,6 +20887,7 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
|
|
20836
20887
|
1181 ISOInfo Sony ISOInfo
|
20837
20888
|
1185 ISOInfo Sony ISOInfo
|
20838
20889
|
1186 ISOInfo Sony ISOInfo
|
20890
|
+
1210 ISOInfo Sony ISOInfo
|
20839
20891
|
1437 ISOInfo Sony ISOInfo
|
20840
20892
|
1588 ISOInfo Sony ISOInfo
|
20841
20893
|
1590 ISOInfo Sony ISOInfo
|
@@ -24104,7 +24156,10 @@ chunk.
|
|
24104
24156
|
|
24105
24157
|
The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
|
24106
24158
|
images, but not all of these are extracted. Note that ExifTool currently
|
24107
|
-
writes only EXIF, IPTC and XMP tags in Jpeg2000 images
|
24159
|
+
writes only EXIF, IPTC and XMP tags in Jpeg2000 images, and EXIF and XMP in
|
24160
|
+
JXL images. ExifTool will read/write Brotli-compressed EXIF and XMP in JXL
|
24161
|
+
images, but the API Compress option must be set to create new EXIF and XMP
|
24162
|
+
in compressed format.
|
24108
24163
|
|
24109
24164
|
Tag ID Tag Name Writable
|
24110
24165
|
------ -------- --------
|
@@ -24114,6 +24169,9 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
|
|
24114
24169
|
'bfil' BinaryFilter no
|
24115
24170
|
'bidb' BinaryData no
|
24116
24171
|
'bpcc' BitsPerComponent no
|
24172
|
+
'brob' BrotliXMP XMP
|
24173
|
+
BrotliEXIF EXIF
|
24174
|
+
BrotliJUMB Jpeg2000
|
24117
24175
|
'c2sh' C2PASaltHash no
|
24118
24176
|
'cbor' CBORData CBOR
|
24119
24177
|
'cdef' ComponentDefinition no
|
@@ -24132,6 +24190,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
|
|
24132
24190
|
'ftbl' FragmentTable no
|
24133
24191
|
'ftyp' FileType Jpeg2000 FileType
|
24134
24192
|
'gtso' GraphicsTechnologyStandardOutput no
|
24193
|
+
'hrgm' GainMapImage no
|
24135
24194
|
'ihdr' ImageHeader Jpeg2000 ImageHeader
|
24136
24195
|
'inst' InstructionSet no
|
24137
24196
|
'jP ' JP2Signature no
|
@@ -24145,6 +24204,7 @@ writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
|
|
24145
24204
|
'jumb' JUMBFBox Jpeg2000
|
24146
24205
|
'jumd' JUMBFDescr Jpeg2000 JUMD
|
24147
24206
|
'jxlc' JXLCodestream no
|
24207
|
+
'jxlp' PartialJXLCodestream no
|
24148
24208
|
'lbl ' Label no
|
24149
24209
|
'mdat' MediaData no
|
24150
24210
|
'mp7b' MPEG7Binary no
|
@@ -28588,6 +28648,7 @@ and are not currently writable.
|
|
28588
28648
|
'auxC' AuxiliaryImageType no
|
28589
28649
|
'av1C' AV1Configuration QuickTime AV1Config
|
28590
28650
|
'clap' CleanAperture no
|
28651
|
+
'clli' ContentLightLevel QuickTime ContentLightLevel
|
28591
28652
|
'colr' ICC_Profile ICC_Profile
|
28592
28653
|
ColorRepresentation QuickTime ColorRep
|
28593
28654
|
'hvcC' HEVCConfiguration QuickTime HEVCConfig
|
@@ -28611,6 +28672,13 @@ and are not currently writable.
|
|
28611
28672
|
2.4 ChromaSamplePosition no
|
28612
28673
|
3 InitialDelaySamples? no
|
28613
28674
|
|
28675
|
+
=head3 QuickTime ContentLightLevel Tags
|
28676
|
+
|
28677
|
+
Index2 Tag Name Writable
|
28678
|
+
------ -------- --------
|
28679
|
+
0 MaxContentLightLevel no
|
28680
|
+
1 MaxPicAverageLightLevel no
|
28681
|
+
|
28614
28682
|
=head3 QuickTime ColorRep Tags
|
28615
28683
|
|
28616
28684
|
Index1 Tag Name Writable
|
@@ -29607,6 +29675,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
|
|
29607
29675
|
'fmt ' AudioFormat RIFF AudioFormat
|
29608
29676
|
'gps0' GPSTrack QuickTime Stream
|
29609
29677
|
'gsen' GSensor QuickTime Stream
|
29678
|
+
'guan' Guano no
|
29610
29679
|
'iXML' IXML XMP XML
|
29611
29680
|
'id3 ' ID3 ID3
|
29612
29681
|
'inst' Instrument RIFF Instrument
|
@@ -37740,15 +37809,15 @@ These tags are extracted from RAR archive files.
|
|
37740
37809
|
|
37741
37810
|
=head3 ZIP RAR5 Tags
|
37742
37811
|
|
37743
|
-
These tags are extracted from RAR v5 archive files.
|
37812
|
+
These tags are extracted from RAR v5 and 7z archive files.
|
37744
37813
|
|
37745
37814
|
Tag Name Writable
|
37746
37815
|
-------- --------
|
37747
37816
|
ArchivedFileName no
|
37748
37817
|
CompressedSize no
|
37818
|
+
FileVersion no
|
37749
37819
|
ModifyDate no
|
37750
37820
|
OperatingSystem no
|
37751
|
-
RARVersion no
|
37752
37821
|
UncompressedSize no
|
37753
37822
|
|
37754
37823
|
=head2 RTF Tags
|
@@ -38167,7 +38236,7 @@ FileName.
|
|
38167
38236
|
ICC_Profile ICC_Profile yes!
|
38168
38237
|
ID3Size File no
|
38169
38238
|
IPTC IPTC yes!
|
38170
|
-
|
38239
|
+
ImageDataHash File no
|
38171
38240
|
ImageHeight File no
|
38172
38241
|
ImageWidth File no
|
38173
38242
|
JPEGDigest File no
|
@@ -38627,6 +38696,7 @@ for more details.
|
|
38627
38696
|
IFD0:XPAuthor
|
38628
38697
|
IFD0:XPKeywords
|
38629
38698
|
IFD0:XPSubject
|
38699
|
+
ImageDataMD5 ImageDataHash yes
|
38630
38700
|
LargeTags CanonVRD yes
|
38631
38701
|
DLOData
|
38632
38702
|
EXIF
|
@@ -17,7 +17,7 @@ package Image::ExifTool::Validate;
|
|
17
17
|
use strict;
|
18
18
|
use vars qw($VERSION %exifSpec);
|
19
19
|
|
20
|
-
$VERSION = '1.
|
20
|
+
$VERSION = '1.21';
|
21
21
|
|
22
22
|
use Image::ExifTool qw(:Utils);
|
23
23
|
use Image::ExifTool::Exif;
|
@@ -56,6 +56,15 @@ use Image::ExifTool::Exif;
|
|
56
56
|
0x212 => 1, 0x9204 => 1, 0xa210 => 1, 0xa500 => 221,
|
57
57
|
0x213 => 1, 0x9205 => 1, 0xa214 => 1,
|
58
58
|
0x214 => 1, 0x9206 => 1, 0xa215 => 1,
|
59
|
+
|
60
|
+
# new Exif 3.0 tags
|
61
|
+
0xa436 => 300,
|
62
|
+
0xa437 => 300,
|
63
|
+
0xa438 => 300,
|
64
|
+
0xa439 => 300,
|
65
|
+
0xa43a => 300,
|
66
|
+
0xa43b => 300,
|
67
|
+
0xa43c => 300,
|
59
68
|
);
|
60
69
|
|
61
70
|
# GPSVersionID numbers when each tag was introduced
|
@@ -147,6 +156,13 @@ my %stdFormat = (
|
|
147
156
|
0xc68d => 'int(16|32)u', 0xc791 => 'int(16|32)u',
|
148
157
|
0xc68e => 'int(16|32)u', 0xc792 => 'int(16|32)u',
|
149
158
|
0xc6d2 => '', 0xc793 => '(int16u|int32u|rational64u)',
|
159
|
+
# Exif 3.0 spec
|
160
|
+
0x10e => 'string|utf8', 0xa430 => 'string|utf8', 0xa439 => 'string|utf8',
|
161
|
+
0x10f => 'string|utf8', 0xa433 => 'string|utf8', 0xa43a => 'string|utf8',
|
162
|
+
0x110 => 'string|utf8', 0xa434 => 'string|utf8', 0xa43b => 'string|utf8',
|
163
|
+
0x131 => 'string|utf8', 0xa436 => 'string|utf8', 0xa43c => 'string|utf8',
|
164
|
+
0x13b => 'string|utf8', 0xa437 => 'string|utf8', 0xa43a => 'string|utf8',
|
165
|
+
0x8298 => 'string|utf8', 0xa438 => 'string|utf8',
|
150
166
|
},
|
151
167
|
);
|
152
168
|
|
@@ -420,15 +420,15 @@ sub ValidateImageData($$$;$)
|
|
420
420
|
}
|
421
421
|
|
422
422
|
#------------------------------------------------------------------------------
|
423
|
-
# Add specified image data to
|
423
|
+
# Add specified image data to ImageDataHash hash
|
424
424
|
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) lookup for [tagInfo,value] based on tagID
|
425
|
-
sub
|
425
|
+
sub AddImageDataHash($$$)
|
426
426
|
{
|
427
427
|
my ($et, $dirInfo, $offsetInfo) = @_;
|
428
428
|
my ($tagID, $offset, $buff);
|
429
429
|
|
430
430
|
my $verbose = $et->Options('Verbose');
|
431
|
-
my $
|
431
|
+
my $hash = $$et{ImageDataHash};
|
432
432
|
my $raf = $$dirInfo{RAF};
|
433
433
|
|
434
434
|
foreach $tagID (sort keys %$offsetInfo) {
|
@@ -451,12 +451,12 @@ sub AddImageDataMD5($$$)
|
|
451
451
|
my $size = shift @sizes;
|
452
452
|
next unless $offset =~ /^\d+$/ and $size and $size =~ /^\d+$/ and $size;
|
453
453
|
next unless $raf->Seek($offset, 0); # (offset is absolute)
|
454
|
-
$total += $et->
|
454
|
+
$total += $et->ImageDataHash($raf, $size);
|
455
455
|
}
|
456
456
|
if ($verbose) {
|
457
457
|
my $name = "$$dirInfo{DirName}:$$tagInfo{Name}";
|
458
458
|
$name =~ s/Offsets?|Start$//;
|
459
|
-
$et->VPrint(0, "$$et{INDENT}(
|
459
|
+
$et->VPrint(0, "$$et{INDENT}(ImageDataHash: $total bytes of $name data)\n");
|
460
460
|
}
|
461
461
|
}
|
462
462
|
}
|
@@ -780,7 +780,7 @@ Entry: for (;;) {
|
|
780
780
|
$readFormat = $oldFormat = Get16u($dataPt, $entry+2);
|
781
781
|
$readCount = $oldCount = Get32u($dataPt, $entry+4);
|
782
782
|
undef $oldImageData;
|
783
|
-
if ($oldFormat < 1 or $oldFormat > 13 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
|
783
|
+
if (($oldFormat < 1 or $oldFormat > 13) and $oldFormat != 129 and not ($oldFormat == 16 and $$et{Make} eq 'Apple' and $inMakerNotes)) {
|
784
784
|
my $msg = "Bad format ($oldFormat) for $name entry $index";
|
785
785
|
# patch to preserve invalid directory entries in SubIFD3 of
|
786
786
|
# various Kodak Z-series cameras (Z812, Z1085IS, Z1275)
|
@@ -1277,7 +1277,9 @@ NoWrite: next if $isNew > 0;
|
|
1277
1277
|
$et->Warn("Writing large value for $name",1);
|
1278
1278
|
}
|
1279
1279
|
# re-code if necessary
|
1280
|
-
if ($
|
1280
|
+
if ($newFormName eq 'utf8') {
|
1281
|
+
$newValue = $et->Encode($newValue, 'UTF8');
|
1282
|
+
} elsif ($strEnc and $newFormName eq 'string') {
|
1281
1283
|
$newValue = $et->Encode($newValue, $strEnc);
|
1282
1284
|
}
|
1283
1285
|
} else {
|
@@ -1293,6 +1293,7 @@ sub SetNewValuesFromFile($$;@)
|
|
1293
1293
|
HexTagIDs => $$options{HexTagIDs},
|
1294
1294
|
IgnoreMinorErrors=>$$options{IgnoreMinorErrors},
|
1295
1295
|
IgnoreTags => $$options{IgnoreTags},
|
1296
|
+
ImageHashType => $$options{ImageHashType},
|
1296
1297
|
Lang => $$options{Lang},
|
1297
1298
|
LargeFileSupport=> $$options{LargeFileSupport},
|
1298
1299
|
List => 1,
|
@@ -6880,14 +6881,14 @@ sub SetFileTime($$;$$$$)
|
|
6880
6881
|
}
|
6881
6882
|
|
6882
6883
|
#------------------------------------------------------------------------------
|
6883
|
-
# Add data to
|
6884
|
+
# Add data to hash checksum
|
6884
6885
|
# Inputs: 0) ExifTool ref, 1) RAF ref, 2) data size (or undef to read to end of file),
|
6885
6886
|
# 3) data name (or undef for no warnings or messages), 4) flag for no verbose message
|
6886
|
-
# Returns: number of bytes read and
|
6887
|
-
sub
|
6887
|
+
# Returns: number of bytes read and hashed
|
6888
|
+
sub ImageDataHash($$$;$$)
|
6888
6889
|
{
|
6889
6890
|
my ($self, $raf, $size, $type, $noMsg) = @_;
|
6890
|
-
my $
|
6891
|
+
my $hash = $$self{ImageDataHash} or return;
|
6891
6892
|
my ($bytesRead, $n) = (0, 65536);
|
6892
6893
|
my $buff;
|
6893
6894
|
for (;;) {
|
@@ -6900,11 +6901,11 @@ sub ImageDataMD5($$$;$$)
|
|
6900
6901
|
$self->Warn("Error reading $type data") if $type and defined $size;
|
6901
6902
|
last;
|
6902
6903
|
}
|
6903
|
-
$
|
6904
|
+
$hash->add($buff);
|
6904
6905
|
$bytesRead += length $buff;
|
6905
6906
|
}
|
6906
6907
|
if ($$self{OPTIONS}{Verbose} and $bytesRead and $type and not $noMsg) {
|
6907
|
-
$self->VPrint(0, "$$self{INDENT}(
|
6908
|
+
$self->VPrint(0, "$$self{INDENT}(ImageDataHash: $bytesRead bytes of $type data)\n");
|
6908
6909
|
}
|
6909
6910
|
return $bytesRead;
|
6910
6911
|
}
|
@@ -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.60';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -144,6 +144,7 @@ my %xmpNS = (
|
|
144
144
|
xmpTPg => 'http://ns.adobe.com/xap/1.0/t/pg/',
|
145
145
|
xmpidq => 'http://ns.adobe.com/xmp/Identifier/qual/1.0/',
|
146
146
|
xmpPLUS => 'http://ns.adobe.com/xap/1.0/PLUS/',
|
147
|
+
panorama => 'http://ns.adobe.com/photoshop/1.0/panorama-profile',
|
147
148
|
dex => 'http://ns.optimasc.com/dex/1.0/',
|
148
149
|
mediapro => 'http://ns.iview-multimedia.com/mediapro/1.0/',
|
149
150
|
expressionmedia => 'http://ns.microsoft.com/expressionmedia/1.0/',
|
@@ -199,6 +200,7 @@ my %xmpNS = (
|
|
199
200
|
ast => 'http://ns.nikon.com/asteroid/1.0/',
|
200
201
|
nine => 'http://ns.nikon.com/nine/1.0/',
|
201
202
|
hdr_metadata => 'http://ns.adobe.com/hdr-metadata/1.0/',
|
203
|
+
hdrgm => 'http://ns.adobe.com/hdr-gain-map/1.0/',
|
202
204
|
);
|
203
205
|
|
204
206
|
# build reverse namespace lookup
|
@@ -709,6 +711,10 @@ my %sRangeMask = (
|
|
709
711
|
Name => 'xmpPLUS',
|
710
712
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::xmpPLUS' },
|
711
713
|
},
|
714
|
+
panorama => {
|
715
|
+
Name => 'panorama',
|
716
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::panorama' },
|
717
|
+
},
|
712
718
|
plus => {
|
713
719
|
Name => 'plus',
|
714
720
|
SubDirectory => { TagTable => 'Image::ExifTool::PLUS::XMP' },
|
@@ -909,6 +915,10 @@ my %sRangeMask = (
|
|
909
915
|
Name => 'hdr',
|
910
916
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdr' },
|
911
917
|
},
|
918
|
+
hdrgm => {
|
919
|
+
Name => 'hdrgm',
|
920
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdrgm' },
|
921
|
+
},
|
912
922
|
);
|
913
923
|
|
914
924
|
# hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
|
@@ -2566,7 +2576,9 @@ my %sPantryItem = (
|
|
2566
2576
|
%xmpTableDefaults,
|
2567
2577
|
GROUPS => { 1 => 'XMP-et', 2 => 'Image' },
|
2568
2578
|
NAMESPACE => 'et',
|
2569
|
-
|
2579
|
+
OriginalImageHash => { Notes => 'used to store ExifTool ImageDataHash digest' },
|
2580
|
+
OriginalImageHashType => { Notes => "ImageHashType API setting, default 'MD5'" },
|
2581
|
+
OriginalImageMD5 => { Notes => 'deprecated' },
|
2570
2582
|
);
|
2571
2583
|
|
2572
2584
|
# table to add tags in other namespaces
|
@@ -1388,6 +1388,17 @@ my %sSubVersion = (
|
|
1388
1388
|
ReuseAllowed => { Writable => 'boolean' },
|
1389
1389
|
);
|
1390
1390
|
|
1391
|
+
%Image::ExifTool::XMP::panorama = (
|
1392
|
+
%xmpTableDefaults,
|
1393
|
+
GROUPS => { 1 => 'XMP-panorama', 2 => 'Image' },
|
1394
|
+
NAMESPACE => 'panorama',
|
1395
|
+
NOTES => 'Adobe Photoshop Panorama-profile tags.',
|
1396
|
+
Transformation => { },
|
1397
|
+
VirtualFocalLength => { Writable => 'real' },
|
1398
|
+
VirtualImageXCenter => { Writable => 'real' },
|
1399
|
+
VirtualImageYCenter => { Writable => 'real' },
|
1400
|
+
);
|
1401
|
+
|
1391
1402
|
# Creative Commons namespace properties (cc) (ref 5)
|
1392
1403
|
%Image::ExifTool::XMP::cc = (
|
1393
1404
|
%xmpTableDefaults,
|
@@ -2094,6 +2105,27 @@ my %sSubVersion = (
|
|
2094
2105
|
scene_referred => { Name => 'SceneReferred', Writable => 'boolean' },
|
2095
2106
|
);
|
2096
2107
|
|
2108
|
+
# HDR Gain Map metadata namespace
|
2109
|
+
%Image::ExifTool::XMP::hdrgm = (
|
2110
|
+
%xmpTableDefaults,
|
2111
|
+
GROUPS => { 1 => 'XMP-hdrgm', 2 => 'Image' },
|
2112
|
+
NAMESPACE => 'hdrgm',
|
2113
|
+
TABLE_DESC => 'XMP HDR Gain Map Metadata',
|
2114
|
+
NOTES => 'Tags used in Adobe gain map images.',
|
2115
|
+
Version => { Avoid => 1 },
|
2116
|
+
BaseRenditionIsHDR => { Writable => 'boolean' },
|
2117
|
+
# this is a pain in the ass: List items below may or may not be lists
|
2118
|
+
# according to the Adobe specification -- I don't know how to handle tags
|
2119
|
+
# with a variable format like this, so just make them lists here for now
|
2120
|
+
OffsetSDR => { Writable => 'real', List => 'Seq' },
|
2121
|
+
OffsetHDR => { Writable => 'real', List => 'Seq' },
|
2122
|
+
HDRCapacityMin => { Writable => 'real' },
|
2123
|
+
HDRCapacityMax => { Writable => 'real' },
|
2124
|
+
GainMapMin => { Writable => 'real', List => 'Seq' },
|
2125
|
+
GainMapMax => { Writable => 'real', List => 'Seq' },
|
2126
|
+
Gamma => { Writable => 'real', List => 'Seq', Avoid => 1 },
|
2127
|
+
);
|
2128
|
+
|
2097
2129
|
# SVG namespace properties (ref 9)
|
2098
2130
|
%Image::ExifTool::XMP::SVG = (
|
2099
2131
|
GROUPS => { 0 => 'SVG', 1 => 'SVG', 2 => 'Image' },
|
@@ -20,7 +20,7 @@ use strict;
|
|
20
20
|
use vars qw($VERSION $warnString);
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
22
22
|
|
23
|
-
$VERSION = '1.
|
23
|
+
$VERSION = '1.30';
|
24
24
|
|
25
25
|
sub WarnProc($) { $warnString = $_[0]; }
|
26
26
|
|
@@ -259,8 +259,8 @@ my %iWorkType = (
|
|
259
259
|
%Image::ExifTool::ZIP::RAR5 = (
|
260
260
|
GROUPS => { 2 => 'Other' },
|
261
261
|
VARS => { NO_ID => 1 },
|
262
|
-
NOTES => 'These tags are extracted from RAR v5 archive files.',
|
263
|
-
|
262
|
+
NOTES => 'These tags are extracted from RAR v5 and 7z archive files.',
|
263
|
+
FileVersion => { },
|
264
264
|
CompressedSize => { },
|
265
265
|
ModifyDate => {
|
266
266
|
Groups => { 2 => 'Time' },
|
@@ -310,7 +310,7 @@ sub ProcessRAR($$)
|
|
310
310
|
$et->SetFileType();
|
311
311
|
SetByteOrder('II');
|
312
312
|
my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
|
313
|
-
$et->HandleTag($tagTablePtr, '
|
313
|
+
$et->HandleTag($tagTablePtr, 'FileVersion', 'RAR v4');
|
314
314
|
$tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR');
|
315
315
|
|
316
316
|
for (;;) {
|
@@ -356,7 +356,7 @@ sub ProcessRAR($$)
|
|
356
356
|
return 0 unless $raf->Read($buff, 1) and $buff eq "\0";
|
357
357
|
$et->SetFileType();
|
358
358
|
my $tagTablePtr = GetTagTable('Image::ExifTool::ZIP::RAR5');
|
359
|
-
$et->HandleTag($tagTablePtr, '
|
359
|
+
$et->HandleTag($tagTablePtr, 'FileVersion', 'RAR v5');
|
360
360
|
$$et{INDENT} .= '| ';
|
361
361
|
|
362
362
|
# loop through header blocks
|