exiftool_vendored 13.24.0 → 13.25.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f33904cf1cb68c4430d4c01c96d72b95f075598f22d8dc3d11dd675d748d2d07
4
- data.tar.gz: feb3c0a6a5adcdb9d641fe9c525fccbae1f418b6ea2410114a982e405361bef2
3
+ metadata.gz: b32fb55b43516b86b41460ed80654d3214bcee87257d0a90c614c40bb29fa16f
4
+ data.tar.gz: 02d0ebd73cd108f256854da2ae9994f0e33fe2db0c84a3af5b76c6510d0d3e10
5
5
  SHA512:
6
- metadata.gz: 715c7f81c667b8805769396e03b36bd2b2fc22c0085a4755e6f4eb12e9ede928732f3a28f484f14f854e6547bc473466992812ad57b35a70553d86b1f61c30ea
7
- data.tar.gz: b3a603f49067c3d03fb7cd4ec1aaee82d3924010e532622ae46f7398e40d6612cbf3fcb8f7e02c0adddb305c971e31a4e8fce19470867b6b68b26567d6931ebb
6
+ metadata.gz: 44f7894cac459290dbf545321f068ae903b2212abc5cd88ef399949bfa667511e01cbc9049b6329301a268a7daf4b4a5bb05c66625655010356b9bc895d23954
7
+ data.tar.gz: 74d8a93399c703661ad4ed05d7f3a4748f994950be72be4b1237cb033a8c5b494ba9ce93a0bd79f9acae788afd74c8149e4ae3250b85d66d9bff18dd6209ec99
data/bin/Changes CHANGED
@@ -4,9 +4,19 @@ ExifTool Version History
4
4
 
5
5
  RSS feed: https://exiftool.org/rss.xml
6
6
 
7
- Note: The most recent production release is Version 13.10. (Other versions are
7
+ Note: The most recent production release is Version 13.25. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Mar. 11, 2025 - Version 13.25 (production release)
11
+
12
+ - IMPORTANT: Fixed issue which could corrupt HEIC images from newer iPhones
13
+ when writing QuickTime:Rotation
14
+ - Decode more PLIST information from HEIC images
15
+ - Updated Geolocation databases from current geonames.org files
16
+ - Updated DarwinCore for the 2023 specification (thanks Herb)
17
+ - API Changes:
18
+ - Added KeepUTCTime option
19
+
10
20
  Mar. 7, 2025 - Version 13.24
11
21
 
12
22
  - Changed -listf, -listr and -listwf options to print descriptions when either
@@ -15,7 +25,7 @@ Mar. 7, 2025 - Version 13.24
15
25
 
16
26
  Mar. 7, 2025 - Version 13.23
17
27
 
18
- - Added read support for CAP, PCAP and PACPNG files
28
+ - Added read support for CAP, PCAP and PACPNG files (github #318)
19
29
  - Added a number of new Sony LensType2 values (thanks Jos Roost)
20
30
  - Added the 2 new GPSAltitudeRef values defined by EXIF 3.0
21
31
  - Decode APP4 "Qualcomm Dual Camera Attributes" metadata
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.24"
53
+ "version" : "13.25"
54
54
  }
data/bin/META.yml CHANGED
@@ -31,4 +31,4 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.24'
34
+ version: '13.25'
data/bin/README CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
109
109
  terminal window to extract and run ExifTool:
110
110
 
111
111
  cd ~/Desktop
112
- gzip -dc Image-ExifTool-13.24.tar.gz | tar -xf -
113
- cd Image-ExifTool-13.24
112
+ gzip -dc Image-ExifTool-13.25.tar.gz | tar -xf -
113
+ cd Image-ExifTool-13.25
114
114
  ./exiftool t/images/ExifTool.jpg
115
115
 
116
116
  Note: These commands extract meta information from one of the test images.
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '13.24';
14
+ my $version = '13.25';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -6053,7 +6053,7 @@ with this command:
6053
6053
 
6054
6054
  produces output like this:
6055
6055
 
6056
- -- Generated by ExifTool 13.24 --
6056
+ -- Generated by ExifTool 13.25 --
6057
6057
  File: a.jpg - 2003:10:31 15:44:19
6058
6058
  (f/5.6, 1/60s, ISO 100)
6059
6059
  File: b.jpg - 2006:05:23 11:57:38
@@ -16,7 +16,7 @@ use vars qw($VERSION);
16
16
  use Image::ExifTool::Exif;
17
17
  use Image::ExifTool::PLIST;
18
18
 
19
- $VERSION = '1.14';
19
+ $VERSION = '1.15';
20
20
 
21
21
  sub ConvertPLIST($$);
22
22
 
@@ -307,7 +307,17 @@ sub ConvertPLIST($$);
307
307
  Name => 'Apple_0x004f',
308
308
  Unknown => 1,
309
309
  ValueConv => \&ConvertPLIST,
310
- }
310
+ },
311
+ 0x0054 => {
312
+ Name => 'Apple_0x0054',
313
+ Unknown => 1,
314
+ ValueConv => \&ConvertPLIST,
315
+ },
316
+ 0x005a => {
317
+ Name => 'Apple_0x005a',
318
+ Unknown => 1,
319
+ ValueConv => \&ConvertPLIST,
320
+ },
311
321
  );
312
322
 
313
323
  # PLIST-format CMTime structure (ref PH)
@@ -4,6 +4,7 @@
4
4
  # Description: Darwin Core XMP tags
5
5
  #
6
6
  # Revisions: 2013-01-28 - P. Harvey Created
7
+ # 2025-03-09 - Herb forum17172 changes dwc.tdwg.org 2023
7
8
  #
8
9
  # References: 1) http://rs.tdwg.org/dwc/index.htm
