exiftool_vendored 13.08.0 → 13.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +60 -2
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/exiftool +229 -158
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool/AAC.pm +1 -1
  11. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  16. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  17. data/bin/lib/Image/ExifTool/Apple.pm +10 -8
  18. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +14 -6
  24. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Canon.pm +8 -4
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  29. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DJI.pm +96 -45
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  39. data/bin/lib/Image/ExifTool/EXE.pm +123 -32
  40. data/bin/lib/Image/ExifTool/Exif.pm +7 -4
  41. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  44. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  46. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  47. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  48. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  51. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GM.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  56. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  57. data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  58. data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
  59. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  60. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  61. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  62. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  63. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  64. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ICC_Profile.pm +81 -2
  66. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  67. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  68. data/bin/lib/Image/ExifTool/IPTC.pm +8 -5
  69. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  70. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  71. data/bin/lib/Image/ExifTool/Import.pm +5 -4
  72. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  73. data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  74. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  75. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  76. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  77. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Jpeg2000.pm +3 -2
  79. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  80. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  81. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  82. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  99. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  100. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  101. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  102. data/bin/lib/Image/ExifTool/LigoGPS.pm +408 -0
  103. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  104. data/bin/lib/Image/ExifTool/M2TS.pm +22 -13
  105. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  107. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  117. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  118. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  119. data/bin/lib/Image/ExifTool/Matroska.pm +12 -4
  120. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  122. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Nikon.pm +164 -35
  125. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  126. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  127. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  128. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  129. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  130. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  131. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  132. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  134. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  136. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PLIST.pm +3 -3
  140. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PNG.pm +3 -2
  142. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  145. data/bin/lib/Image/ExifTool/Panasonic.pm +20 -2
  146. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  147. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  148. data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  149. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  150. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  151. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
  153. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  154. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Protobuf.pm +24 -14
  156. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  157. data/bin/lib/Image/ExifTool/QuickTime.pm +94 -26
  158. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -302
  159. data/bin/lib/Image/ExifTool/README +4 -0
  160. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  161. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  162. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  173. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  175. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  177. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  179. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  180. data/bin/lib/Image/ExifTool/TagLookup.pm +14 -5
  181. data/bin/lib/Image/ExifTool/TagNames.pod +106 -34
  182. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  183. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  184. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  185. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  186. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  187. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  188. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  189. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  190. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  191. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  193. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  194. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  195. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  196. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  197. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  198. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +48 -12
  199. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  200. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  201. data/bin/lib/Image/ExifTool/Writer.pl +25 -13
  202. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  203. data/bin/lib/Image/ExifTool/XMP.pm +1 -1
  204. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  205. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  206. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  207. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  208. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  209. data/bin/lib/Image/ExifTool.pm +20 -11
  210. data/bin/lib/Image/ExifTool.pod +55 -40
  211. data/bin/perl-Image-ExifTool.spec +1 -1
  212. data/lib/exiftool_vendored/version.rb +1 -1
  213. metadata +3 -2
@@ -12,6 +12,7 @@
12
12
  # 5) http://www.color.org/icc_specs2.xalter (approved revisions, 2010-07-16)
13
13
  # 6) Eef Vreeland private communication
14
14
  # 7) https://color.org/specification/ICC.2-2019.pdf
15
+ # 8) https://www.color.org/specification/ICC.1-2022-05.pdf
15
16
  #
16
17
  # Notes: The ICC profile information is different: the format of each
17
18
  # tag is embedded in the information instead of in the directory
@@ -25,7 +26,7 @@ use strict;
25
26
  use vars qw($VERSION);
26
27
  use Image::ExifTool qw(:DataAccess :Utils);
27
28
 
28
- $VERSION = '1.40';
29
+ $VERSION = '1.41';
29
30
 
30
31
  sub ProcessICC($$);
31
32
  sub ProcessICC_Profile($$$);
@@ -367,6 +368,7 @@ my %manuSig = ( #6
367
368
  Groups => { 2 => 'Time' },
368
369
  PrintConv => '$self->ConvertDateTime($val)',
369
370
  },
371
+
370
372
  targ => {
371
373
  Name => 'CharTarget',
372
374
  ValueConv => '$val=~s/\0.*//; length $val > 128 ? \$val : $val',
@@ -493,6 +495,10 @@ my %manuSig = ( #6
493
495
  },
494
496
  },
