exiftool_vendored 13.19.0 → 13.22.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.
@@ -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 28469 tags, with 17576 unique tag names.
15
+ They contain a total of 28534 tags, with 17595 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
@@ -11519,7 +11519,7 @@ unknown dbgi debug tags. Tag ID's are composed of the corresponding .proto
11519
11519
  file name combined with the hierarchical protobuf field numbers.
11520
11520
 
11521
11521
  ExifTool currently extracts timed GPS plus a few other tags from DJI devices
11522
- which use the following protocols: dvtm_AVATA2.proto (Avanta 2),
11522
+ which use the following protocols: dvtm_AVATA2.proto (Avata 2),
11523
11523
  dvtm_ac203.proto (Osmo Action 4), dvtm_ac204.proto (Osmo Action 5),
11524
11524
  dvtm_wm265e.proto (Mavic 3), dvtm_pm320.proto (Matrice 30) and
11525
11525
  dvtm_pm320.proto (Mini 4 Pro).
@@ -11535,7 +11535,14 @@ for a given protocol should be considered to have the default value of 0.
11535
11535
  'dvtm_AVATA2_2-2-3-1' SerialNumber2 no
11536
11536
  'dvtm_AVATA2_2-3' FrameInfo DJI FrameInfo
11537
11537
  'dvtm_AVATA2_3-1-2' TimeStamp no
11538
+ 'dvtm_AVATA2_3-2-2-1' ISO no
11539
+ 'dvtm_AVATA2_3-2-4-1' ShutterSpeed no
11540
+ 'dvtm_AVATA2_3-2-6-1' ColorTemperature no
11541
+ 'dvtm_AVATA2_3-2-10-1' FNumber no
11542
+ 'dvtm_AVATA2_3-4-3' DroneInfo DJI DroneInfo
11538
11543
  'dvtm_AVATA2_3-4-4-1' GPSInfo DJI GPSInfo
11544
+ 'dvtm_AVATA2_3-4-4-2' AbsoluteAltitude no
11545
+ 'dvtm_AVATA2_3-4-5-1' RelativeAltitude no
11539
11546
  'dvtm_Mini4_Pro_1-1-5' SerialNumber no
11540
11547
  'dvtm_Mini4_Pro_1-1-10' Model no
11541
11548
  'dvtm_Mini4_Pro_2-3' FrameInfo DJI FrameInfo
@@ -11551,12 +11558,23 @@ for a given protocol should be considered to have the default value of 0.
11551
11558
  'dvtm_ac203_1-1-5' SerialNumber no
11552
11559
  'dvtm_ac203_1-1-10' Model no
11553
11560
  'dvtm_ac203_2-3' FrameInfo DJI FrameInfo
11561
+ 'dvtm_ac203_3-2-2-1' ISO no
11562
+ 'dvtm_ac203_3-2-4-1' ShutterSpeed no
11563
+ 'dvtm_ac203_3-2-6-1' ColorTemperature no
11564
+ 'dvtm_ac203_3-2-10-2' AccelerometerX no
11565
+ 'dvtm_ac203_3-2-10-3' AccelerometerY no
11566
+ 'dvtm_ac203_3-2-10-4' AccelerometerZ no
11554
11567
  'dvtm_ac203_3-4-2-1' GPSInfo DJI GPSInfo
11555
11568
  'dvtm_ac203_3-4-2-2' GPSAltitude no
11556
11569
  'dvtm_ac203_3-4-2-6-1' GPSDateTime no
11557
11570
  'dvtm_ac204_1-1-5' SerialNumber no
11558
11571
  'dvtm_ac204_1-1-10' Model no
11559
11572
  'dvtm_ac204_2-3' FrameInfo DJI FrameInfo
