exiftool_vendored 12.65.0 → 12.68.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 +43 -2
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +7 -7
- data/bin/exiftool +30 -21
- data/bin/lib/Image/ExifTool/Apple.pm +6 -2
- data/bin/lib/Image/ExifTool/Canon.pm +50 -13
- data/bin/lib/Image/ExifTool/FujiFilm.pm +20 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +17 -12
- data/bin/lib/Image/ExifTool/Nikon.pm +34 -5
- data/bin/lib/Image/ExifTool/PLUS.pm +19 -4
- data/bin/lib/Image/ExifTool/PNG.pm +14 -7
- data/bin/lib/Image/ExifTool/Panasonic.pm +8 -8
- data/bin/lib/Image/ExifTool/Pentax.pm +8 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +61 -51
- data/bin/lib/Image/ExifTool/Sony.pm +66 -21
- data/bin/lib/Image/ExifTool/TagLookup.pm +6729 -6709
- data/bin/lib/Image/ExifTool/TagNames.pod +78 -10
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +2 -0
- data/bin/lib/Image/ExifTool/Writer.pl +1 -0
- data/bin/lib/Image/ExifTool/XISF.pm +185 -0
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +25 -13
- data/bin/lib/Image/ExifTool.pod +20 -10
- data/bin/perl-Image-ExifTool.spec +6 -6
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +8 -7
@@ -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 27039 tags, with 16991 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
|
@@ -5557,7 +5557,7 @@ These tags belong to the ExifTool XMP-prism family 1 group.
|
|
5557
5557
|
|
5558
5558
|
PRISM Rights Language 2.1 namespace tags. These tags have been deprecated
|
5559
5559
|
since the release of the PRISM Usage Rights 3.0. (see
|
5560
|
-
L<
|
5560
|
+
L<https://www.w3.org/submissions/2020/SUBM-prism-20200910/prism-image.html>)
|
5561
5561
|
|
5562
5562
|
These tags belong to the ExifTool XMP-prl family 1 group.
|
5563
5563
|
|
@@ -6570,12 +6570,13 @@ GeoTiffAsciiParams.
|
|
6570
6570
|
|
6571
6571
|
=head3 PLUS XMP Tags
|
6572
6572
|
|
6573
|
-
PLUS (Picture Licensing Universal System) License Data Format
|
6573
|
+
PLUS (Picture Licensing Universal System) License Data Format 2.0.1 XMP
|
6574
6574
|
tags. Note that all controlled-vocabulary tags in this table (ie. tags with
|
6575
6575
|
a fixed set of values) have raw values which begin with
|
6576
6576
|
"http://ns.useplus.org/ldf/vocab/", but to reduce clutter this prefix has
|
6577
|
-
been removed from the values shown below
|
6578
|
-
the
|
6577
|
+
been removed from the values shown below, and from the values read and
|
6578
|
+
written with the -n option. See L<http://ns.useplus.org/> for the complete
|
6579
|
+
specification.
|
6579
6580
|
|
6580
6581
|
These tags belong to the ExifTool XMP-plus family 1 group.
|
6581
6582
|
|
@@ -6599,6 +6600,7 @@ These tags belong to the ExifTool XMP-plus family 1 group.
|
|
6599
6600
|
Custom7 lang-alt+
|
6600
6601
|
Custom8 lang-alt+
|
6601
6602
|
Custom9 lang-alt+
|
6603
|
+
DataMining string
|
6602
6604
|
EndUser EndUser Struct+
|
6603
6605
|
EndUserID string_+
|
6604
6606
|
EndUserName string_+
|
@@ -7188,7 +7190,7 @@ Tags extracted from the maker notes of iPhone images.
|
|
7188
7190
|
0x000c FocusDistanceRange rational64s[2]
|
7189
7191
|
0x000f OISMode int32s
|
7190
7192
|
0x0011 ContentIdentifier string
|
7191
|
-
0x0014 ImageCaptureType
|
7193
|
+
0x0014 ImageCaptureType int32s
|
7192
7194
|
0x0015 ImageUniqueID string
|
7193
7195
|
0x0017 LivePhotoVideoIndex yes
|
7194
7196
|
0x0019 ImageProcessingFlags? int32s
|
@@ -7479,6 +7481,7 @@ Unknown only to reduce the volume of the normal output.
|
|
7479
7481
|
CanonCameraInfo1000D Canon CameraInfo1000D
|
7480
7482
|
CanonCameraInfo1100D Canon CameraInfo600D
|
7481
7483
|
CanonCameraInfo1200D Canon CameraInfo60D
|
7484
|
+
CanonCameraInfoR6 Canon CameraInfoR6
|
7482
7485
|
CanonCameraInfoPowerShot Canon CameraInfoPowerShot
|
7483
7486
|
CanonCameraInfoPowerShot2 Canon CameraInfoPowerShot2
|
7484
7487
|
CanonCameraInfoUnknown32 Canon CameraInfoUnknown32
|
@@ -7516,6 +7519,7 @@ Unknown only to reduce the volume of the normal output.
|
|
7516
7519
|
0x0038 BatteryType undef
|
7517
7520
|
0x003c AFInfo3 Canon AFInfo2
|
7518
7521
|
0x0081 RawDataOffset no
|
7522
|
+
0x0082 RawDataLength no
|
7519
7523
|
0x0083 OriginalDecisionDataOffset int32u*
|
7520
7524
|
0x0090 CustomFunctions1D CanonCustom Functions1D
|
7521
7525
|
0x0091 PersonalFunctions CanonCustom PersonalFuncs
|
@@ -8462,6 +8466,14 @@ CameraInfo tags for the EOS 1000D.
|
|
8462
8466
|
615 PictureStyleInfo Canon PSInfo
|
8463
8467
|
2359 LensModel string[64]
|
8464
8468
|
|
8469
|
+
=head3 Canon CameraInfoR6 Tags
|
8470
|
+
|
8471
|
+
CameraInfo tags for the EOS R6.
|
8472
|
+
|
8473
|
+
Index1 Tag Name Writable
|
8474
|
+
------ -------- --------
|
8475
|
+
2801 ShutterCount int32u
|
8476
|
+
|
8465
8477
|
=head3 Canon CameraInfoPowerShot Tags
|
8466
8478
|
|
8467
8479
|
CameraInfo tags for PowerShot models such as the A450, A460, A550, A560,
|
@@ -13764,6 +13776,7 @@ DiMAGE X and Xt.
|
|
13764
13776
|
0x003d BlackLevel int16u[4]
|
13765
13777
|
0x003e ImageSizeRAW yes
|
13766
13778
|
0x003f WhiteBalanceFineTune rational64s[2]
|
13779
|
+
0x0044 JPGCompression yes
|
13767
13780
|
0x0045 CropArea int16u[4]
|
13768
13781
|
0x004e NikonSettings NikonSettings
|
13769
13782
|
0x004f ColorTemperatureAuto int16u
|
@@ -14281,6 +14294,7 @@ firmware 1.00 and earlier.
|
|
14281
14294
|
16 ImageArea int8u
|
14282
14295
|
545 ISO2 int8u
|
14283
14296
|
578 ShutterCount int32u
|
14297
|
+
671.1 JPGCompression int8u & 0x40
|
14284
14298
|
718 CustomSettingsD3S NikonCustom SettingsD3
|
14285
14299
|
|
14286
14300
|
=head3 Nikon ShotInfoD300a Tags
|
@@ -14664,7 +14678,7 @@ These tags are extracted from encrypted data in images from the Z7II.
|
|
14664
14678
|
|
14665
14679
|
=head3 Nikon MenuSettingsZ7II Tags
|
14666
14680
|
|
14667
|
-
These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50 and
|
14681
|
+
These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50, Zfc and Zf.
|
14668
14682
|
|
14669
14683
|
Index1 Tag Name Writable
|
14670
14684
|
------ -------- --------
|
@@ -18310,7 +18324,7 @@ These tags are used in Panasonic/Leica cameras.
|
|
18310
18324
|
0x006d City undef
|
18311
18325
|
0x006f Landmark undef
|
18312
18326
|
0x0070 IntelligentResolution int8u
|
18313
|
-
0x0076
|
18327
|
+
0x0076 MergedImages int16u
|
18314
18328
|
0x0077 BurstSpeed int16u
|
18315
18329
|
0x0079 IntelligentD-Range int16u
|
18316
18330
|
0x007c ClearRetouch int16u
|
@@ -21400,7 +21414,7 @@ Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
|
|
21400
21414
|
|
21401
21415
|
=head3 Sony Tag9050d Tags
|
21402
21416
|
|
21403
|
-
Valid for ILCE-6700/ZV-E1.
|
21417
|
+
Valid for ILCE-6700/7CM2/7CR/ZV-E1.
|
21404
21418
|
|
21405
21419
|
Index1 Tag Name Writable
|
21406
21420
|
------ -------- --------
|
@@ -21808,7 +21822,7 @@ E-mount models.
|
|
21808
21822
|
|
21809
21823
|
=head3 Sony Tag9416 Tags
|
21810
21824
|
|
21811
|
-
Valid for the ILCE-1/6700/7M4/7RM5/7SM3, ILME-FX3/FX30, ZV-E1.
|
21825
|
+
Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3, ILME-FX3/FX30, ZV-E1.
|
21812
21826
|
|
21813
21827
|
Index1 Tag Name Writable
|
21814
21828
|
------ -------- --------
|
@@ -21820,7 +21834,9 @@ Valid for the ILCE-1/6700/7M4/7RM5/7SM3, ILME-FX3/FX30, ZV-E1.
|
|
21820
21834
|
16 SonyFNumber2 no
|
21821
21835
|
18 SonyMaxApertureValue no
|
21822
21836
|
29 SequenceImageNumber no
|
21837
|
+
43 ReleaseMode2 no
|
21823
21838
|
53 ExposureProgram no
|
21839
|
+
55 CreativeStyle no
|
21824
21840
|
72 LensMount no
|
21825
21841
|
73 LensFormat no
|
21826
21842
|
74 LensMount no
|
@@ -25614,6 +25630,7 @@ These tags belong to the ExifTool XMP-photomech family 1 group.
|
|
25614
25630
|
-------- --------
|
25615
25631
|
ColorClass integer
|
25616
25632
|
CountryCode string/
|
25633
|
+
CreatorIdentity string
|
25617
25634
|
EditStatus string
|
25618
25635
|
PMVersion string
|
25619
25636
|
Prefs string
|
@@ -29103,6 +29120,7 @@ QuickTimeHandler option may be set to 0 to avoid this.
|
|
29103
29120
|
'itnu' iTunesU int8s
|
29104
29121
|
'keyw' Keyword string
|
29105
29122
|
'ldes' LongDescription string
|
29123
|
+
'ownr' Owner string
|
29106
29124
|
'pcst' Podcast int8s
|
29107
29125
|
'perf' Performer string
|
29108
29126
|
'pgap' PlayGap int8s
|
@@ -29131,6 +29149,7 @@ QuickTimeHandler option may be set to 0 to avoid this.
|
|
29131
29149
|
'tvnn' TVNetworkName string
|
29132
29150
|
'tvsh' TVShow string
|
29133
29151
|
'tvsn' TVSeason int32u
|
29152
|
+
'xid ' ISRC string
|
29134
29153
|
'yrrc' Year string
|
29135
29154
|
"\xa9ART" Artist string
|
29136
29155
|
"\xa9alb" Album string
|
@@ -29288,6 +29307,7 @@ and are not currently writable.
|
|
29288
29307
|
4 ColorPrimaries no
|
29289
29308
|
6 TransferCharacteristics no
|
29290
29309
|
8 MatrixCoefficients no
|
29310
|
+
10 VideoFullRangeFlag no
|
29291
29311
|
|
29292
29312
|
=head3 QuickTime HEVCConfig Tags
|
29293
29313
|
|
@@ -37533,6 +37553,53 @@ L<https://fits.gsfc.nasa.gov/fits_standard.html> for the specification.
|
|
37533
37553
|
'TIME-END' ObservationTimeEnd no
|
37534
37554
|
'TIME-OBS' ObservationTime no
|
37535
37555
|
|
37556
|
+
=head2 XISF Tags
|
37557
|
+
|
37558
|
+
This table lists some standard Extensible Image Serialization Format (XISF)
|
37559
|
+
tags, but ExifTool will extract any other tags found. See
|
37560
|
+
L<https://pixinsight.com/xisf/> for the specification.
|
37561
|
+
|
37562
|
+
Tag ID Tag Name Writable
|
37563
|
+
------ -------- --------
|
37564
|
+
'Abstract' Abstract no
|
37565
|
+
'AccessRights' AccessRights no
|
37566
|
+
'Authors' Authors no
|
37567
|
+
'BibliographicReferences'
|
37568
|
+
BibliographicReferences no
|
37569
|
+
'BriefDescription' BriefDescription no
|
37570
|
+
'CompressionCodecs' CompressionCodecs no
|
37571
|
+
'CompressionLevel' CompressionLevel no
|
37572
|
+
'Contributors' Contributors no
|
37573
|
+
'Copyright' Copyright no
|
37574
|
+
'CreationTime' CreateDate no
|
37575
|
+
'CreatorApplication' CreatorApplication no
|
37576
|
+
'CreatorModule' CreatorModule no
|
37577
|
+
'CreatorOS' CreatorOS no
|
37578
|
+
'Description' Description no
|
37579
|
+
'ImageBounds' ImageBounds no
|
37580
|
+
'ImageColorSpace' ColorSpace no
|
37581
|
+
'ImageData' ImageData no
|
37582
|
+
'ImageGeometry' ImageGeometry no
|
37583
|
+
'ImageICCProfile' ICC_Profile no
|
37584
|
+
'ImageICCProfileLocation' ICCProfileLocation no
|
37585
|
+
'ImageId' ImageID no
|
37586
|
+
'ImageImageType' ImageType no
|
37587
|
+
'ImageLocation' ImageLocation no
|
37588
|
+
'ImageOffset' ImagePixelOffset no
|
37589
|
+
'ImageOrientation' Orientation no
|
37590
|
+
'ImagePixelStorage' ImagePixelStorage no
|
37591
|
+
'ImageResolutionHorizontal' XResolution no
|
37592
|
+
'ImageResolutionUnit' ResolutionUnit no
|
37593
|
+
'ImageResolutionVertical' YResolution no
|
37594
|
+
'ImageSampleFormat' ImageSampleFormat no
|
37595
|
+
'ImageUuid' UUID no
|
37596
|
+
'Keywords' Keywords no
|
37597
|
+
'Languages' Languages no
|
37598
|
+
'License' License no
|
37599
|
+
'OriginalCreationTime' DateTimeOriginal no
|
37600
|
+
'RelatedResources' RelatedResources no
|
37601
|
+
'Title' Title no
|
37602
|
+
|
37536
37603
|
=head2 HTML Tags
|
37537
37604
|
|
37538
37605
|
Meta information extracted from the header of HTML and XHTML files. This is
|
@@ -38864,6 +38931,7 @@ FileName.
|
|
38864
38931
|
MaxVal File no
|
38865
38932
|
NewGUID ExifTool no
|
38866
38933
|
Now ExifTool no
|
38934
|
+
NumPlanes File no
|
38867
38935
|
OtherImage File no
|
38868
38936
|
PageCount File no
|
38869
38937
|
PreviewImage File yes
|
@@ -96,6 +96,8 @@ my %ctboID = (
|
|
96
96
|
"\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x99\x94\x91\xe3\xaf\xac" => 1, # XMP
|
97
97
|
"\xea\xf4\x2b\x5e\x1c\x98\x4b\x88\xb9\xfb\xb7\xdc\x40\x6e\x4d\x16" => 2, # PreviewImage
|
98
98
|
# ID 3 is used for 'mdat' atom (not a uuid)
|
99
|
+
# (haven't seen ID 4 yet)
|
100
|
+
"\x57\x66\xb8\x29\xbb\x6a\x47\xc5\xbc\xfb\x8b\x9f\x22\x60\xd0\x6d" => 5, # something to do with burst-roll image
|
99
101
|
);
|
100
102
|
|
101
103
|
# mark UserData tags that don't have ItemList counterparts as Preferred
|
@@ -1320,6 +1320,7 @@ sub SetNewValuesFromFile($$;@)
|
|
1320
1320
|
Unknown => $$options{Unknown},
|
1321
1321
|
UserParam => $$options{UserParam},
|
1322
1322
|
Validate => $$options{Validate},
|
1323
|
+
WindowsWideFile => $$options{WindowsWideFile},
|
1323
1324
|
XAttrTags => $$options{XAttrTags},
|
1324
1325
|
XMPAutoConv => $$options{XMPAutoConv},
|
1325
1326
|
);
|
@@ -0,0 +1,185 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# File: XISF.pm
|
3
|
+
#
|
4
|
+
# Description: Read Extensible Image Serialization Format metadata
|
5
|
+
#
|
6
|
+
# Revisions: 2023-10-10 - P. Harvey Created
|
7
|
+
#
|
8
|
+
# References: 1) https://pixinsight.com/doc/docs/XISF-1.0-spec/XISF-1.0-spec.html
|
9
|
+
#------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
package Image::ExifTool::XISF;
|
12
|
+
|
13
|
+
use strict;
|
14
|
+
use vars qw($VERSION);
|
15
|
+
use Image::ExifTool qw(:DataAccess :Utils);
|
16
|
+
use Image::ExifTool::XMP;
|
17
|
+
|
18
|
+
$VERSION = '1.00';
|
19
|
+
|
20
|
+
# XISF tags (ref 1)
|
21
|
+
%Image::ExifTool::XISF::Main = (
|
22
|
+
GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Image' },
|
23
|
+
VARS => { LONG_TAGS => 1 },
|
24
|
+
NOTES => q{
|
25
|
+
This table lists some standard Extensible Image Serialization Format (XISF)
|
26
|
+
tags, but ExifTool will extract any other tags found. See
|
27
|
+
L<https://pixinsight.com/xisf/> for the specification.
|
28
|
+
},
|
29
|
+
ImageGeometry => { },
|
30
|
+
ImageSampleFormat => { },
|
31
|
+
ImageBounds => { },
|
32
|
+
ImageImageType => { Name => 'ImageType' },
|
33
|
+
ImageColorSpace => { Name => 'ColorSpace' },
|
34
|
+
ImageLocation => { },
|
35
|
+
ImageResolutionHorizontal => 'XResolution',
|
36
|
+
ImageResolutionVertical => 'YResolution',
|
37
|
+
ImageResolutionUnit => 'ResolutionUnit',
|
38
|
+
ImageICCProfile => {
|
39
|
+
Name => 'ICC_Profile',
|
40
|
+
ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
|
41
|
+
Binary => 1,
|
42
|
+
},
|
43
|
+
ImageICCProfileLocation => { Name => 'ICCProfileLocation' },
|
44
|
+
ImagePixelStorage => { },
|
45
|
+
ImageOffset => { Name => 'ImagePixelOffset' },
|
46
|
+
ImageOrientation => { Name => 'Orientation' },
|
47
|
+
ImageId => { Name => 'ImageID' },
|
48
|
+
ImageUuid => { Name => 'UUID' },
|
49
|
+
ImageData => { Binary => 1 },
|
50
|
+
'CreationTime' => {
|
51
|
+
Name => 'CreateDate',
|
52
|
+
Shift => 'Time',
|
53
|
+
Groups => { 2 => 'Time' },
|
54
|
+
ValueConv => 'Image::ExifTool::XMP::ConvertXMPDate($val)',
|
55
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
56
|
+
},
|
57
|
+
CreatorApplication => { },
|
58
|
+
Abstract => { },
|
59
|
+
AccessRights => { },
|
60
|
+
Authors => { Groups => { 2 => 'Author' } },
|
61
|
+
BibliographicReferences => { },
|
62
|
+
BriefDescription => { },
|
63
|
+
CompressionLevel => { },
|
64
|
+
CompressionCodecs => { },
|
65
|
+
Contributors => { Groups => { 2 => 'Author' } },
|
66
|
+
Copyright => { Groups => { 2 => 'Author' } },
|
67
|
+
CreatorModule => { },
|
68
|
+
CreatorOS => { },
|
69
|
+
Description => { },
|
70
|
+
Keywords => { },
|
71
|
+
Languages => { },
|
72
|
+
License => { },
|
73
|
+
OriginalCreationTime => {
|
74
|
+
Name => 'DateTimeOriginal',
|
75
|
+
Description => 'Date/Time Original',
|
76
|
+
Shift => 'Time',
|
77
|
+
Groups => { 2 => 'Time' },
|
78
|
+
ValueConv => 'Image::ExifTool::XMP::ConvertXMPDate($val)',
|
79
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
80
|
+
},
|
81
|
+
RelatedResources => { },
|
82
|
+
Title => { },
|
83
|
+
);
|
84
|
+
|
85
|
+
#------------------------------------------------------------------------------
|
86
|
+
# Handle properties in XISF metadata structures
|
87
|
+
# Inputs: 0) attribute list ref, 1) attr hash ref,
|
88
|
+
# 2) property name ref, 3) property value ref
|
89
|
+
# Returns: true if value was changed
|
90
|
+
sub HandleXISFAttrs($$$$)
|
91
|
+
{
|
92
|
+
my ($attrList, $attrs, $prop, $valPt) = @_;
|
93
|
+
return 0 unless defined $$attrs{id};
|
94
|
+
my ($changed, $a);
|
95
|
+
# use "id" as the tag name, "value" as the value, and ignore "type"
|
96
|
+
$$prop = $$attrs{id};
|
97
|
+
$$prop =~ s/^XISF://; # remove XISF namespace
|
98
|
+
if (defined $$attrs{value}) {
|
99
|
+
$$valPt = $$attrs{value};
|
100
|
+
$changed = 1;
|
101
|
+
}
|
102
|
+
my @attrs = @$attrList;
|
103
|
+
@$attrList = ( );
|
104
|
+
foreach $a (@attrs) {
|
105
|
+
if ($a eq 'id' or $a eq 'value' or $a eq 'type') {
|
106
|
+
delete $$attrs{$a};
|
107
|
+
} else {
|
108
|
+
push @$attrList, $a;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
return $changed;
|
112
|
+
}
|
113
|
+
|
114
|
+
#------------------------------------------------------------------------------
|
115
|
+
# Read information in a XISF document
|
116
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref
|
117
|
+
# Returns: 1 on success, 0 if this wasn't a valid XISF file
|
118
|
+
sub ProcessXISF($$)
|
119
|
+
{
|
120
|
+
my ($et, $dirInfo) = @_;
|
121
|
+
my $raf = $$dirInfo{RAF};
|
122
|
+
my $buff;
|
123
|
+
|
124
|
+
return 0 unless $raf->Read($buff, 16) == 16 and $buff =~ /^XISF0100/;
|
125
|
+
$et->SetFileType();
|
126
|
+
SetByteOrder('II');
|
127
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::XISF::Main');
|
128
|
+
my $hdrLen = Get32u(\$buff, 8);
|
129
|
+
$raf->Read($buff, $hdrLen) == $hdrLen or $et->Warn('Error reading XISF header'), return 1;
|
130
|
+
$et->FoundTag(XML => $buff);
|
131
|
+
my %dirInfo = (
|
132
|
+
DataPt => \$buff,
|
133
|
+
IgnoreProp => { xisf => 1, Metadata => 1, Property => 1 },
|
134
|
+
XMPParseOpts => { AttrProc => \&HandleXISFAttrs },
|
135
|
+
);
|
136
|
+
Image::ExifTool::XMP::ProcessXMP($et, \%dirInfo, $tagTablePtr);
|
137
|
+
my $geo = $$et{VALUE}{ImageGeometry};
|
138
|
+
if ($geo) {
|
139
|
+
my ($w, $h, $n) = split /:/, $geo;
|
140
|
+
$et->FoundTag(ImageWidth => $w);
|
141
|
+
$et->FoundTag(ImageHeight => $h);
|
142
|
+
$et->FoundTag(NumPlanes => $n);
|
143
|
+
}
|
144
|
+
return 1;
|
145
|
+
}
|
146
|
+
|
147
|
+
1; # end
|
148
|
+
|
149
|
+
__END__
|
150
|
+
|
151
|
+
=head1 NAME
|
152
|
+
|
153
|
+
Image::ExifTool::XISF - Read Extensible Image Serialization Format metadata
|
154
|
+
|
155
|
+
=head1 SYNOPSIS
|
156
|
+
|
157
|
+
This module is used by Image::ExifTool
|
158
|
+
|
159
|
+
=head1 DESCRIPTION
|
160
|
+
|
161
|
+
This module contains definitions required by Image::ExifTool to read meta
|
162
|
+
information from XISF (Extensible Image Serialization Format) images.
|
163
|
+
|
164
|
+
=head1 AUTHOR
|
165
|
+
|
166
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
167
|
+
|
168
|
+
This library is free software; you can redistribute it and/or modify it
|
169
|
+
under the same terms as Perl itself.
|
170
|
+
|
171
|
+
=head1 REFERENCES
|
172
|
+
|
173
|
+
=over 4
|
174
|
+
|
175
|
+
=item L<https://pixinsight.com/doc/docs/XISF-1.0-spec/XISF-1.0-spec.html>
|
176
|
+
|
177
|
+
=back
|
178
|
+
|
179
|
+
=head1 SEE ALSO
|
180
|
+
|
181
|
+
L<Image::ExifTool::TagNames/XISF Tags>,
|
182
|
+
L<Image::ExifTool(3pm)|Image::ExifTool>
|
183
|
+
|
184
|
+
=cut
|
185
|
+
|
@@ -1063,7 +1063,7 @@ my %prismPublicationDate = (
|
|
1063
1063
|
NOTES => q{
|
1064
1064
|
PRISM Rights Language 2.1 namespace tags. These tags have been deprecated
|
1065
1065
|
since the release of the PRISM Usage Rights 3.0. (see
|
1066
|
-
L<
|
1066
|
+
L<https://www.w3.org/submissions/2020/SUBM-prism-20200910/prism-image.html>)
|
1067
1067
|
},
|
1068
1068
|
geography => { List => 'Bag' },
|
1069
1069
|
industry => { List => 'Bag' },
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -29,15 +29,15 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
30
30
|
%static_vars);
|
31
31
|
|
32
|
-
$VERSION = '12.
|
32
|
+
$VERSION = '12.68';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
36
36
|
# all public non-object-oriented functions:
|
37
37
|
Public => [qw(
|
38
|
-
ImageInfo GetTagName GetShortcuts GetAllTags
|
39
|
-
GetAllGroups GetDeleteGroups GetFileType CanWrite
|
40
|
-
AddUserDefinedTags
|
38
|
+
ImageInfo AvailableOptions GetTagName GetShortcuts GetAllTags
|
39
|
+
GetWritableTags GetAllGroups GetDeleteGroups GetFileType CanWrite
|
40
|
+
CanCreate AddUserDefinedTags
|
41
41
|
)],
|
42
42
|
# exports not part of the public API, but used by ExifTool modules:
|
43
43
|
DataAccess => [qw(
|
@@ -149,8 +149,8 @@ sub ReadValue($$$;$$$);
|
|
149
149
|
FLAC Ogg Vorbis APE APE::NewHeader APE::OldHeader Audible MPC MPEG::Audio
|
150
150
|
MPEG::Video MPEG::Xing M2TS QuickTime QuickTime::ImageFile QuickTime::Stream
|
151
151
|
QuickTime::Tags360Fly Matroska Matroska::StdTag MOI MXF DV Flash Flash::FLV
|
152
|
-
Real::Media Real::Audio Real::Metafile Red RIFF AIFF ASF WTV DICOM FITS
|
153
|
-
JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion
|
152
|
+
Real::Media Real::Audio Real::Metafile Red RIFF AIFF ASF WTV DICOM FITS XISF
|
153
|
+
MIE JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion
|
154
154
|
EXE::PEString EXE::MachO EXE::PEF EXE::ELF EXE::AR EXE::CHM LNK Font VCard
|
155
155
|
Text VCard::VCalendar VCard::VNote RSRC Rawzor ZIP ZIP::GZIP ZIP::RAR
|
156
156
|
ZIP::RAR5 RTF OOXML iWork ISO FLIR::AFF FLIR::FPF MacOS MacOS::MDItem
|
@@ -193,10 +193,11 @@ $defaultLang = 'en'; # default language
|
|
193
193
|
@fileTypes = qw(JPEG EXV CRW DR4 TIFF GIF MRW RAF X3F JP2 PNG MIE MIFF PS PDF
|
194
194
|
PSD XMP BMP WPG BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV
|
195
195
|
OGG FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF
|
196
|
-
LFP HTML VRD RTF FITS XCF DSS QTIF FPX PICT ZIP GZIP PLIST
|
197
|
-
7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font
|
198
|
-
M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI
|
199
|
-
PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD ICO
|
196
|
+
LFP HTML VRD RTF FITS XISF XCF DSS QTIF FPX PICT ZIP GZIP PLIST
|
197
|
+
RAR 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font
|
198
|
+
RSRC M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI
|
199
|
+
R3D AA PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD ICO
|
200
|
+
TXT);
|
200
201
|
|
201
202
|
# file types that we can write (edit)
|
202
203
|
my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
|
@@ -545,6 +546,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
545
546
|
X3F => ['X3F', 'Sigma RAW format'],
|
546
547
|
XCF => ['XCF', 'GIMP native image format'],
|
547
548
|
XHTML=> ['HTML', 'Extensible HyperText Markup Language'],
|
549
|
+
XISF => ['XISF', 'Extensible Image Serialization Format'],
|
548
550
|
XLA => ['FPX', 'Microsoft Excel Add-in'],
|
549
551
|
XLAM => [['ZIP','FPX'], 'Office Open XML Spreadsheet Add-in Macro-enabled'],
|
550
552
|
XLS => ['FPX', 'Microsoft Excel Spreadsheet'],
|
@@ -798,6 +800,7 @@ my %fileDescription = (
|
|
798
800
|
WTV => 'video/x-ms-wtv',
|
799
801
|
X3F => 'image/x-sigma-x3f',
|
800
802
|
XCF => 'image/x-xcf',
|
803
|
+
XISF => 'image/x-xisf',
|
801
804
|
XLA => 'application/vnd.ms-excel',
|
802
805
|
XLAM => 'application/vnd.ms-excel.addin.macroEnabled.12',
|
803
806
|
XLS => 'application/vnd.ms-excel',
|
@@ -994,6 +997,7 @@ $testLen = 1024; # number of bytes to read when testing for magic number
|
|
994
997
|
WTV => '\xb7\xd8\x00\x20\x37\x49\xda\x11\xa6\x4e\x00\x07\xe9\x5e\xad\x8d',
|
995
998
|
X3F => 'FOVb',
|
996
999
|
XCF => 'gimp xcf ',
|
1000
|
+
XISF => 'XISF0100',
|
997
1001
|
XMP => '\0{0,3}(\xfe\xff|\xff\xfe|\xef\xbb\xbf)?\0{0,3}\s*<',
|
998
1002
|
ZIP => 'PK\x03\x04',
|
999
1003
|
);
|
@@ -1133,6 +1137,7 @@ my @availableOptions = (
|
|
1133
1137
|
[ 'UserParam', { }, 'user parameters for additional user-defined tag values' ],
|
1134
1138
|
[ 'Validate', undef, 'perform additional validation' ],
|
1135
1139
|
[ 'Verbose', 0, 'print verbose messages (0-5, higher # = more verbose)' ],
|
1140
|
+
[ 'WindowsWideFile', undef, 'force the use of Windows wide-character file routines' ], # (see forum15208)
|
1136
1141
|
[ 'WriteMode', 'wcg', 'enable all write modes by default' ],
|
1137
1142
|
[ 'XAttrTags', undef, 'extract MacOS extended attribute tags' ],
|
1138
1143
|
[ 'XMPAutoConv', 1, 'automatic conversion of unknown XMP tag values' ],
|
@@ -1580,6 +1585,7 @@ my %systemTagsNotes = (
|
|
1580
1585
|
ImageHeight => { Notes => 'the height of the image in number of pixels' },
|
1581
1586
|
XResolution => { Notes => 'the horizontal pixel resolution' },
|
1582
1587
|
YResolution => { Notes => 'the vertical pixel resolution' },
|
1588
|
+
NumPlanes => { Notes => 'number of color planes' },
|
1583
1589
|
MaxVal => { Notes => 'maximum pixel value in PPM or PGM image' },
|
1584
1590
|
EXIF => {
|
1585
1591
|
Notes => q{
|
@@ -1843,7 +1849,7 @@ my %systemTagsNotes = (
|
|
1843
1849
|
Geotime => {
|
1844
1850
|
Writable => 1,
|
1845
1851
|
WriteOnly => 1,
|
1846
|
-
AllowGroup => '(exif|gps|xmp|xmp-exif)',
|
1852
|
+
AllowGroup => '(exif|gps|xmp|xmp-exif|quicktime|keys|itemlist|userdata)',
|
1847
1853
|
Notes => q{
|
1848
1854
|
this write-only tag is used to define a date/time for interpolating a
|
1849
1855
|
position in the GPS track specified by the Geotag tag. Writing this tag
|
@@ -4305,6 +4311,7 @@ sub EncodeFileName($$;$)
|
|
4305
4311
|
{
|
4306
4312
|
my ($self, $file, $force) = @_;
|
4307
4313
|
my $enc = $$self{OPTIONS}{CharsetFileName};
|
4314
|
+
$force = 1 if $$self{OPTIONS}{WindowsWideFile};
|
4308
4315
|
if ($enc) {
|
4309
4316
|
if ($file =~ /[\x80-\xff]/ or $force) {
|
4310
4317
|
# encode for use in Windows Unicode functions if necessary
|
@@ -4740,13 +4747,16 @@ sub CopyAltInfo($$$)
|
|
4740
4747
|
# Notes: index lists are returned in increasing order
|
4741
4748
|
sub SetFoundTags($)
|
4742
4749
|
{
|
4750
|
+
local $_;
|
4743
4751
|
my $self = shift;
|
4744
4752
|
my $options = $$self{OPTIONS};
|
4745
4753
|
my $reqTags = $$self{REQUESTED_TAGS} || [ ];
|
4746
4754
|
my $duplicates = $$options{Duplicates};
|
4747
4755
|
my $exclude = $$options{Exclude};
|
4748
4756
|
my $fileOrder = $$self{FILE_ORDER};
|
4749
|
-
my @groupOptions
|
4757
|
+
my @groupOptions;
|
4758
|
+
# ignore empty group options
|
4759
|
+
$$options{$_} and push @groupOptions, $_ foreach sort grep /^Group/, keys %$options;
|
4750
4760
|
my $doDups = $duplicates || $exclude || @groupOptions;
|
4751
4761
|
my ($tag, $rtnTags, @byValue, @wildTags);
|
4752
4762
|
|
@@ -4911,7 +4921,6 @@ sub SetFoundTags($)
|
|
4911
4921
|
$groupList = [ $$options{$groupOpt} ];
|
4912
4922
|
}
|
4913
4923
|
foreach (@$groupList) {
|
4914
|
-
next unless defined $_;
|
4915
4924
|
# groups have priority in order they were specified
|
4916
4925
|
++$wantOrder;
|
4917
4926
|
my ($groupName, $want);
|
@@ -7936,6 +7945,9 @@ sub DoProcessTIFF($$;$)
|
|
7936
7945
|
}
|
7937
7946
|
if ($$self{TIFF_TYPE} eq 'TIFF') {
|
7938
7947
|
$self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
|
7948
|
+
} elsif ($$self{TIFF_TYPE} eq 'NRW' and $$self{VALUE}{NEFLinearizationTable}) {
|
7949
|
+
# fix NEF type if misidentified as NRW
|
7950
|
+
$self->OverrideFileType($$self{TIFF_TYPE} = 'NEF');
|
7939
7951
|
}
|
7940
7952
|
if ($$self{ImageDataHash} and $$self{A100DataOffset} and $raf->Seek($$self{A100DataOffset},0)) {
|
7941
7953
|
$self->ImageDataHash($raf, undef, 'A100');
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -102,11 +102,11 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
102
102
|
DCP r/w | ICO r | MPG r | PSB r/w | WV r
|
103
103
|
DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
|
104
104
|
DFONT r | IDML r | MQV r/w | PSP r | XCF r
|
105
|
-
DIVX r | IIQ r/w | MRC r | QTIF r/w |
|
106
|
-
DJVU r | IND r/w | MRW r/w | R3D r |
|
107
|
-
DLL r | INSP r/w | MXF r | RA r |
|
108
|
-
DNG r/w | INSV r | NEF r/w | RAF r/w |
|
109
|
-
DOC r | INX r | NKSC r/w | RAM r |
|
105
|
+
DIVX r | IIQ r/w | MRC r | QTIF r/w | XISF r
|
106
|
+
DJVU r | IND r/w | MRW r/w | R3D r | XLS r
|
107
|
+
DLL r | INSP r/w | MXF r | RA r | XLSX r
|
108
|
+
DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
|
109
|
+
DOC r | INX r | NKSC r/w | RAM r | ZIP r
|
110
110
|
DOCX r | ISO r | NRW r/w | RAR r |
|
111
111
|
|
112
112
|
Meta Information
|
@@ -391,12 +391,14 @@ ExifTool may be returned:
|
|
391
391
|
Get/set ExifTool options. This function can be called to set the default
|
392
392
|
options for an ExifTool object. Options set this way are in effect for
|
393
393
|
all function calls but may be overridden by options passed as arguments
|
394
|
-
to some functions. Option names are not case sensitive
|
394
|
+
to some functions. Option names are not case sensitive, but option values
|
395
|
+
are.
|
395
396
|
|
396
397
|
The default option values may be changed by defining a
|
397
398
|
%Image::ExifTool::UserDefined::Options hash. See the ExifTool_config file
|
398
|
-
in the full ExifTool distribution for examples.
|
399
|
-
same
|
399
|
+
in the full ExifTool distribution for examples. Unless otherwise noted, a
|
400
|
+
default of undef has the same effect as a value of 0 for options with
|
401
|
+
numerical values.
|
400
402
|
|
401
403
|
# exclude the 'OwnerName' tag from returned information
|
402
404
|
$exifTool->Options(Exclude => 'OwnerName');
|
@@ -1081,6 +1083,14 @@ details about the tags. Level 3 adds a hex dump of the tag data, but with
|
|
1081
1083
|
limits on the number of bytes dumped. Levels 4 and 5 remove the dump limit
|
1082
1084
|
on tag values and JPEG segment data respectively.
|
1083
1085
|
|
1086
|
+
=item WindowsWideFile
|
1087
|
+
|
1088
|
+
Force the use of wide-character Windows I/O functions when the
|
1089
|
+
L</CharsetFileName> option is used. This may be necessary when files are on
|
1090
|
+
a network drive and the current directory name contains Unicode characters.
|
1091
|
+
By default, the wide-character functions are used only if the specified file
|
1092
|
+
path contains Unicode characters.
|
1093
|
+
|
1084
1094
|
=item WriteMode
|
1085
1095
|
|
1086
1096
|
Set tag write/create mode. Value is a string of one or more characters from
|
@@ -1155,7 +1165,7 @@ ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase,
|
|
1155
1165
|
IgnoreMinorErrors, IgnoreTags, Lang, LargeFileSupport, MakerNotes,
|
1156
1166
|
MDItemTags, NoPDFList, Password, QuickTimeUTC (enforced 1904 time zero),
|
1157
1167
|
RequestAll, RequestTags, SaveFormat, SavePath, ScanForXMP, Struct, TextOut,
|
1158
|
-
Unknown, Verbose, XAttrTags and XMPAutoConv.
|
1168
|
+
Unknown, Verbose, WindowsWideFile, XAttrTags and XMPAutoConv.
|
1159
1169
|
|
1160
1170
|
=item Return Value:
|
1161
1171
|
|
@@ -1294,7 +1304,7 @@ The following ExifTool options are effective in the call to L</WriteInfo>:
|
|
1294
1304
|
|
1295
1305
|
ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact,
|
1296
1306
|
Compress, FixBase, IgnoreMinorErrors, NoMultiExif, NoPDFList, Password,
|
1297
|
-
QuickTimeHandler, QuickTimePad, Verbose and WriteMode.
|
1307
|
+
QuickTimeHandler, QuickTimePad, Verbose, WindowsWideFile and WriteMode.
|
1298
1308
|
|
1299
1309
|
=head2 GetTagList
|
1300
1310
|
|