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.
@@ -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 26990 tags, with 16972 unique tag names.
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<http://www.prismstandard.org/>)
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 1.2.1 XMP
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. See L<http://ns.useplus.org/> for
6578
- the complete specification.
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? int32s
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 Zfc.
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 HDRShot int16u
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<http://www.prismstandard.org/>)
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' },
@@ -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.65';
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 GetWritableTags
39
- GetAllGroups GetDeleteGroups GetFileType CanWrite CanCreate
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 MIE
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 RAR
197
- 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC
198
- M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI R3D AA
199
- PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD ICO TXT);
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 = sort grep /^Group/, keys %$options;
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');
@@ -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 | XLS r
106
- DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
107
- DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
108
- DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
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. A default of undef has the
399
- same behaviour as a value of 0 for numerical options.
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