11573
+ 'dvtm_ac204_3-2-4-1' ShutterSpeed no
11574
+ 'dvtm_ac204_3-2-6-1' ColorTemperature no
11575
+ 'dvtm_ac204_3-2-10-2' AccelerometerX no
11576
+ 'dvtm_ac204_3-2-10-3' AccelerometerY no
11577
+ 'dvtm_ac204_3-2-10-4' AccelerometerZ no
11560
11578
  'dvtm_ac204_3-4-2-1' GPSInfo DJI GPSInfo
11561
11579
  'dvtm_ac204_3-4-2-2' GPSAltitude no
11562
11580
  'dvtm_ac204_3-4-2-6-1' GPSDateTime no
@@ -11565,6 +11583,7 @@ for a given protocol should be considered to have the default value of 0.
11565
11583
  'dvtm_pm320_2-2' FrameInfo DJI FrameInfo
11566
11584
  'dvtm_pm320_3-2-2-1' ISO no
11567
11585
  'dvtm_pm320_3-2-3-1' ShutterSpeed no
11586
+ 'dvtm_pm320_3-2-4-1' FNumber no
11568
11587
  'dvtm_pm320_3-2-6-1' DigitalZoom no
11569
11588
  'dvtm_pm320_3-3-3' DroneInfo DJI DroneInfo
11570
11589
  'dvtm_pm320_3-3-4-1' GPSInfo DJI GPSInfo
@@ -11585,36 +11604,58 @@ for a given protocol should be considered to have the default value of 0.
11585
11604
 
11586
11605
  =head3 DJI FrameInfo Tags
11587
11606
 
11588
- Tag ID Tag Name Writable
11589
- ------ -------- --------
11607
+ Field # Tag Name Writable
11608
+ ------- -------- --------
11590
11609
  1 FrameWidth no
11591
11610
  2 FrameHeight no
11592
11611
  3 FrameRate no
11593
11612
 
11594
- =head3 DJI GPSInfo Tags
11595
-
11596
- Tag ID Tag Name Writable
11597
- ------ -------- --------
11598
- 1 CoordinateUnits no
11599
- 2 GPSLatitude no
11600
- 3 GPSLongitude no
11601
-
11602
11613
  =head3 DJI DroneInfo Tags
11603
11614
 
11604
- Tag ID Tag Name Writable
11605
- ------ -------- --------
11615
+ Field # Tag Name Writable
11616
+ ------- -------- --------
11606
11617
  1 DroneRoll no
11607
11618
  2 DronePitch no
11608
11619
  3 DroneYaw no
11609
11620
 
11621
+ =head3 DJI GPSInfo Tags
11622
+
11623
+ Field # Tag Name Writable
11624
+ ------- -------- --------
11625
+ 1 CoordinateUnits no
11626
+ 2 GPSLatitude no
11627
+ 3 GPSLongitude no
11628
+
11610
11629
  =head3 DJI GimbalInfo Tags
11611
11630
 
11612
- Tag ID Tag Name Writable
11613
- ------ -------- --------
11631
+ Field # Tag Name Writable
11632
+ ------- -------- --------
11614
11633
  1 GimbalPitch no
11615
11634
  2 GimbalRoll no
11616
11635
  3 GimbalYaw no
11617
11636
 
11637
+ =head3 DJI Glamour Tags
11638
+
11639
+ Glamour settings used by some DJI models.
11640
+
11641
+ Tag ID Tag Name Writable
11642
+ ------ -------- --------
11643
+ 'acne_spot_removal' AcneSpotRemoval no
11644
+ 'beauty_enable' BeautyEnable no
11645
+ 'blush' Blush no
11646
+ 'dark_circle' DarkCircle no
11647
+ 'eye_enlarge' EyeEnlarge no
11648
+ 'eyebrows' Eyebrows no
11649
+ 'face_slimming' FaceSlimming no
11650
+ 'head_shrinking' HeadShrinking no
11651
+ 'leg_longer' LegLonger no
11652
+ 'lipstick' Lipstick no
11653
+ 'mouth_beautify' MouthModify no
11654
+ 'nose_slimming' NoseSlimming no
11655
+ 'smoother' Smoother no
11656
+ 'teeth_whitening' TeethWhitening no
11657
+ 'whitening' Whitening no
11658
+
11618
11659
  =head2 FLIR Tags