495
497
  ciis => 'ColorimetricIntentImageState', #5
498
+ cicp => { #8 (Coding-independent Code Points)
499
+ Name => 'ColorRepresentation',
500
+ SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::ColorRep' },
501
+ },
496
502
  scoe => 'SceneColorimetryEstimates', #5
497
503
  sape => 'SceneAppearanceEstimates', #5
498
504
  fpce => 'FocalPlaneColorimetryEstimates', #5
@@ -628,6 +634,7 @@ my %manuSig = ( #6
628
634
  s2cp => 'StandardToCustomPcc',
629
635
  smap => 'SurfaceMap',
630
636
  # smwp ? (seen in some v5 samples [was a mistake in sample production])
637
+ hdgm => { Name => 'HDGainMapInfo', Binary => 1 }, #PH
631
638
 
632
639
  # the following entry represents the ICC profile header, and doesn't
633
640
  # exist as a tag in the directory. It is only in this table to provide
@@ -747,6 +754,78 @@ my %manuSig = ( #6
747
754
  },
748
755
  );
749
756
 
757
+ # Coding-independent code points (cicp) definition
758
+ # (NOTE: conversions are the same as Image::ExifTool::QuickTime::ColorRep tags)
759
+ %Image::ExifTool::ICC_Profile::ColorRep = (
760
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
761
+ GROUPS => { 0 => 'ICC_Profile', 1 => 'ICC-cicp', 2 => 'Image' },
762
+ 8 => {
763
+ Name => 'ColorPrimaries',
764
+ PrintConv => {
765
+ 1 => 'BT.709',
766
+ 2 => 'Unspecified',
767
+ 4 => 'BT.470 System M (historical)',
768
+ 5 => 'BT.470 System B, G (historical)',
769
+ 6 => 'BT.601',
770
+ 7 => 'SMPTE 240',
771
+ 8 => 'Generic film (color filters using illuminant C)',
772
+ 9 => 'BT.2020, BT.2100',
773
+ 10 => 'SMPTE 428 (CIE 1931 XYZ)', #forum14766
774
+ 11 => 'SMPTE RP 431-2',
775
+ 12 => 'SMPTE EG 432-1',
776
+ 22 => 'EBU Tech. 3213-E',
777
+ },
778
+ },
779
+ 9 => {
780
+ Name => 'TransferCharacteristics',
781
+ PrintConv => {
782
+ 0 => 'For future use (0)',
783
+ 1 => 'BT.709',
784
+ 2 => 'Unspecified',
785
+ 3 => 'For future use (3)',
786
+ 4 => 'BT.470 System M (historical)', # Gamma 2.2? (ref forum14960)
787
+ 5 => 'BT.470 System B, G (historical)', # Gamma 2.8? (ref forum14960)
788
+ 6 => 'BT.601',
789
+ 7 => 'SMPTE 240 M',
790
+ 8 => 'Linear',
791
+ 9 => 'Logarithmic (100 : 1 range)',
792
+ 10 => 'Logarithmic (100 * Sqrt(10) : 1 range)',
793
+ 11 => 'IEC 61966-2-4',
794
+ 12 => 'BT.1361',
795
+ 13 => 'sRGB or sYCC',
796
+ 14 => 'BT.2020 10-bit systems',
797
+ 15 => 'BT.2020 12-bit systems',
798
+ 16 => 'SMPTE ST 2084, ITU BT.2100 PQ',
799
+ 17 => 'SMPTE ST 428',
800
+ 18 => 'BT.2100 HLG, ARIB STD-B67',
801
+ },
802
+ },
803
+ 10 => {
804
+ Name => 'MatrixCoefficients',
805
+ PrintConv => {
806
+ 0 => 'Identity matrix',
807
+ 1 => 'BT.709',
808
+ 2 => 'Unspecified',
809
+ 3 => 'For future use (3)',
810
+ 4 => 'US FCC 73.628',
811
+ 5 => 'BT.470 System B, G (historical)',
812
+ 6 => 'BT.601',
813
+ 7 => 'SMPTE 240 M',
814
+ 8 => 'YCgCo',
815
+ 9 => 'BT.2020 non-constant luminance, BT.2100 YCbCr',
816
+ 10 => 'BT.2020 constant luminance',
817
+ 11 => 'SMPTE ST 2085 YDzDx',
818
+ 12 => 'Chromaticity-derived non-constant luminance',
819
+ 13 => 'Chromaticity-derived constant luminance',
820
+ 14 => 'BT.2100 ICtCp',
821
+ },
822
+ },
823
+ 11 => {
824
+ Name => 'VideoFullRangeFlag',
825
+ PrintConv => { 0 => 'Limited', 1 => 'Full' },
826
+ },
827
+ );
828
+
750
829
  # viewingConditionsType (view) definition