9
10
  # 2) https://exiftool.org/forum/index.php/topic,4442.0/all.html
@@ -15,7 +16,7 @@ use strict;
15
16
  use vars qw($VERSION);
16
17
  use Image::ExifTool::XMP;
17
18
 
18
- $VERSION = '1.07';
19
+ $VERSION = '1.08';
19
20
 
20
21
  my %dateTimeInfo = (
21
22
  # NOTE: Do NOT put "Groups" here because Groups hash must not be common!
@@ -35,7 +36,7 @@ my %event = (
35
36
  STRUCT_NAME => 'DarwinCore Event',
36
37
  NAMESPACE => 'dwc',
37
38
  day => { Writable => 'integer', Groups => { 2 => 'Time' } },
38
- earliestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
39
+ earliestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } }, # dwc.tdwg.org removed 2023
39
40
  endDayOfYear => { Writable => 'integer', Groups => { 2 => 'Time' } },
40
41
  eventDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
41
42
  eventID => { Avoid => 1, Notes => 'avoided in favor of XMP-iptcExt:EventID' },
@@ -63,7 +64,7 @@ my %event = (
63
64
  fieldNotes => { },
64
65
  fieldNumber => { },
65
66
  habitat => { },
66
- latestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
67
+ latestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } }, # dwc.tdwg.org removed 2023
67
68
  month => { Writable => 'integer', Groups => { 2 => 'Time' } },
68
69
  parentEventID => { },
69
70
  samplingEffort => { },
@@ -73,6 +74,7 @@ my %event = (
73
74
  startDayOfYear => { Writable => 'integer', Groups => { 2 => 'Time' } },
74
75
  verbatimEventDate => { Groups => { 2 => 'Time' } },
75
76
  year => { Writable => 'integer', Groups => { 2 => 'Time' } },
77
+ eventType => { }, # dwc.tdwg.org added 2023
76
78
  );
77
79
 
78
80
  # Darwin Core tags
@@ -161,6 +163,7 @@ my %event = (
161
163
  measurementType => { },
162
164
  measurementUnit => { },
163
165
  measurementValue => { },
166
+ parentMeasurementID => { }, # dwc.tdwg.org added 2023
164
167
  },
165
168
  },