11619
11660
 
11620
11661
  Information extracted from the maker notes of JPEG images from thermal
@@ -14802,8 +14843,11 @@ DiMAGE X and Xt.
14802
14843
  0x00b1 HighISONoiseReduction int16u
14803
14844
  0x00b3 ToningEffect string
14804
14845
  0x00b6 PowerUpTime undef
14805
- 0x00b7 AFInfo2 Nikon AFInfo2V0400
14806
- Nikon AFInfo2
14846
+ 0x00b7 AFInfo2 Nikon AFInfo2V0100
14847
+ Nikon AFInfo2V0101
14848
+ Nikon AFInfo2V0200
14849
+ Nikon AFInfo2V0300
14850
+ Nikon AFInfo2V0400
14807
14851
  0x00b8 FileInfo Nikon FileInfo
14808
14852
  Nikon FileInfo
14809
14853
  0x00b9 AFTune Nikon AFTune
@@ -16881,49 +16925,22 @@ These tags are used by the D4S, D750, D810, D5500, D7200 (FlashInfoVersion
16881
16925
  2 MultiExposureShots int32u
16882
16926
  3 MultiExposureOverlayMode int32u
16883
16927
 
16884
- =head3 Nikon AFInfo2V0400 Tags
16928
+ =head3 Nikon AFInfo2V0100 Tags
16885
16929
 
16886
- AF information for Nikon cameras with the Expeed 7 processor: The Zf, Z6_3,
16887
- Z8, Z9 and Z50_3.
16930
+ AF information for Nikon cameras with LiveView that were introduced 2007
16931
+ thru 2015 (and the D5600 in 2016), including D3, D4, D3000, D3100-D3300,
16932
+ D5000-D5600, D6x0, D700, D7000, D7100, D810
16888
16933
 
16889
16934
  Index1 Tag Name Writable
16890
16935
  ------ -------- --------
16891
16936
  0 AFInfo2Version no
16937
+ 4 AFDetectionMethod int8u
16892
16938
  5 AFAreaMode int8u
16893
- 10 AFPointsUsed undef[51]
16894
- AFPointsUsed undef[38]
16895
- AFPointsUsed undef[29]
16896
- 62 AFImageWidth int16u
16897
- 64 AFImageHeight int16u
16898
- 66 AFAreaXPosition int16u
16899
- 68 AFAreaYPosition int16u
16900
- 70 AFAreaWidth int16u
16901
- 72 AFAreaHeight int16u
16902
- 74 FocusResult int8u
16903
-
16904
- =head3 Nikon AFInfo2 Tags
16905
-
16906
- These tags are written by Nikon DSLR's which have the live view feature.
16907
-
16908
- Index1 Tag Name Writable
16909
- ------ -------- --------
16910
- 0 AFInfo2Version no
16911
- 4 ContrastDetectAF int8u
16912
- 5 AFAreaMode int8u
16913
- 6 PhaseDetectAF int8u
16914
16939
  7 PrimaryAFPoint int8u
16915
16940
  8 AFPointsUsed undef[7]
16916
16941
  AFPointsUsed undef[2]
16917
16942
  AFPointsUsed undef[5]
16918
- AFPointsUsed undef[17]
16919
- AFPointsUsed undef[21]
16920
- AFPointsUsed undef[29]
16921
- AFPointsUsed undef[20]
16922
- AFPointsUsed undef[7]
16923
- PrimaryAFPoint int8u
16924
- 10 AFPointsUsed undef[7]
16925
- AFPointsUsed undef[11]
16926
- AFPointsUsed undef[14]
16943
+ AFPointsUsed int8u
16927
16944
  16 AFImageWidth int16u
16928
16945
  18 AFImageHeight int16u
16929
16946
  20 AFAreaXPosition int16u
@@ -16932,18 +16949,25 @@ These tags are written by Nikon DSLR's which have the live view feature.
16932
16949
  26 AFAreaHeight int16u
16933
16950
  28 ContrastDetectAFInFocus int8u
16934
16951
  AFPointsSelected undef[20]
16935
- AFPointsSelected int16u
16936
- 42 AFImageWidth int16u
16937
- 44 AFImageHeight int16u
16938
- 46 AFAreaXPosition int16u
16939
- 47 FocusPositionHorizontal int8u~
16940
- 48 AFAreaYPosition int16u
16952
+
16953
+ =head3 Nikon AFInfo2V0101 Tags
16954
+
16955
+ AF information for Nikon cameras D5, D500, D850, D3400, D3500 and D7500
16956
+
16957
+ Index1 Tag Name Writable
16958
+ ------ -------- --------
16959
+ 0 AFInfo2Version no
16960
+ 4 AFDetectionMethod int8u
16961
+ 5 AFAreaMode int8u
16962
+ 8 AFPointsUsed undef[7]
16963
+ AFPointsUsed undef[2]
16964
+ AFPointsUsed undef[20]
16965
+ AFPointsUsed int8u
16966
+ 28 ContrastDetectAFInFocus int8u
16967
+ AFPointsUsed undef[7]
16968
+ AFPointsSelected undef[20]
16969
+ 48 AFPointsInFocus undef[7]
16941
16970
  AFPointsInFocus undef[20]
16942
- AFPointsInFocus undef[7]
16943
- 49 FocusPositionVertical int8u~
16944
- 50 AFAreaWidth int16u
16945
- 52 AFAreaHeight int16u
16946
- 56 PrimaryAFPoint int8u
16947
16971
  68 PrimaryAFPoint int8u
16948
16972
  70 AFImageWidth int16u
16949
16973
  72 AFImageHeight int16u
@@ -16953,6 +16977,69 @@ These tags are written by Nikon DSLR's which have the live view feature.
16953
16977
  80 AFAreaHeight int16u
16954
16978
  82 ContrastDetectAFInFocus int8u
16955
16979
 
16980
+ =head3 Nikon AFInfo2V0200 Tags
16981
+
16982
+ AF information for Nikon 1 series cameras: Nikon 1 V1, V2, V3, J1, J2, J3,
16983
+ S1, S2 AW1.
16984
+
16985
+ Index1 Tag Name Writable
16986
+ ------ -------- --------
16987
+ 0 AFInfo2Version no
16988
+ 5 AFAreaMode int8u
16989
+ 6 PhaseDetectAF int8u
16990
+ 7 PrimaryAFPoint int8u
16991
+ 8 AFPointsUsed undef[17]
16992
+ AFPointsUsed undef[21]
16993
+ AFPointsUsed undef[29]
16994
+
16995
+ =head3 Nikon AFInfo2V0300 Tags
16996
+
16997
+ AF information for Nikon cameras with the Expeed 6 processor: D6, D780, Z5,
16998
+ Z6, Z6ii, Z7, Z7ii, Z50 and Zfc.
16999
+
17000
+ Index1 Tag Name Writable
17001
+ ------ -------- --------
17002
+ 0 AFInfo2Version no
17003
+ 4 AFDetectionMethod int8u
17004
+ 5 AFAreaMode int8u
17005
+ 7 AFCoordinatesAvailable int8u
17006
+ 10 AFPointsUsed undef[7]
17007
+ AFPointsUsed undef[11]
17008
+ AFPointsUsed undef[14]
17009
+ 42 AFImageWidth int16u
17010
+ 44 AFImageHeight int16u
17011
+ 46 AFAreaXPosition int16u
17012
+ 47 FocusPositionHorizontal no
17013
+ 48 AFAreaYPosition int16u
17014
+ 49 FocusPositionVertical no
17015
+ 50 AFAreaWidth int16u
17016
+ 52 AFAreaHeight int16u
17017
+ 56 PrimaryAFPoint int8u
17018
+
17019
+ =head3 Nikon AFInfo2V0400 Tags
17020
+
17021
+ AF information for Nikon cameras with the Expeed 7 processor: The Zf, Z6_3,
17022
+ Z8, Z9 and Z50_3.
17023
+
17024
+ Index1 Tag Name Writable
17025
+ ------ -------- --------
17026
+ 0 AFInfo2Version no
17027
+ 4 AFDetectionMethod int8u
17028
+ 5 AFAreaMode int8u
17029
+ 7 AFCoordinatesAvailable int8u
17030
+ 10 AFPointsUsed undef[51]
17031
+ AFPointsUsed undef[38]
17032
+ AFPointsUsed undef[29]
17033
+ 62 AFImageWidth int16u
17034
+ 64 AFImageHeight int16u
17035
+ 66 AFAreaXPosition int16u
17036
+ 67 FocusPositionHorizontal no
17037
+ 68 AFAreaYPosition int16u
17038
+ 69 FocusPositionVertical no
17039
+ 70 AFAreaWidth int16u
17040
+ 72 AFAreaHeight int16u
17041
+ 74 FocusResult int8u
17042
+
16956
17043
  =head3 Nikon FileInfo Tags
16957
17044
 
16958
17045
  Index2 Tag Name Writable
@@ -17231,7 +17318,11 @@ videos from some Nikon cameras.
17231
17318
  FlashInfoUnknown Nikon FlashInfoUnknown
17232
17319
  0x20000ab VariProgram no
17233
17320
  0x20000b1 HighISONoiseReduction no
17234
- 0x20000b7 AFInfo2 Nikon AFInfo2
17321
+ 0x20000b7 AFInfo2 Nikon AFInfo2V0100
17322
+ Nikon AFInfo2V0101
17323
+ Nikon AFInfo2V0200
17324
+ Nikon AFInfo2V0300
17325
+ Nikon AFInfo2V0400
17235
17326
  0x20000c3 BarometerInfo Nikon BarometerInfo
17236
17327
 
17237
17328
  =head3 Nikon MOV Tags
@@ -24022,6 +24113,7 @@ JSON-formatted files.
24022
24113
 
24023
24114
  Tag Name Writable
24024
24115
  -------- --------
24116
+ AdjustmentsSettingsStatisticsLightMap no
24025
24117
  ON1_SettingsData PLIST
24026
24118
  ON1_SettingsMetadataCreated no
24027
24119
  ON1_SettingsMetadataModified no
@@ -28585,6 +28677,7 @@ check if speed is more of a concern.
28585
28677
  'gIFg' GIFGraphicControlExtension no
28586
28678
  'gIFt' GIFPlainTextExtension no
28587
28679
  'gIFx' GIFApplicationExtension no
28680
+ 'gdAT' GainMapImage no
28588
28681
  'hIST' PaletteHistogram no
28589
28682
  'iCCP' ICC_Profile ICC_Profile
28590
28683
  'iCCP-name' ProfileName yes
@@ -31677,6 +31770,7 @@ the config file.
31677
31770
  'angl' CameraAngle string
31678
31771
  'apmd' ApertureMode undef
31679
31772
  'auth' Author string/
31773
+ 'btec' GlamourSettings DJI Glamour
31680
31774
  'ccid' ContentID string
31681
31775
  'cdis' ContentDistributorID string
31682
31776
  'chpl' ChapterList no
@@ -31692,6 +31786,7 @@ the config file.
31692
31786
  'date' DateTimeOriginal string
31693
31787
  'dscp' Description string/
31694
31788
  'finm' OriginalFileName no
31789
+ 'fsid' OriginalFilePath string
31695
31790
  'gnre' Genre string/
31696
31791
  'hinf' HintTrackInfo QuickTime HintTrackInfo
31697
31792
  'hinv' HintVersion string
@@ -41076,8 +41171,7 @@ values, may created via the ExifTool configuration file.
41076
41171
  MPEG:SampleRate
41077
41172
  MPEG:VBRBytes
41078
41173
  MPEG:VBRFrames
41079
- AutoFocus Nikon:PhaseDetectAF no
41080
- Nikon:ContrastDetectAF
41174
+ AutoFocus Nikon:FocusMode no
41081
41175
  AvgBitrate QuickTime::MediaDataSize no
41082
41176
  QuickTime::Duration
41083
41177
  BlueBalance WB_RGGBLevels no
@@ -41098,6 +41192,8 @@ values, may created via the ExifTool configuration file.
41098
41192
  CircleOfConfusion ScaleFactor35efl no
41099
41193
  ConditionalFEC FlashExposureComp no
41100
41194
  FlashBits
41195
+ ContrastDetectAF Nikon:FocusMode no
41196
+ Nikon:AFDetectionMethod
41101
41197
  DOF FocalLength no
41102
41198
  Aperture
41103
41199
  CircleOfConfusion
@@ -41291,6 +41387,8 @@ values, may created via the ExifTool configuration file.
41291
41387
  OtherImageStart (1)
41292
41388
  OtherImageLength (1)
41293
41389
  PeakSpectralSensitivity FLIR:PlanckB no
41390
+ PhaseDetectAF Nikon:FocusPointSchema no
41391
+ Nikon:AFDetectionMethod
41294
41392
  PreviewImage PreviewImageStart yes
41295
41393
  PreviewImageLength
41296
41394
  PreviewImageValid
@@ -12,7 +12,7 @@ use strict;
12
12
  use vars qw($VERSION);
13
13
  use Image::ExifTool qw(:DataAccess :Utils);
14
14
 
15
- $VERSION = '1.00';
15
+ $VERSION = '1.01';
16
16
 
17
17
  %Image::ExifTool::Trailer::Vivo = (
18
18
  GROUPS => { 0 => 'Trailer', 1 => 'Vivo', 2 => 'Image' },
@@ -271,7 +271,7 @@ sub ProcessGoogle($$)
271
271
  DataPos => $start + $pos,
272
272
  DirLen => $$len[$i],
273
273
  });
274
- $et->HandleTag($tagTable, $$tag[$i], \$buff, { DataPos => $start + $pos, DataPt => \$buff });
274
+ $et->HandleTag($tagTable, $$tag[$i], \$buff, DataPos => $start + $pos, DataPt => \$buff);
275
275
  # (haven't seen non-zero padding, but I assume this is how it works
276
276
  $pos += $$len[$i] + (($pad and $$pad[$i]) ? $$pad[$i] : 0);
277
277
  }
@@ -2269,6 +2269,11 @@ NoOverwrite: next if $isNew > 0;
2269
2269
  # build list of offsets to process
2270
2270
  my @offsetList;
2271
2271
  if ($ifd >= 0) {
2272
+ $dirName = $$dirInfo{DirName} || 'unknown';
2273
+ if ($ifd) {
2274
+ $dirName =~ s/\d+$//;
2275
+ $dirName .= $ifd;
2276
+ }
2272
2277
  my $offsetInfo = $offsetInfo[$ifd] or next;
2273
2278
  if ($$offsetInfo{0x111} and $$offsetInfo{0x144}) {
2274
2279
  # SubIFD may contain double-referenced data as both strips and tiles
@@ -546,7 +546,7 @@ sub WritePDF($$)
546
546
  }
547
547
  if ($metaChanged) {
548
548
  if ($newXMP) {
549
- unless ($metaRef) {
549
+ unless (ref $metaRef) {
550
550
  # allocate new PDF object
551
551
  $metaRef = \ "$nextObject 0 R";
552
552
  ++$nextObject;
@@ -5046,7 +5046,6 @@ TryLib: for ($lib=$strptimeLib; ; $lib='') {
5046
5046
  last;
5047
5047
  }
5048
5048
  if (not $lib) {
5049
- last unless $$self{OPTIONS}{StrictDate};
5050
5049
  warn $wrn || "Install POSIX::strptime or Time::Piece for inverse date/time conversions\n";
5051
5050
  return undef;
5052
5051
  } elsif ($lib eq 'POSIX::strptime') {
@@ -165,7 +165,7 @@ my %xmpNS = (
165
165
  #
166
166
  plus => 'http://ns.useplus.org/ldf/xmp/1.0/',
167
167
  # (prism recommendations from http://www.prismstandard.org/specifications/3.0/Image_Guide_3.0.htm)
168
- prism => 'http://prismstandard.org/namespaces/basic/2.0/',
168
+ prism => 'http://prismstandard.org/namespaces/basic/2.0/', # (maybe left at 2.0 to avoid compatibility issues -- think hard before changing this)
169
169
  prl => 'http://prismstandard.org/namespaces/prl/2.1/',
170
170
  pur => 'http://prismstandard.org/namespaces/prismusagerights/2.1/',
171
171
  pmi => 'http://prismstandard.org/namespaces/pmi/2.2/',
@@ -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.19';
32
+ $VERSION = '13.22';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -1152,6 +1152,7 @@ my @availableOptions = (
1152
1152
  [ 'NoPDFList', undef, 'flag to avoid splitting PDF List-type tag values' ],
1153
1153
  [ 'NoWarning', undef, 'regular expression for warnings to suppress' ],
1154
1154
  [ 'Password', undef, 'password for password-protected PDF documents' ],
1155
+ [ 'Plot', undef, 'SVG plot settings' ],
1155
1156
  [ 'PrintCSV', undef, 'flag to print CSV directly (selected metadata types only)' ],
1156
1157
  [ 'PrintConv', 1, 'flag to enable print conversion' ],
1157
1158
  [ 'QuickTimeHandler', 1, 'flag to add mdir Handler to newly created Meta box' ],
@@ -2587,6 +2588,10 @@ sub Options($$;@)
2587
2588
  } else {
2588
2589
  warn("Can't set $param to undef\n");
2589
2590
  }
2591
+ } elsif ($param eq 'Plot') {
2592
+ # add to existing plot settings
2593
+ $newVal = "$oldVal,$newVal" if defined $oldVal and defined $newVal;
2594
+ $$options{$param} = $newVal;
2590
2595
  } elsif (lc $param eq 'geodir') {
2591
2596
  $Image::ExifTool::Geolocation::geoDir = $newVal;
2592
2597
  } else {
@@ -9151,10 +9156,11 @@ sub AddTagToTable($$;$$)
9151
9156
  # Handle simple extraction of new tag information
9152
9157
  # Inputs: 0) ExifTool object ref, 1) tag table reference, 2) tagID, 3) value,
9153
9158
  # 4-N) parameters hash: Index, DataPt, DataPos, Base, Start, Size, Parent,
9154
- # TagInfo, ProcessProc, RAF, Format, Count
9159
+ # TagInfo, ProcessProc, RAF, Format, Count, MakeTagInfo
9155
9160
  # Returns: tag key or undef if tag not found
9156
9161
  # Notes: if value is not defined, it is extracted from DataPt using TagInfo
9157
9162
  # Format and Count if provided
9163
+ # - set MakeTagInfo to add tag info for unknown tags with name made from tag ID
9158
9164
  sub HandleTag($$$$;%)
9159
9165
  {
9160
9166
  my ($self, $tagTablePtr, $tag, $val, %parms) = @_;
@@ -9166,6 +9172,14 @@ sub HandleTag($$$$;%)
9166
9172
 
9167
9173
  if ($tagInfo) {
9168
9174
  $subdir = $$tagInfo{SubDirectory};
9175
+ } elsif ($parms{MakeTagInfo}) {
9176
+ $self->VPrint(0, $$self{INDENT}, "[adding $tag]\n") if $verbose;
9177
+ my $name = $tag;
9178
+ $name =~ s/([^A-Za-z])([a-z])/$1\u$2/g; # capitalize words
9179
+ $name =~ tr/-_a-zA-Z0-9//dc; # remove illegal characters
9180
+ $name = "Tag$name" if length($name) < 2 or $name =~ /^[-0-9]/;
9181
+ $tagInfo = { Name => ucfirst($name) };
9182
+ AddTagToTable($tagTablePtr, $tag, $tagInfo);
9169
9183
  } else {
9170
9184
  return undef unless $verbose;
9171
9185
  $tagInfo = { Name => "tag $tag" }; # create temporary tagInfo hash
@@ -993,6 +993,37 @@ Password for reading/writing password-protected PDF documents. Ignored if a
993
993
  password is not required. Character encoding of the password is determined
994
994
  by the value of the Charset option at processing time. Default is undef.
995
995
 
996
+ =item Plot
997
+
998
+ Settings to override defaults for SVG plot feature. Value is a comma
999
+ delimited string of settings, or undef to revert to default settings.
1000
+ Settings are accumulated if this option is set multiple times. Commas in
1001
+ the settings must be escaped as "&#44;". Valid settings and their default
1002
+ values are:
1003
+
1004
+ "Type=Line" - plot type (Line, Scatter or Histogram)
1005
+ "Style=Line" - data style (Line, Marker and/or Fill)
1006
+ "NBins=20" - number of bins for histogram plot
1007
+ "Size=800 600" - width,height of output image
1008
+ "Margin=60 15 15 30" - left,top,right,bottom margins around plot area
1009
+ "Legend=0 0" - x,y offset to shift plot legend
1010
+ "TxtPad=10 10" - padding between text and x,y scale
1011
+ "LineSpacing=20" - spacing between text lines
1012
+ "Stroke=1" - plot stroke width and marker-size scaling
1013
+ Title, XLabel, YLabel - plot title and x/y axis labels (no default)
1014
+ XMin, XMax - x axis minimum/maximum (autoscaling if not set)
1015
+ YMin, YMax - y axis minimum/maximum
1016
+ Multi - flag to draw multiple plots, one for each dataset
1017
+ Split - flag to split strings of numbers into lists
1018
+ (> 1 to split into lists of N items)
1019
+ "Grid=darkgray" - grid color
1020
+ "Text=black" - color of text and plot border
1021
+ "Bkg=" - background color (default is transparent)
1022
+ "Cols=red green blue black orange gray fuchsia brown turquoise gold"
1023
+ - colors for plot data
1024
+ "Marks=circle square triangle diamond star plus pentagon left down right"
1025
+ - marker-shape names for each dataset
1026
+
996
1027
  =item PrintConv
997
1028
 
998
1029
  Flag to enable automatic print conversion. Also enables inverse
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.19
3
+ Version: 13.22
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.19.0')
4
+ VERSION = Gem::Version.new('13.22.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.19.0
4
+ version: 13.22.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-02-11 00:00:00.000000000 Z
12
+ date: 2025-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -256,6 +256,7 @@ files:
256
256
  - bin/lib/Image/ExifTool/PhotoCD.pm
257
257
  - bin/lib/Image/ExifTool/PhotoMechanic.pm
258
258
  - bin/lib/Image/ExifTool/Photoshop.pm
259
+ - bin/lib/Image/ExifTool/Plot.pm
259
260
  - bin/lib/Image/ExifTool/PostScript.pm
260
261
  - bin/lib/Image/ExifTool/PrintIM.pm
261
262
  - bin/lib/Image/ExifTool/Protobuf.pm