751
830
  %Image::ExifTool::ICC_Profile::ViewingConditions = (
752
831
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
@@ -1357,7 +1436,7 @@ data created on one device into another device's native color space.
1357
1436
 
1358
1437
  =head1 AUTHOR
1359
1438
 
1360
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1439
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1361
1440
 
1362
1441
  This library is free software; you can redistribute it and/or modify it
1363
1442
  under the same terms as Perl itself.
@@ -121,7 +121,7 @@ information from Windows ICO (icon) and CUR (cursor) files.
121
121
 
122
122
  =head1 AUTHOR
123
123
 
124
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
124
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
125
125
 
126
126
  This library is free software; you can redistribute it and/or modify it
127
127
  under the same terms as Perl itself.
@@ -1746,7 +1746,7 @@ other types of audio files.
1746
1746
 
1747
1747
  =head1 AUTHOR
1748
1748
 
1749
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1749
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1750
1750
 
1751
1751
  This library is free software; you can redistribute it and/or modify it
1752
1752
  under the same terms as Perl itself.
@@ -15,7 +15,7 @@ use strict;
15
15
  use vars qw($VERSION $AUTOLOAD %iptcCharset);
16
16
  use Image::ExifTool qw(:DataAccess :Utils);
17
17
 
18
- $VERSION = '1.58';
18
+ $VERSION = '1.59';
19
19
 
20
20
  %iptcCharset = (
21
21
  "\x1b%G" => 'UTF8',
@@ -1057,7 +1057,7 @@ sub ProcessIPTC($$$)
1057
1057
  my $verbose = $et->Options('Verbose');
1058
1058
  my $validate = $et->Options('Validate');
1059
1059
  my $success = 0;
1060
- my ($lastRec, $recordPtr, $recordName);
1060
+ my ($lastRec, $recordPtr, $recordName, %seen);
1061
1061
 
1062
1062
  $verbose and $dirInfo and $et->VerboseDir('IPTC', 0, $$dirInfo{DirLen});
1063
1063
 
@@ -1083,7 +1083,7 @@ sub ProcessIPTC($$$)
1083
1083
  $et->FoundTag('CurrentIPTCDigest', $md5);
1084
1084
  }
1085
1085
  } else {
1086
- if (($Image::ExifTool::MWG::strict or $et->Options('Validate')) and
1086
+ if (($Image::ExifTool::MWG::strict or $validate) and
1087
1087
  $$et{FILE_TYPE} =~ /^(JPEG|TIFF|PSD)$/)
1088
1088
  {
1089
1089
  if ($Image::ExifTool::MWG::strict) {
@@ -1186,8 +1186,11 @@ sub ProcessIPTC($$$)
1186
1186
  # - no Name so name is generated automatically with decimal tag number
1187
1187
  AddTagToTable($recordPtr, $tag, { Unknown => 1 });
1188
1188
  }
1189
-
1190
1189
  my $tagInfo = $et->GetTagInfo($recordPtr, $tag);
1190
+ if ($validate and not $$tagInfo{List} and not $$tagInfo{Unknown}) {
1191
+ $et->Warn("Multiple IPTC $$tagInfo{Name} tags") if $seen{$tagInfo};
1192
+ $seen{$tagInfo} = 1;
1193
+ }
1191
1194
  my $format;
1192
1195
  # (could use $$recordPtr{FORMAT} if no Format below, but don't do this to
1193
1196
  # be backward compatible with improperly written PhotoMechanic tags)
@@ -1284,7 +1287,7 @@ image files.
1284
1287
 
1285
1288
  =head1 AUTHOR
1286
1289
 
1287
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1290
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1288
1291
 
1289
1292
  This library is free software; you can redistribute it and/or modify it
1290
1293
  under the same terms as Perl itself.
@@ -184,7 +184,7 @@ information from ISO 9660 disk images.
184
184
 
185
185
  =head1 AUTHOR
186
186
 
187
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
187
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
188
188
 
189
189
  This library is free software; you can redistribute it and/or modify it
190
190
  under the same terms as Perl itself.
@@ -191,7 +191,7 @@ information (including artwork images) from iTunes Cover Flow files.
191
191
 
192
192
  =head1 AUTHOR
193
193
 
194
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
194
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
195
195
 
196
196
  This library is free software; you can redistribute it and/or modify it
197
197
  under the same terms as Perl itself.
@@ -12,7 +12,7 @@ require Exporter;
12
12
 
13
13
  use vars qw($VERSION @ISA @EXPORT_OK);
14
14
 
15
- $VERSION = '1.13';
15
+ $VERSION = '1.14';
16
16
  @ISA = qw(Exporter);
17
17
  @EXPORT_OK = qw(ReadCSV ReadJSON);
18
18
 
@@ -80,14 +80,15 @@ sub ReadCSV($$;$$)
80
80
  }
81
81
  if (@tags) {
82
82
  # save values for each tag
83
+ $fileInfo{_ordered_keys_} = [ ];
83
84
  for ($i=0; $i<@vals and $i<@tags; ++$i) {
84
85
  # ignore empty entries unless missingValue is empty too
85
86
  next unless length $vals[$i] or defined $missingValue and $missingValue eq '';
86
87
  # delete tag (set value to undef) if value is same as missing tag
87
88
  $fileInfo{$tags[$i]} =
88
89
  (defined $missingValue and $vals[$i] eq $missingValue) ? undef : $vals[$i];
90
+ push @{$fileInfo{_ordered_keys_}}, $tags[$i];
89
91
  }
90
- $fileInfo{_ordered_keys_} = \@tags;
91
92
  # figure out the file name to use
92
93
  if ($fileInfo{SourceFile}) {
93
94
  $$database{$fileInfo{SourceFile}} = \%fileInfo;
@@ -99,7 +100,7 @@ sub ReadCSV($$;$$)
99
100
  # terminate at first blank tag name (eg. extra comma at end of line)
100
101
  last unless length $_;
101
102
  @tags or s/^\xef\xbb\xbf//; # remove UTF-8 BOM if it exists
102
- /^[-\w]+(:[-\w+]+)?#?$/ or $err = "Invalid tag name '${_}'", last;
103
+ /^([-_0-9A-Z]+:)*[-_0-9A-Z]+#?$/i or $err = "Invalid tag name '${_}'", last;
103
104
  push(@tags, $_);
104
105
  }
105
106
  last if $err;
@@ -355,7 +356,7 @@ ARRAY reference in a special "_ordered_keys_" element of this hash.
355
356
 
356
357
  =head1 AUTHOR
357
358
 
358
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
359
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
359
360
 
360
361
  This library is free software; you can redistribute it and/or modify it
361
362
  under the same terms as Perl itself.
@@ -277,7 +277,7 @@ them and the LargeFileSupport option is enabled.
277
277
 
278
278
  =head1 AUTHOR
279
279
 
280
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
280
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
281
281
 
282
282
  This library is free software; you can redistribute it and/or modify it
283
283
  under the same terms as Perl itself.
@@ -206,7 +206,7 @@ IJPEG SDK, used in cameras such as the P2 Pro.
206
206
 
207
207
  =head1 AUTHOR
208
208
 
209
- Copyright 2003-2024, Marcos Del Sol Vives (marcos at orca.pet)
209
+ Copyright 2003-2025, Marcos Del Sol Vives (marcos at orca.pet)
210
210
 
211
211
  This library is free software; you can redistribute it and/or modify it
212
212
  under the same terms as Perl itself.
@@ -791,7 +791,7 @@ segments are included in the Image::ExifTool module itself.
791
791
 
792
792
  =head1 AUTHOR
793
793
 
794
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
794
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
795
795
 
796
796
  This library is free software; you can redistribute it and/or modify it
797
797
  under the same terms as Perl itself.
@@ -2590,7 +2590,7 @@ estimated JPEG quality if requested.
2590
2590
 
2591
2591
  =head1 AUTHOR
2592
2592
 
2593
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2593
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2594
2594
 
2595
2595
  This library is free software; you can redistribute it and/or modify it
2596
2596
  under the same terms as Perl itself.
@@ -183,7 +183,7 @@ information from JSON files.
183
183
 
184
184
  =head1 AUTHOR
185
185
 
186
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
186
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
187
187
 
188
188
  This library is free software; you can redistribute it and/or modify it
189
189
  under the same terms as Perl itself.
@@ -117,7 +117,7 @@ notes.
117
117
 
118
118
  =head1 AUTHOR
119
119
 
120
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
120
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
121
121
 
122
122
  This library is free software; you can redistribute it and/or modify it
123
123
  under the same terms as Perl itself.
@@ -16,7 +16,7 @@ use strict;
16
16
  use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
 
19
- $VERSION = '1.42';
19
+ $VERSION = '1.43';
20
20
 
21
21
  sub ProcessJpeg2000Box($$$);
22
22
  sub ProcessJUMD($$$);
@@ -631,6 +631,7 @@ my %j2cMarker = (
631
631
  %Image::ExifTool::Jpeg2000::ColorSpec = (
632
632
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
633
633
  WRITE_PROC => \&Image::ExifTool::WriteBinaryData, # (we don't actually call this)
634
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
634
635
  GROUPS => { 2 => 'Image' },
635
636
  FORMAT => 'int8s',
636
637
  WRITABLE => 1,
@@ -1670,7 +1671,7 @@ files.
1670
1671
 
1671
1672
  =head1 AUTHOR
1672
1673
 
1673
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1674
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1674
1675
 
1675
1676
  This library is free software; you can redistribute it and/or modify it
1676
1677
  under the same terms as Perl itself.
@@ -3252,7 +3252,7 @@ interpret Kodak maker notes EXIF meta information.
3252
3252
 
3253
3253
  =head1 AUTHOR
3254
3254
 
3255
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
3255
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
3256
3256
 
3257
3257
  This library is free software; you can redistribute it and/or modify it
3258
3258
  under the same terms as Perl itself.
@@ -152,7 +152,7 @@ meta information from Kyocera Contax N Digital RAW images.
152
152
 
153
153
  =head1 AUTHOR
154
154
 
155
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
155
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
156
156
 
157
157
  This library is free software; you can redistribute it and/or modify it
158
158
  under the same terms as Perl itself.
@@ -147,7 +147,7 @@ metadata from Leica Image File (LIF) images.
147
147
 
148
148
  =head1 AUTHOR
149
149
 
150
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
150
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
151
151
 
152
152
  This library is free software; you can redistribute it and/or modify it
153
153
  under the same terms as Perl itself.
@@ -703,7 +703,7 @@ information MS Shell Link (Windows shortcut) files.
703
703
 
704
704
  =head1 AUTHOR
705
705
 
706
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
706
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
707
707
 
708
708
  This library is free software; you can redistribute it and/or modify it
709
709
  under the same terms as Perl itself.
@@ -1570,7 +1570,7 @@ and values.
1570
1570
 
1571
1571
  =head1 AUTHOR
1572
1572
 
1573
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1573
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1574
1574
 
1575
1575
  This library is free software; you can redistribute it and/or modify it
1576
1576
  under the same terms as Perl itself.
@@ -8702,7 +8702,7 @@ and values.
8702
8702
 
8703
8703
  =head1 AUTHOR
8704
8704
 
8705
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
8705
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
8706
8706
 
8707
8707
  This library is free software; you can redistribute it and/or modify it
8708
8708
  under the same terms as Perl itself.
@@ -989,7 +989,7 @@ and values.
989
989
 
990
990
  =head1 AUTHOR
991
991
 
992
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
992
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
993
993
 
994
994
  This library is free software; you can redistribute it and/or modify it
995
995
  under the same terms as Perl itself.
@@ -1032,7 +1032,7 @@ and values.
1032
1032
 
1033
1033
  =head1 AUTHOR
1034
1034
 
1035
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1035
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1036
1036
 
1037
1037
  This library is free software; you can redistribute it and/or modify it
1038
1038
  under the same terms as Perl itself.
@@ -4005,7 +4005,7 @@ and values.
4005
4005
 
4006
4006
  =head1 AUTHOR
4007
4007
 
4008
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
4008
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
4009
4009
 
4010
4010
  This library is free software; you can redistribute it and/or modify it
4011
4011
  under the same terms as Perl itself.
@@ -2878,7 +2878,7 @@ and values.
2878
2878
 
2879
2879
  =head1 AUTHOR
2880
2880
 
2881
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2881
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2882
2882
 
2883
2883
  This library is free software; you can redistribute it and/or modify it
2884
2884
  under the same terms as Perl itself.
@@ -11270,7 +11270,7 @@ and values.
11270
11270
 
11271
11271
  =head1 AUTHOR
11272
11272
 
11273
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
11273
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
11274
11274
 
11275
11275
  This library is free software; you can redistribute it and/or modify it
11276
11276
  under the same terms as Perl itself.
@@ -7903,7 +7903,7 @@ and values.
7903
7903
 
7904
7904
  =head1 AUTHOR
7905
7905
 
7906
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
7906
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
7907
7907
 
7908
7908
  This library is free software; you can redistribute it and/or modify it
7909
7909
  under the same terms as Perl itself.
@@ -5841,7 +5841,7 @@ and values.
5841
5841
 
5842
5842
  =head1 AUTHOR
5843
5843
 
5844
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
5844
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
5845
5845
 
5846
5846
  This library is free software; you can redistribute it and/or modify it
5847
5847
  under the same terms as Perl itself.
@@ -2316,7 +2316,7 @@ and values.
2316
2316
 
2317
2317
  =head1 AUTHOR
2318
2318
 
2319
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2319
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2320
2320
 
2321
2321
  This library is free software; you can redistribute it and/or modify it
2322
2322
  under the same terms as Perl itself.
@@ -3208,7 +3208,7 @@ and values.
3208
3208
 
3209
3209
  =head1 AUTHOR
3210
3210
 
3211
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
3211
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
3212
3212
 
3213
3213
  This library is free software; you can redistribute it and/or modify it
3214
3214
  under the same terms as Perl itself.
@@ -1258,7 +1258,7 @@ and values.
1258
1258
 
1259
1259
  =head1 AUTHOR
1260
1260
 
1261
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1261
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1262
1262
 
1263
1263
  This library is free software; you can redistribute it and/or modify it
1264
1264
  under the same terms as Perl itself.
@@ -5718,7 +5718,7 @@ and values.
5718
5718
 
5719
5719
  =head1 AUTHOR
5720
5720
 
5721
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
5721
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
5722
5722
 
5723
5723
  This library is free software; you can redistribute it and/or modify it
5724
5724
  under the same terms as Perl itself.
@@ -1789,7 +1789,7 @@ and values.
1789
1789
 
1790
1790
  =head1 AUTHOR
1791
1791
 
1792
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1792
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1793
1793
 
1794
1794
  This library is free software; you can redistribute it and/or modify it
1795
1795
  under the same terms as Perl itself.
@@ -620,7 +620,7 @@ and values.
620
620
 
621
621
  =head1 AUTHOR
622
622
 
623
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
623
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
624
624
 
625
625
  This library is free software; you can redistribute it and/or modify it
626
626
  under the same terms as Perl itself.
@@ -528,7 +528,7 @@ and values.
528
528
 
529
529
  =head1 AUTHOR
530
530
 
531
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
531
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
532
532
 
533
533
  This library is free software; you can redistribute it and/or modify it
534
534
  under the same terms as Perl itself.
@@ -1313,7 +1313,7 @@ and values.
1313
1313
 
1314
1314
  =head1 AUTHOR
1315
1315
 
1316
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1316
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1317
1317
 
1318
1318
  This library is free software; you can redistribute it and/or modify it
1319
1319
  under the same terms as Perl itself.
@@ -784,7 +784,7 @@ and values.
784
784
 
785
785
  =head1 AUTHOR
786
786
 
787
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
787
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
788
788
 
789
789
  This library is free software; you can redistribute it and/or modify it
790
790
  under the same terms as Perl itself.
@@ -504,7 +504,7 @@ Capture.
504
504
 
505
505
  =head1 AUTHOR
506
506
 
507
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
507
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
508
508
 
509
509
  This library is free software; you can redistribute it and/or modify it
510
510
  under the same terms as Perl itself.