166
169
  Occurrence => {
@@ -170,25 +173,25 @@ my %event = (
170
173
  associatedMedia => { },
171
174
  associatedOccurrences => { },
172
175
  associatedReferences => { },
173
- associatedSequences => { },
176
+ associatedSequences => { }, # dwc.tdwg.org removed 2023
174
177
  associatedTaxa => { },
175
178
  behavior => { },
176
179
  catalogNumber => { },
177
- disposition => { },
180
+ disposition => { }, # dwc.tdwg.org removed 2023
178
181
  establishmentMeans => { },
179
182
  individualCount => { },
180
- individualID => { },
183
+ individualID => { }, # dwc.tdwg.org removed 2023
181
184
  lifeStage => { },
182
185
  occurrenceDetails => { },
183
- occurrenceID => { },
186
+ occurrenceID => { }, # dwc.tdwg.org removed 2023
184
187
  occurrenceRemarks => { },
185
188
  occurrenceStatus => { },
186
189
  organismQuantity => { },
187
190
  organismQuantityType => { },
188
191
  otherCatalogNumbers => { },
189
192
  preparations => { },
190
- previousIdentifications => { },
191
- recordedBy => { },
193
+ previousIdentifications => { }, # dwc.tdwg.org removed 2023
194
+ recordedBy => { }, # dwc.tdwg.org removed 2023
192
195
  recordNumber => { },
193
196
  reproductiveCondition => { },
194
197
  sex => { },
@@ -197,6 +200,8 @@ my %event = (
197
200
  georeferenceVerificationStatus => { },
198
201
  pathway => { },
199
202
  recordedByID => { },
203
+ caste => { }, # dwc.tdwg.org added 2023
204
+ vitality => { }, # dwc.tdwg.org added 2023
200
205
  },
201
206
  },
202
207
  OccurrenceOccurrenceDetails => { Name => 'OccurrenceDetails', Flat => 1 },
@@ -207,7 +212,7 @@ my %event = (
207
212
  Struct => {
208
213
  STRUCT_NAME => 'DarwinCore Organism',
209
214
  NAMESPACE => 'dwc',
210
- associatedOccurrences => { },
215
+ associatedOccurrences => { }, # dwc.tdwg.org removed 2023
211
216
  associatedOrganisms => { },
212
217
  organismID => { },
213
218
  organismName => { },
@@ -291,6 +296,12 @@ my %event = (
291
296
  taxonomicStatus => { },
292
297
  verbatimTaxonRank => { },
293
298
  vernacularName => { Writable => 'lang-alt' },
299
+ superFamily => { }, # dwc.tdwg.org added 2023
300
+ subFamily => { }, # dwc.tdwg.org added 2023
301
+ tribe => { }, # dwc.tdwg.org added 2023
302
+ subTribe => { }, # dwc.tdwg.org added 2023
303
+ genericName => { }, # dwc.tdwg.org added 2023
304
+ infragenericEpithet => { }, # dwc.tdwg.org added 2023
294
305
  },
295
306
  },
296
307
  TaxonTaxonConceptID => { Name => 'TaxonConceptID', Flat => 1 },
@@ -321,7 +332,7 @@ my %event = (
321
332
  georeferenceProtocol => { },
322
333
  georeferenceRemarks => { },
323
334
  georeferenceSources => { },
324
- georeferenceVerificationStatus => { },
335
+ georeferenceVerificationStatus => { }, # dwc.tdwg.org removed 2023
325
336
  higherGeography => { },
326
337
  higherGeographyID => { },
327
338
  island => { },
Binary file
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
21
21
  use Image::ExifTool::XMP;
22
22
  use Image::ExifTool::GPS;
23
23
 
24
- $VERSION = '1.14';
24
+ $VERSION = '1.15';
25
25
 
26
26
  sub ExtractObject($$;$);
27
27
  sub Get24u($$);
@@ -352,7 +352,7 @@ sub ExtractObject($$;$)
352
352
  my $name = $tag;
353
353
  $name =~ s/([^A-Za-z])([a-z])/$1\u$2/g; # capitalize words
354
354
  $name =~ tr/-_a-zA-Z0-9//dc; # remove illegal characters
355
- $name = "Tag$name" if length($name) < 2 or $name =~ /^[-0-9]/;
355
+ $name = 'Tag'.ucfirst($name) if length($name) < 2 or $name =~ /^[-0-9]/;
356
356
  $tagInfo = { Name => ucfirst($name), List => 1 };
357
357
  if ($$plistInfo{DateFormat}) {
358
358
  $$tagInfo{Groups}{2} = 'Time';
@@ -48,7 +48,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
48
48
  use Image::ExifTool::Exif;
49
49
  use Image::ExifTool::GPS;
50
50
 
51
- $VERSION = '3.13';
51
+ $VERSION = '3.14';
52
52
 
53
53
  sub ProcessMOV($$;$);
54
54
  sub ProcessKeys($$$);
@@ -492,6 +492,8 @@ my %qtFlags = ( #12
492
492
  %dontInherit = (
493
493
  ispe => 1, # primary item must have an ispe and pixi, so no need to inherit these
494
494
  pixi => 1,
495
+ irot => 1, # (tmap may have a different irot)
496
+ pasp => 1, # (NC)
495
497
  hvcC => 2, # (hvcC is a property of hvc1 referred to by primary grid)
496
498
  colr => 2, # (colr is a property of primary grid or hvc1 referred to by primary)
497
499
  );
@@ -2854,6 +2856,7 @@ my %userDefined = (
2854
2856
  %Image::ExifTool::QuickTime::ItemPropCont = (
2855
2857
  PROCESS_PROC => \&ProcessMOV,
2856
2858
  WRITE_PROC => \&WriteQuickTime,
2859
+ CHECK_PROC => \&CheckQTValue,
2857
2860
  PERMANENT => 1, # (can't be deleted)
2858
2861
  GROUPS => { 2 => 'Image' },
2859
2862
  VARS => { START_INDEX => 1 }, # show verbose indices starting at 1
@@ -2911,6 +2914,7 @@ my %userDefined = (
2911
2914
  Name => 'PixelAspectRatio',
2912
2915
  Format => 'int32u',
2913
2916
  Writable => 'int32u',
2917
+ Count => 2,
2914
2918
  Protected => 1,
2915
2919
  },
2916
2920
  rloc => {
@@ -9174,7 +9178,8 @@ sub HandleItemInfo($)
9174
9178
  $et->VPrint(0, "$$et{INDENT}Item $id) '${type}' ($len bytes$enc)\n");
9175
9179
  }
9176
9180
  # get ExifTool name for this item
9177
- my $name = { Exif => 'EXIF', 'application/rdf+xml' => 'XMP', jpeg => 'PreviewImage' }->{$type} || '';
9181
+ my $name = { Exif => 'EXIF', 'application/rdf+xml' => 'XMP', jpeg => 'PreviewImage',
9182
+ 'uri ' => 'PLIST' }->{$type} || '';
9178
9183
  my ($warn, $extent);
9179
9184
  if ($$item{ContentEncoding}) {
9180
9185
  if ($$item{ContentEncoding} ne 'deflate') {
@@ -9267,7 +9272,6 @@ sub HandleItemInfo($)
9267
9272
  if ($name eq 'EXIF' and length $buff >= 4) {
9268
9273
  if ($buff =~ /^(MM\0\x2a|II\x2a\0)/) {
9269
9274
  $et->Warn('Missing Exif header');
9270
- $start = 0;
9271
9275
  } elsif ($buff =~ /^Exif\0\0/) {
9272
9276
  # (haven't seen this yet, but it is just a matter of time
9273
9277
  # until someone screws it up like this)
@@ -9302,10 +9306,14 @@ sub HandleItemInfo($)
9302
9306
  }
9303
9307
  $et->FoundTag($type => $buff);
9304
9308
  next;
9309
+ } elsif ($name eq 'PLIST') {
9310
+ # extract PLIST information from 'uri ' if available
9311
+ next unless $buff =~ /^bplist00/;
9312
+ $subTable = GetTagTable('Image::ExifTool::PLIST::Main');
9305
9313
  } else {
9306
- $start = 0;
9307
9314
  $subTable = GetTagTable('Image::ExifTool::XMP::Main');
9308
9315
  }
9316
+ $start or $start = 0;
9309
9317
  my %dirInfo = (
9310
9318
  DataPt => \$buff,
9311
9319
  DataLen => length $buff,
@@ -1029,6 +1029,8 @@ my %tagLookup = (
1029
1029
  'appinfoversion' => { 503 => [\'AppInfo','AppInfoVersion'] },
1030
1030
  'apple_0x004e' => { 1 => 0x4e },
1031
1031
  'apple_0x004f' => { 1 => 0x4f },
1032
+ 'apple_0x0054' => { 1 => 0x54 },
1033
+ 'apple_0x005a' => { 1 => 0x5a },
1032
1034
  'applekeywords' => { 343 => 'AAPL:Keywords' },
1033
1035
  'applephotosvariationidentifier' => { 414 => 'apple.photos.variation-identifier' },
1034
1036
  'applestoreaccount' => { 412 => 'apID' },
@@ -2764,6 +2766,7 @@ my %tagLookup = (
2764
2766
  'eventearliestdate' => { 124 => [\'Event','EventEarliestDate'] },
2765
2767
  'eventend' => { 546 => 'eventEnd' },
2766
2768
  'eventenddayofyear' => { 124 => [\'Event','EventEndDayOfYear'] },
2769
+ 'eventeventtype' => { 124 => [\'Event','EventEventType'] },
2767
2770
  'eventfieldnotes' => { 124 => [\'Event','EventFieldNotes'] },
2768
2771
  'eventfieldnumber' => { 124 => [\'Event','EventFieldNumber'] },
2769
2772
  'eventhabitat' => { 124 => [\'Event','EventHabitat'] },
@@ -3686,6 +3689,7 @@ my %tagLookup = (
3686
3689
  'humanobservationeventid' => { 124 => [\'HumanObservation','HumanObservationEventID'] },
3687
3690
  'humanobservationeventremarks' => { 124 => [\'HumanObservation','HumanObservationEventRemarks'] },
3688
3691
  'humanobservationeventtime' => { 124 => [\'HumanObservation','HumanObservationEventTime'] },
3692
+ 'humanobservationeventtype' => { 124 => [\'HumanObservation','HumanObservationEventType'] },
3689
3693
  'humanobservationfieldnotes' => { 124 => [\'HumanObservation','HumanObservationFieldNotes'] },
3690
3694
  'humanobservationfieldnumber' => { 124 => [\'HumanObservation','HumanObservationFieldNumber'] },
3691
3695
  'humanobservationhabitat' => { 124 => [\'HumanObservation','HumanObservationHabitat'] },
@@ -4375,6 +4379,7 @@ my %tagLookup = (
4375
4379
  'machineobservationeventid' => { 124 => [\'MachineObservation','MachineObservationEventID'] },
4376
4380
  'machineobservationeventremarks' => { 124 => [\'MachineObservation','MachineObservationEventRemarks'] },
4377
4381
  'machineobservationeventtime' => { 124 => [\'MachineObservation','MachineObservationEventTime'] },
4382
+ 'machineobservationeventtype' => { 124 => [\'MachineObservation','MachineObservationEventType'] },
4378
4383
  'machineobservationfieldnotes' => { 124 => [\'MachineObservation','MachineObservationFieldNotes'] },
4379
4384
  'machineobservationfieldnumber' => { 124 => [\'MachineObservation','MachineObservationFieldNumber'] },
4380
4385
  'machineobservationhabitat' => { 124 => [\'MachineObservation','MachineObservationHabitat'] },
@@ -5152,6 +5157,7 @@ my %tagLookup = (
5152
5157
  'occurrenceassociatedsequences' => { 124 => [\'Occurrence','OccurrenceAssociatedSequences'] },
5153
5158
  'occurrenceassociatedtaxa' => { 124 => [\'Occurrence','OccurrenceAssociatedTaxa'] },
5154
5159
  'occurrencebehavior' => { 124 => [\'Occurrence','OccurrenceBehavior'] },
5160
+ 'occurrencecaste' => { 124 => [\'Occurrence','OccurrenceCaste'] },
5155
5161
  'occurrencecatalognumber' => { 124 => [\'Occurrence','OccurrenceCatalogNumber'] },
5156
5162
  'occurrencedegreeofestablishment' => { 124 => [\'Occurrence','OccurrenceDegreeOfEstablishment'] },
5157
5163
  'occurrencedetails' => { 124 => [\'Occurrence','OccurrenceOccurrenceDetails'] },
@@ -5175,6 +5181,7 @@ my %tagLookup = (
5175
5181
  'occurrencereproductivecondition' => { 124 => [\'Occurrence','OccurrenceReproductiveCondition'] },
5176
5182
  'occurrencesex' => { 124 => [\'Occurrence','OccurrenceSex'] },
5177
5183
  'occurrencestatus' => { 124 => [\'Occurrence','OccurrenceOccurrenceStatus'] },
5184
+ 'occurrencevitality' => { 124 => [\'Occurrence','OccurrenceVitality'] },
5178
5185
  'oecfcolumns' => { 533 => [\'OECF','OECFColumns'] },
5179
5186
  'oecfnames' => { 533 => [\'OECF','OECFNames'] },
5180
5187
  'oecfrows' => { 533 => [\'OECF','OECFRows'] },
@@ -5480,6 +5487,7 @@ my %tagLookup = (
5480
5487
  'parametricshadowsplit' => { 527 => 'ParametricShadowSplit', 529 => 'ParametricShadowSplit' },
5481
5488
  'parentalrating' => { 186 => 'WM/ParentalRating' },
5482
5489
  'parentid' => { 541 => 'parentId' },
5490
+ 'parentmeasurementid' => { 124 => [\'MeasurementOrFact','MeasurementOrFactParentMeasurementID'] },
5483
5491
  'parentmediaeventid' => { 515 => 'ParentMediaEventID' },
5484
5492
  'parentmeid' => { 515 => 'ParentMEID' },
5485
5493
  'parentproductid' => { 412 => '@ppi' },
@@ -6858,9 +6866,11 @@ my %tagLookup = (
6858
6866
  'taxonconceptid' => { 124 => [\'Taxon','TaxonTaxonConceptID'] },
6859
6867
  'taxoncultivarepithet' => { 124 => [\'Taxon','TaxonCultivarEpithet'] },
6860
6868
  'taxonfamily' => { 124 => [\'Taxon','TaxonFamily'] },
6869
+ 'taxongenericname' => { 124 => [\'Taxon','TaxonGenericName'] },
6861
6870
  'taxongenus' => { 124 => [\'Taxon','TaxonGenus'] },
6862
6871
  'taxonhigherclassification' => { 124 => [\'Taxon','TaxonHigherClassification'] },
6863
6872
  'taxonid' => { 124 => [\'Taxon','TaxonTaxonID'] },
6873
+ 'taxoninfragenericepithet' => { 124 => [\'Taxon','TaxonInfragenericEpithet'] },
6864
6874
  'taxoninfraspecificepithet' => { 124 => [\'Taxon','TaxonInfraspecificEpithet'] },
6865
6875
  'taxonkingdom' => { 124 => [\'Taxon','TaxonKingdom'] },
6866
6876
  'taxonnameaccordingto' => { 124 => [\'Taxon','TaxonNameAccordingTo'] },
@@ -6882,8 +6892,12 @@ my %tagLookup = (
6882
6892
  'taxonscientificnameauthorship' => { 124 => [\'Taxon','TaxonScientificNameAuthorship'] },
6883
6893
  'taxonscientificnameid' => { 124 => [\'Taxon','TaxonScientificNameID'] },
6884
6894
  'taxonspecificepithet' => { 124 => [\'Taxon','TaxonSpecificEpithet'] },
6895
+ 'taxonsubfamily' => { 124 => [\'Taxon','TaxonSubFamily'] },
6885
6896
  'taxonsubgenus' => { 124 => [\'Taxon','TaxonSubgenus'] },
6897
+ 'taxonsubtribe' => { 124 => [\'Taxon','TaxonSubTribe'] },
6898
+ 'taxonsuperfamily' => { 124 => [\'Taxon','TaxonSuperFamily'] },
6886
6899
  'taxontaxonomicstatus' => { 124 => [\'Taxon','TaxonTaxonomicStatus'] },
6900
+ 'taxontribe' => { 124 => [\'Taxon','TaxonTribe'] },
6887
6901
  'taxonverbatimtaxonrank' => { 124 => [\'Taxon','TaxonVerbatimTaxonRank'] },
6888
6902
  'taxonvernacularname' => { 124 => [\'Taxon','TaxonVernacularName'] },
6889
6903
  'tda1bandwidth' => { 145 => 0x196f },
@@ -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 28408 tags, with 17642 unique tag names.
15
+ They contain a total of 28422 tags, with 17656 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
@@ -7832,6 +7832,8 @@ Tags extracted from the maker notes of iPhone images.
7832
7832
  0x0042 SemanticStylePreset no
7833
7833
  0x004e Apple_0x004e? no
7834
7834
  0x004f Apple_0x004f? no
7835
+ 0x0054 Apple_0x0054? no
7836
+ 0x005a Apple_0x005a? no
7835
7837
 
7836
7838
  =head3 Apple RunTime Tags
7837
7839
 
@@ -26666,6 +26668,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26666
26668
  EventID string/_
26667
26669
  EventRemarks lang-alt_
26668
26670
  EventTime string_
26671
+ EventEventType string_
26669
26672
  EventFieldNotes string_
26670
26673
  EventFieldNumber string_
26671
26674
  EventHabitat string_
@@ -26708,6 +26711,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26708
26711
  HumanObservationEventID string/_
26709
26712
  HumanObservationEventRemarks lang-alt_
26710
26713
  HumanObservationEventTime string_
26714
+ HumanObservationEventType string_
26711
26715
  HumanObservationFieldNotes string_
26712
26716
  HumanObservationFieldNumber string_
26713
26717
  HumanObservationHabitat string_
@@ -26742,6 +26746,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26742
26746
  MachineObservationEventID string/_
26743
26747
  MachineObservationEventRemarks lang-alt_
26744
26748
  MachineObservationEventTime string_
26749
+ MachineObservationEventType string_
26745
26750
  MachineObservationFieldNotes string_
26746
26751
  MachineObservationFieldNumber string_
26747
26752
  MachineObservationHabitat string_
@@ -26767,6 +26772,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26767
26772
  MeasurementType string_
26768
26773
  MeasurementUnit string_
26769
26774
  MeasurementValue string_
26775
+ ParentMeasurementID string_
26770
26776
  Occurrence DarwinCore Occurrence Struct
26771
26777
  OccurrenceAssociatedMedia string_
26772
26778
  OccurrenceAssociatedOccurrences string_
@@ -26774,6 +26780,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26774
26780
  OccurrenceAssociatedSequences string_
26775
26781
  OccurrenceAssociatedTaxa string_
26776
26782
  OccurrenceBehavior string_
26783
+ OccurrenceCaste string_
26777
26784
  OccurrenceCatalogNumber string_
26778
26785
  OccurrenceDegreeOfEstablishment string_
26779
26786
  OccurrenceDisposition string_
@@ -26797,6 +26804,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26797
26804
  OccurrenceRecordNumber string_
26798
26805
  OccurrenceReproductiveCondition string_
26799
26806
  OccurrenceSex string_
26807
+ OccurrenceVitality string_
26800
26808
  Organism DarwinCore Organism Struct
26801
26809
  OrganismAssociatedOccurrences string_
26802
26810
  OrganismAssociatedOrganisms string_
@@ -26834,8 +26842,10 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26834
26842
  TaxonClass string_
26835
26843
  TaxonCultivarEpithet string_
26836
26844
  TaxonFamily string_
26845
+ TaxonGenericName string_
26837
26846
  TaxonGenus string_
26838
26847
  TaxonHigherClassification string_
26848
+ TaxonInfragenericEpithet string_
26839
26849
  TaxonInfraspecificEpithet string_
26840
26850
  TaxonKingdom string_
26841
26851
  TaxonNameAccordingTo string_
@@ -26855,12 +26865,16 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26855
26865
  TaxonScientificNameAuthorship string_
26856
26866
  TaxonScientificNameID string_
26857
26867
  TaxonSpecificEpithet string_
26868
+ TaxonSubFamily string_
26858
26869
  TaxonSubgenus string_
26870
+ TaxonSubTribe string_
26871
+ TaxonSuperFamily string_
26859
26872
  TaxonConceptID string_
26860
26873
  TaxonID string_
26861
26874
  TaxonTaxonomicStatus string_
26862
26875
  TaxonRank string_
26863
26876
  TaxonRemarks string_
26877
+ TaxonTribe string_
26864
26878
  TaxonVerbatimTaxonRank string_
26865
26879
  TaxonVernacularName lang-alt_
26866
26880
 
@@ -26925,6 +26939,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26925
26939
  EventID string
26926
26940
  EventRemarks lang-alt
26927
26941
  EventTime string
26942
+ EventType string
26928
26943
  FieldNotes string
26929
26944
  FieldNumber string
26930
26945
  Habitat string
@@ -26996,6 +27011,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
26996
27011
  MeasurementType string
26997
27012
  MeasurementUnit string
26998
27013
  MeasurementValue string
27014
+ ParentMeasurementID string
26999
27015
 
27000
27016
  =head3 DarwinCore Occurrence Struct
27001
27017
 
@@ -27007,6 +27023,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
27007
27023
  AssociatedSequences string
27008
27024
  AssociatedTaxa string
27009
27025
  Behavior string
27026
+ Caste string
27010
27027
  CatalogNumber string
27011
27028
  DegreeOfEstablishment string
27012
27029
  Disposition string
@@ -27030,6 +27047,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
27030
27047
  RecordedByID string
27031
27048
  ReproductiveCondition string
27032
27049
  Sex string
27050
+ Vitality string
27033
27051
 
27034
27052
  =head3 DarwinCore Organism Struct
27035
27053
 
@@ -27081,8 +27099,10 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
27081
27099
  Class string
27082
27100
  CultivarEpithet string
27083
27101
  Family string
27102
+ GenericName string
27084
27103
  Genus string
27085
27104
  HigherClassification string
27105
+ InfragenericEpithet string
27086
27106
  InfraspecificEpithet string
27087
27107
  Kingdom string
27088
27108
  NameAccordingTo string
@@ -27102,12 +27122,16 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
27102
27122
  ScientificNameAuthorship string
27103
27123
  ScientificNameID string
27104
27124
  SpecificEpithet string
27125
+ SubFamily string
27126
+ SubTribe string
27105
27127
  Subgenus string
27128
+ SuperFamily string
27106
27129
  TaxonConceptID string
27107
27130
  TaxonID string
27108
27131
  TaxonRank string
27109
27132
  TaxonRemarks string
27110
27133
  TaxonomicStatus string
27134
+ Tribe string
27111
27135
  VerbatimTaxonRank string
27112
27136
  VernacularName lang-alt
27113
27137
 
@@ -30998,7 +31022,7 @@ and are not currently writable.
30998
31022
  'hvcC' HEVCConfiguration QuickTime HEVCConfig
30999
31023
  'irot' Rotation int8u!
31000
31024
  'ispe' ImageSpatialExtent no
31001
- 'pasp' PixelAspectRatio int32u!
31025
+ 'pasp' PixelAspectRatio int32u[2]!
31002
31026
  'pixi' ImagePixelDepth no
31003
31027
  'rloc' RelativeLocation no
31004
31028
 
@@ -1208,7 +1208,11 @@ sub WriteQuickTime($$$)
1208
1208
  if (defined $itemIndex and $$et{ItemInfo}) {
1209
1209
  my $items = $$et{ItemInfo};
1210
1210
  my ($id, $prop, $isPrimary);
1211
- my $primary = $$et{PrimaryItem} || 0;
1211
+ my $primary = $$et{PrimaryItem};
1212
+ unless (defined $primary) {
1213
+ ($primary) = sort { $a <=> $b } keys %{$$et{ItemInfo}} if $$et{ItemInfo};
1214
+ $primary = 0 unless defined $primary;
1215
+ }
1212
1216
  my $pitem = $$items{$primary} || { };
1213
1217
  $$pitem{RefersTo} or $$pitem{RefersTo} = { };
1214
1218
  ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
@@ -1512,7 +1516,10 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1512
1516
  ++$$et{CHANGED};
1513
1517
  my $grp = $et->GetGroup($langInfo, 1);
1514
1518
  $et->VerboseValue("- $grp:$$langInfo{Name}", $val);
1515
- next unless defined $newData and not $$didTag{$nvHash};
1519
+ unless (defined $newData and not $$didTag{$nvHash}) {
1520
+ # must not delete items from iprp because it will mess up the ordering
1521
+ next unless defined $itemIndex;
1522
+ }
1516
1523
  $et->VerboseValue("+ $grp:$$langInfo{Name}", $newData);
1517
1524
  # add back necessary header and encode as necessary
1518
1525
  if (defined $lang) {
@@ -1541,7 +1548,7 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1541
1548
  $newData = $et->Encode($newData, 'UTF8');
1542
1549
  } elsif ($format and not $$tagInfo{Binary}) {
1543
1550
  # format new value for writing
1544
- $newData = WriteValue($newData, $format);
1551
+ $newData = WriteValue($newData, $format, $$tagInfo{Count});
1545
1552
  }
1546
1553
  }
1547
1554
  $$didTag{$nvHash} = 1; # set flag so we don't add this tag again
@@ -1296,15 +1296,15 @@ sub SetNewValuesFromFile($$;@)
1296
1296
  # ! option to decide how it is handled here. !
1297
1297
  # +------------------------------------------+
1298
1298
  foreach (qw(ByteUnit Charset CharsetEXIF CharsetFileName CharsetID3 CharsetIPTC
1299
- CharsetPhotoshop Composite DateFormat Debug EncodeHangs Escape ExtendedXMP
1300
- ExtractEmbedded FastScan Filter FixBase Geolocation GeolocAltNames
1301
- GeolocFeature GeolocMinPop GeolocMaxDist GlobalTimeShift GPSQuadrant
1302
- HexTagIDs IgnoreGroups IgnoreMinorErrors IgnoreTags ImageHashType Lang
1303
- LargeFileSupport LigoGPSScale ListItem ListSep MDItemTags
1304
- MissingTagValue NoPDFList NoWarning Password PrintConv QuickTimeUTC
1305
- RequestTags SaveFormat SavePath ScanForXMP StructFormat SystemTags
1306
- TimeZone Unknown UserParam Validate WindowsLongPath WindowsWideFile
1307
- XAttrTags XMPAutoConv))
1299
+ CharsetPhotoshop Composite DateFormat Debug EncodeHangs Escape
1300
+ ExtendedXMP ExtractEmbedded FastScan Filter FixBase Geolocation
1301
+ GeolocAltNames GeolocFeature GeolocMinPop GeolocMaxDist
1302
+ GlobalTimeShift GPSQuadrant HexTagIDs IgnoreGroups IgnoreMinorErrors
1303
+ IgnoreTags ImageHashType KeepUTCTime Lang LargeFileSupport
1304
+ LigoGPSScale ListItem ListSep MDItemTags MissingTagValue NoPDFList
1305
+ NoWarning Password PrintConv QuickTimeUTC RequestTags SaveFormat
1306
+ SavePath ScanForXMP StructFormat SystemTags TimeZone Unknown UserParam
1307
+ Validate WindowsLongPath WindowsWideFile XAttrTags XMPAutoConv))
1308
1308
  {
1309
1309
  $srcExifTool->Options($_ => $$options{$_});
1310
1310
  }
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars $advFmtSelf);
31
31
 
32
- $VERSION = '13.24';
32
+ $VERSION = '13.25';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -571,7 +571,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
571
571
  XLTX => [['ZIP','FPX'], 'Office Open XML Spreadsheet Template'],
572
572
  XMP => ['XMP', 'Extensible Metadata Platform'],
573
573
  WOFF => ['Font', 'Web Open Font Format'],
574
- WOFF2=> ['Font', 'Web Open Font Format2'],
574
+ WOFF2=> ['Font', 'Web Open Font Format 2'],
575
575
  WPG => ['WPG', 'WordPerfect Graphics'],
576
576
  WTV => ['WTV', 'Windows recorded TV show'],
577
577
  ZIP => ['ZIP', 'ZIP archive'],
@@ -1140,6 +1140,7 @@ my @availableOptions = (
1140
1140
  [ 'IgnoreMinorErrors',undef, 'ignore minor errors when reading/writing' ],
1141
1141
  [ 'IgnoreTags', undef, 'list of tags to ignore when extracting' ],
1142
1142
  [ 'ImageHashType', 'MD5', 'image hash algorithm' ],
1143
+ [ 'KeepUTCTime', undef, 'do not convert times stored as UTC' ],
1143
1144
  [ 'Lang', $defaultLang, 'localized language for descriptions etc' ],
1144
1145
  [ 'LargeFileSupport', 1, 'flag indicating support of 64-bit file offsets' ],
1145
1146
  [ 'LimitLongValues', 60, 'length limit for long values' ],
@@ -2597,6 +2598,8 @@ sub Options($$;@)
2597
2598
  # add to existing plot settings
2598
2599
  $newVal = "$oldVal,$newVal" if defined $oldVal and defined $newVal;
2599
2600
  $$options{$param} = $newVal;
2601
+ } elsif ($param eq 'KeepUTCTime') {
2602
+ $$options{$param} = $static_vars{$param} = $newVal;
2600
2603
  } elsif (lc $param eq 'geodir') {
2601
2604
  $Image::ExifTool::Geolocation::geoDir = $newVal;
2602
2605
  } else {
@@ -4255,7 +4258,7 @@ sub Init($)
4255
4258
  my $self = shift;
4256
4259
  # delete all DataMember variables (lower-case names)
4257
4260
  delete $$self{$_} foreach grep /[a-z]/, keys %$self;
4258
- undef %static_vars; # clear all static variables
4261
+ %static_vars = ( KeepUTCTime => $$self{OPTIONS}{KeepUTCTime} ); # reset static variables
4259
4262
  delete $$self{FOUND_TAGS}; # list of found tags
4260
4263
  delete $$self{EXIF_DATA}; # the EXIF data block
4261
4264
  delete $$self{EXIF_POS}; # EXIF position in file
@@ -6690,12 +6693,15 @@ sub ConvertUnixTime($;$$)
6690
6693
  $time = int($time + 1e-6) if $time != int($time); # avoid round-off errors
6691
6694
  $dec = '';
6692
6695
  }
6693
- if ($toLocal) {
6694
- @tm = localtime($time);
6695
- $tz = TimeZoneString(\@tm, $time);
6696
- } else {
6696
+ if (not $toLocal) {
6697
6697
  @tm = gmtime($time);
6698
6698
  $tz = '';
6699
+ } elsif ($static_vars{KeepUTCTime}) {
6700
+ @tm = gmtime($time);
6701
+ $tz = 'Z';
6702
+ } else {
6703
+ @tm = localtime($time);
6704
+ $tz = TimeZoneString(\@tm, $time);
6699
6705
  }
6700
6706
  my $str = sprintf("%4d:%.2d:%.2d %.2d:%.2d:%.2d$dec%s",
6701
6707
  $tm[5]+1900, $tm[4]+1, $tm[3], $tm[2], $tm[1], $tm[0], $tz);
@@ -892,6 +892,11 @@ to undef to clear the previous IgnoreTags list. Default is undef.
892
892
  Sets type of hash algorithm used for the ImageDataHash tag calculation.
893
893
  Supported options are 'MD5', 'SHA256', and 'SHA512'. Default is 'MD5'.
894
894
 
895
+ =item KeepUTCTime
896
+
897
+ Flag to keep UTC times in Zulu time zone instead of converting to local
898
+ time. Default is undef.
899
+
895
900
  =item Lang
896
901
 
897
902
  Localized language for exiftool tag descriptions, etc. Available languages
@@ -1314,17 +1319,7 @@ Extract all meta information from an image.
1314
1319
 
1315
1320
  L</ExtractInfo> takes exactly the same arguments as L</ImageInfo>. The only
1316
1321
  difference is that a list of tag keys is not returned if an ARRAY reference
1317
- is given. The following options are effective in the call to
1318
- L</ExtractInfo>:
1319
-
1320
- Binary, Charset, CharsetEXIF, CharsetFileName, CharsetID3, CharsetIPTC,
1321
- CharsetPhotoshop, CharsetQuickTime, CharsetRIFF, Composite, ExtendedXMP,
1322
- ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase, IgnoreGroups,
1323
- IgnoreMinorErrors, IgnoreTags, Lang, LargeFileSupport, MakerNotes,
1324
- MDItemTags, NoPDFList, Password, QuickTimeUTC (enforced 1904 time zero),
1325
- RequestAll, RequestTags, SaveBin, SaveFormat, SavePath, ScanForXMP, Struct,
1326
- TextOut, Unknown, Verbose, WindowsLongPath, WindowsWideFile, XAttrTags and
1327
- XMPAutoConv.
1322
+ is given.
1328
1323
 
1329
1324
  =item Return Value:
1330
1325
 
@@ -1356,11 +1351,7 @@ L</ImageInfo>.
1356
1351
  =item Inputs:
1357
1352
 
1358
1353
  Inputs are the same as L</ExtractInfo> and L</ImageInfo> except that an
1359
- image can not be specified. Options in effect are:
1360
-
1361
- Charset, CoordFormat, DateFormat, Duplicates, Escape, Exclude, Filter,
1362
- Group#, GlobalTimeShift, Lang, ListItem, ListJoin, PrintConv, Sort (if a tag
1363
- list reference is given) and StrictDate.
1354
+ image can not be specified.
1364
1355
 
1365
1356
  =item Return Value:
1366
1357
 
@@ -1368,13 +1359,6 @@ Reference to information hash, the same as with L</ImageInfo>.
1368
1359
 
1369
1360
  =back
1370
1361
 
1371
- The following options are effective in the call to L</GetInfo>:
1372
-
1373
- Charset, CoordFormat, DateFormat, Duplicates, Escape, Exclude, Filter,
1374
- Group#, GlobalTimeShift, Lang, ListItem, ListJoin, PrintConv, QuickTimeUTC
1375
- (conversion to local time), Sort (if a tag list reference is given) and
1376
- StrictDate.
1377
-
1378
1362
  =head2 WriteInfo
1379
1363
 
1380
1364
  Write meta information to a file. The specified source file is rewritten to
@@ -1459,13 +1443,6 @@ called with a source file name.
1459
1443
 
1460
1444
  =back
1461
1445
 
1462
- The following ExifTool options are effective in the call to L</WriteInfo>:
1463
-
1464
- ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact,
1465
- Compress, FixBase, IgnoreMinorErrors, NoMultiExif, NoPDFList, Password,
1466
- QuickTimeHandler, QuickTimePad, Verbose, WindowsLongPath, WindowsWideFile
1467
- and WriteMode.
1468
-
1469
1446
  =head2 GetTagList
1470
1447
 
1471
1448
  Get a sorted list of tags from the specified information hash or tag list.
@@ -1588,12 +1565,6 @@ optional group specifier), use L</GetInfo> instead.
1588
1565
 
1589
1566
  my @keywords = $exifTool->GetValue('Keywords', 'ValueConv');
1590
1567
 
1591
- The following options are in effect when L</GetValue> is called:
1592
-
1593
- Charset, CoordFormat, DateFormat, Escape, Filter, GlobalTimeShift, Lang,
1594
- ListItem, ListJoin, PrintConv, QuickTimeUTC (conversion to local time),
1595
- StrictDate and TimeZone.
1596
-
1597
1568
  =over 4
1598
1569
 
1599
1570
  =item Inputs:
@@ -1847,11 +1818,6 @@ explicitly, either by group (with 'Adobe:*') or as a block (with 'Adobe').
1847
1818
 
1848
1819
  =back
1849
1820
 
1850
- The following ExifTool options are effective in the call to L</SetNewValue>:
1851
-
1852
- Charset, DateFormat, Escape, IgnoreMinorErrors, Lang, ListJoin, ListSplit,
1853
- PrintConv, QuickTimeUTC, StrictDate, TimeZone, Verbose and WriteMode.
1854
-
1855
1821
  =head2 GetNewValue
1856
1822
 
1857
1823
  Get the new Raw value for a tag. This is the value set by L</SetNewValue>
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.24
3
+ Version: 13.25
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('13.24.0')
4
+ VERSION = Gem::Version.new('13.25.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.24.0
4
+ version: 13.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-03-07 00:00:00.000000000 Z
12
+ date: 2025-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool