exiftool-vendored.exe 12.72.0 → 12.76.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.
Files changed (202) hide show
  1. package/bin/exiftool_files/Changes +64 -1
  2. package/bin/exiftool_files/README +47 -46
  3. package/bin/exiftool_files/exiftool.pl +121 -90
  4. package/bin/exiftool_files/lib/File/RandomAccess.pm +32 -6
  5. package/bin/exiftool_files/lib/File/RandomAccess.pod +6 -6
  6. package/bin/exiftool_files/lib/Image/ExifTool/7Z.pm +3 -3
  7. package/bin/exiftool_files/lib/Image/ExifTool/AAC.pm +8 -6
  8. package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
  9. package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +3 -3
  10. package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +1 -1
  11. package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +1 -1
  12. package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
  13. package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +1 -1
  14. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +1 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +3 -3
  19. package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
  20. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +9 -9
  21. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +1 -1
  22. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +7 -6
  23. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
  24. package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
  25. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +3 -3
  26. package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
  27. package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
  29. package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +3 -3
  30. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +1 -1
  31. package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +5 -5
  32. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
  34. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
  36. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +1 -1
  37. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +4 -3
  38. package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +1 -1
  39. package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
  40. package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +1 -1
  41. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +3 -3
  42. package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +4 -4
  43. package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
  44. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +61 -8
  45. package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +1 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
  47. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +9 -4
  48. package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +1 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
  51. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +1 -1
  52. package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
  53. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +4 -4
  54. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +1 -1
  55. package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
  56. package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +1 -1
  57. package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
  58. package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +7 -5
  59. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  60. package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +1 -1
  61. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +3 -3
  62. package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +1 -1
  63. package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
  64. package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
  65. package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +6 -6
  66. package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +1 -1
  67. package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +1 -1
  68. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +5 -2
  69. package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  70. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +3 -3
  71. package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +3 -3
  72. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +67 -17
  73. package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
  74. package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  75. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
  76. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +1 -1
  77. package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +4 -4
  82. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +4 -5
  84. package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +3 -3
  85. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sk.pm +1 -1
  91. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
  92. package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
  93. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  94. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  95. package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +3 -3
  96. package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
  97. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +1 -1
  98. package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +5 -5
  99. package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
  100. package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
  101. package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +1 -1
  102. package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
  103. package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
  104. package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
  105. package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
  106. package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
  107. package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
  108. package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
  109. package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +1 -1
  110. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +1 -1
  111. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
  112. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +1 -1
  113. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +1 -1
  114. package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
  115. package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +3 -3
  116. package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
  117. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +11 -8
  118. package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
  119. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +4 -4
  120. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
  121. package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
  122. package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +1 -1
  123. package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +3 -3
  124. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +1 -1
  125. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
  126. package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
  127. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
  128. package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
  129. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +55 -5
  130. package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
  131. package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
  132. package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +4 -4
  133. package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
  134. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +24 -2
  135. package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +1 -1
  136. package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
  137. package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
  138. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +27 -2
  139. package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +4 -4
  140. package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
  141. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +32 -11
  142. package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +6 -6
  143. package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
  144. package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  145. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +4 -4
  146. package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +3 -3
  147. package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
  148. package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
  149. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +55 -101
  150. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +97 -7
  151. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +1 -1
  152. package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +3 -3
  153. package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +1 -1
  154. package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
  155. package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
  156. package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
  157. package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
  158. package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
  159. package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +3 -3
  160. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +5 -5
  161. package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
  162. package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
  163. package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +2 -3
  164. package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
  165. package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
  166. package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  167. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +5 -5
  168. package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
  169. package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
  170. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +4 -4
  171. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +3879 -3862
  172. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +11439 -11374
  173. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +1 -1
  174. package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
  175. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +1 -1
  176. package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
  177. package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +1 -1
  178. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +1 -1
  179. package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
  180. package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +1 -1
  181. package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
  182. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  183. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +27 -24
  184. package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  185. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +2 -2
  186. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +1 -1
  187. package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  188. package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
  189. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +5 -2
  190. package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  191. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +9 -5
  192. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +74 -45
  193. package/bin/exiftool_files/lib/Image/ExifTool/XISF.pm +1 -1
  194. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +20 -3
  195. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +10 -1
  196. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +1 -1
  197. package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +7 -7
  198. package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
  199. package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
  200. package/bin/exiftool_files/lib/Image/ExifTool.pm +59 -28
  201. package/bin/exiftool_files/lib/Image/ExifTool.pod +81 -68
  202. package/package.json +6 -6
@@ -4,9 +4,72 @@ 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 12.70. (Other versions are
7
+ Note: The most recent production release is Version 12.76. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Jan. 31, 2024 - Version 12.76 (production release)
11
+
12
+ - Properly implement patch of 12.45 to avoid duplicating raw data when writing
13
+ Sony ARW images where the raw data is double-referenced as both strips and
14
+ tiles
15
+ - Improved handling of bad offsets in HtmlDump output
16
+
17
+ Jan. 30, 2024 - Version 12.75 (production release)
18
+
19
+ - CORRUPTION WARNING: Fixed bug introduced in 12.45 which could result in
20
+ corrupted Sony ARW images from some newer models when rewriting lossless
21
+ compressed ARW images which were previously edited by 12.44 or earlier
22
+ - Added ability to read C2PA JUMBF metadata from PDF and SVG files
23
+ - Added ability to extract JUMBF metadata as a block
24
+ - Added read support for C2PA (JUMBF-format) files
25
+ - Removed "date before 1970" warning entirely since 64-bit systems should be
26
+ able to handle dates in this range
27
+ - Improved Canon FocusMode decoding
28
+ - Fixed bug introducd in 12.74 which could cause "Undefined subroutine"
29
+ runtime error when reading MIE files
30
+
31
+ Jan. 23, 2024 - Version 12.74
32
+
33
+ - Added a couple of new Nikon lenses (thanks Chris)
34
+ - Added write support for a few new QuickTime Keys tags
35
+ - Decode ShutterCount for Canon EOS R5 (thanks John Moyer)
36
+ - Improved error messages in the case of file read errors
37
+ - Enhanced tag name strings (eg. -if and -p option arguments) to allow values
38
+ of multiple matching tags to be concatenated when a group name of "All" is
39
+ specified
40
+ - Enhanced -p option to add -p- feature which avoids adding trailing newline
41
+ - Changed warning from "Shift results in negative time" to "Shift results in
42
+ date before 1970"
43
+ - Patched calculation of GPSDateTime for the timed metadata in Track3 of
44
+ Garmin videos so the API QuickTimeUTC option is no longer required
45
+ - Fixed conversion error when writing QuickTime:GoogleTrackDuration
46
+ - Fixed misidentification of non-TIFF-format files containing DNGVersion tag
47
+ - Fixed bug where Avoid-ed XMP structures could be created when writing
48
+ another same-named structure
49
+ - Internal Changes:
50
+ - Changed form of all new() calls to accommodate backward
51
+ incompatibilities in recent versions of Perl
52
+ - Changed order of InsertTagValues() arguments
53
+ - DateFmt() now returns value of formatted date/time string
54
+
55
+ Jan. 10, 2024 - Version 12.73
56
+
57
+ - Added write support for Leica XMP-xmpDSA tags
58
+ - Added read support for timed GPS from Yada RoadCam Pro 4K dashcam videos
59
+ - Added read support for PNG cpIp chunk
60
+ - Added range checks on lat/long values when writing QuickTime:GPSCoordinates
61
+ - Decode a number of new values for Ricoh GR III tags
62
+ - Decode a new Leica tag
63
+ - Improved handling of Brotli compression errors
64
+ - Enhanced API NoWarning option to also apply to app "Warning:" outputs
65
+ - Identify PNG Plus files
66
+ - Changed name of Pentax ISOAutoParameters to ISOAutoMinSpeed and improved
67
+ decoding
68
+ - Fixed writing of date/time tags in XMP-xmpMM:Pantry structure
69
+ - API Changes:
70
+ - Added LimitLongValues option to provide control over tags which
71
+ previously had a hard-coded length limit
72
+
10
73
  Dec. 29, 2023 - Version 12.72
11
74
 
12
75
  - Added read support for AAC audio files
@@ -14,49 +14,50 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DOCX r | ISO r | NRW r/w | RAR r
18
- 3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
19
- 3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
20
- 3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
21
- 7Z r | DV r | JP2 r/w | ODS r | RTF r
22
- A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
23
- AA r | DVR-MS r | JSON r | OFR r | RWL r/w
24
- AAC r | DYLIB r | JXL r | OGG r | RWZ r
25
- AAE r | EIP r | K25 r | OGV r | RM r
26
- AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
27
- ACR r | EPUB r | KEY r | OPUS r | SKETCH r
28
- AFM r | ERF r/w | LA r | ORF r/w | SO r
29
- AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
30
- AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
31
- APE r | EXR r | LNK r | PAC r | SRW r/w
32
- ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
33
- ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
34
- ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
35
- AVI r | FITS r | MACOS r | PCX r | TIFF r/w
36
- AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
37
- AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
38
- BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
39
- BPG r | FLV r | MIFF r | PFA r | TXT r
40
- BTF r | FPF r | MKA r | PFB r | VCF r
41
- CHM r | FPX r | MKS r | PFM r | VNT r
42
- COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
43
- CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
44
- CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
45
- CRM r/w | GZ r | MODD r | PICT r | WDP r/w
46
- CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
47
- CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
48
- CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
49
- CUR r | HEIF r/w | MP3 r | PPT r | WMV r
50
- CZI r | HTML r | MP4 r/w | PPTX r | WPG r
51
- DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
52
- DCP r/w | ICO r | MPG r | PSB r/w | WV r
53
- DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
54
- DFONT r | IDML r | MQV r/w | PSP r | XCF r
55
- DIVX r | IIQ r/w | MRC r | QTIF r/w | XISF r
56
- DJVU r | IND r/w | MRW r/w | R3D r | XLS r
57
- DLL r | INSP r/w | MXF r | RA r | XLSX r
58
- DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
59
- DOC r | INX r | NKSC r/w | RAM r | ZIP r
17
+ 360 r/w | DOCX r | ITC r | O r | RSRC r
18
+ 3FR r | DPX r | J2C r | ODP r | RTF r
19
+ 3G2 r/w | DR4 r/w/c | JNG r/w | ODS r | RW2 r/w
20
+ 3GP r/w | DSS r | JP2 r/w | ODT r | RWL r/w
21
+ 7Z r | DV r | JPEG r/w | OFR r | RWZ r
22
+ A r | DVB r/w | JSON r | OGG r | RM r
23
+ AA r | DVR-MS r | JXL r | OGV r | SEQ r
24
+ AAC r | DYLIB r | K25 r | ONP r | SKETCH r
25
+ AAE r | EIP r | KDC r | OPUS r | SO r
26
+ AAX r/w | EPS r/w | KEY r | ORF r/w | SR2 r/w
27
+ ACR r | EPUB r | LA r | ORI r/w | SRF r
28
+ AFM r | ERF r/w | LFP r | OTF r | SRW r/w
29
+ AI r/w | EXE r | LIF r | PAC r | SVG r
30
+ AIFF r | EXIF r/w/c | LNK r | PAGES r | SWF r
31
+ APE r | EXR r | LRV r/w | PBM r/w | THM r/w
32
+ ARQ r/w | EXV r/w/c | M2TS r | PCD r | TIFF r/w
33
+ ARW r/w | F4A/V r/w | M4A/V r/w | PCX r | TORRENT r
34
+ ASF r | FFF r/w | MACOS r | PDB r | TTC r
35
+ AVI r | FITS r | MAX r | PDF r/w | TTF r
36
+ AVIF r/w | FLA r | MEF r/w | PEF r/w | TXT r
37
+ AZW r | FLAC r | MIE r/w/c | PFA r | VCF r
38
+ BMP r | FLIF r/w | MIFF r | PFB r | VNT r
39
+ BPG r | FLV r | MKA r | PFM r | VRD r/w/c
40
+ BTF r | FPF r | MKS r | PGF r | VSD r
41
+ C2PA r | FPX r | MKV r | PGM r/w | WAV r
42
+ CHM r | GIF r/w | MNG r/w | PLIST r | WDP r/w
43
+ COS r | GLV r/w | MOBI r | PICT r | WEBP r/w
44
+ CR2 r/w | GPR r/w | MODD r | PMP r | WEBM r
45
+ CR3 r/w | GZ r | MOI r | PNG r/w | WMA r
46
+ CRM r/w | HDP r/w | MOS r/w | PPM r/w | WMV r
47
+ CRW r/w | HDR r | MOV r/w | PPT r | WPG r
48
+ CS1 r/w | HEIC r/w | MP3 r | PPTX r | WTV r
49
+ CSV r | HEIF r/w | MP4 r/w | PS r/w | WV r
50
+ CUR r | HTML r | MPC r | PSB r/w | X3F r/w
51
+ CZI r | ICC r/w/c | MPG r | PSD r/w | XCF r
52
+ DCM r | ICO r | MPO r/w | PSP r | XISF r
53
+ DCP r/w | ICS r | MQV r/w | QTIF r/w | XLS r
54
+ DCR r | IDML r | MRC r | R3D r | XLSX r
55
+ DFONT r | IIQ r/w | MRW r/w | RA r | XMP r/w/c
56
+ DIVX r | IND r/w | MXF r | RAF r/w | ZIP r
57
+ DJVU r | INSP r/w | NEF r/w | RAM r |
58
+ DLL r | INSV r | NKSC r/w | RAR r |
59
+ DNG r/w | INX r | NRW r/w | RAW r/w |
60
+ DOC r | ISO r | NUMBERS r | RIFF r |
60
61
 
61
62
  Meta Information
62
63
  ----------------------+----------------------+---------------------
@@ -108,8 +109,8 @@ your home directory, then you would type the following commands in a
108
109
  terminal window to extract and run ExifTool:
109
110
 
110
111
  cd ~/Desktop
111
- gzip -dc Image-ExifTool-12.72.tar.gz | tar -xf -
112
- cd Image-ExifTool-12.72
112
+ gzip -dc Image-ExifTool-12.76.tar.gz | tar -xf -
113
+ cd Image-ExifTool-12.76
113
114
  ./exiftool t/images/ExifTool.jpg
114
115
 
115
116
  Note: These commands extract meta information from one of the test images.
@@ -166,7 +167,7 @@ for calculating digest values and providing other features listed below:
166
167
 
167
168
  COPYRIGHT AND LICENSE
168
169
 
169
- Copyright 2003-2023, Phil Harvey
170
+ Copyright 2003-2024, Phil Harvey
170
171
 
171
172
  This is free software; you can redistribute it and/or modify it under the
172
173
  same terms as Perl itself.
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.72';
14
+ my $version = '12.76';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -49,6 +49,7 @@ sub ConvertBinary($);
49
49
  sub IsEqual($$);
50
50
  sub Infile($;$);
51
51
  sub AddSetTagsFile($;$);
52
+ sub Warning($$);
52
53
  sub DoSetFromFile($$$);
53
54
  sub CleanFilename($);
54
55
  sub SetWindowTitle($);
@@ -60,7 +61,7 @@ sub PreserveTime();
60
61
  sub AbsPath($);
61
62
  sub MyConvertFileName($$);
62
63
  sub SuggestedExtension($$$);
63
- sub LoadPrintFormat($);
64
+ sub LoadPrintFormat($;$);
64
65
  sub FilenameSPrintf($;$@);
65
66
  sub NextUnusedFilename($;$);
66
67
  sub CreateDirectory($);
@@ -262,7 +263,7 @@ my %optArgs = (
262
263
  '-lang' => 0, # (optional arg; cannot begin with "-")
263
264
  '-listitem' => 1,
264
265
  '-o' => 1, '-out' => 1,
265
- '-p' => 1, '-printformat' => 1,
266
+ '-p' => 1, '-printformat' => 1, '-p-' => 1, '-printformat-' => 1,
266
267
  '-P' => 0,
267
268
  '-password' => 1,
268
269
  '-require' => 1,
@@ -585,7 +586,7 @@ if ($^O eq 'MSWin32' and eval { require File::Glob }) {
585
586
  $doGlob = 1;
586
587
  }
587
588
 
588
- $mt = new Image::ExifTool; # create ExifTool object
589
+ $mt = Image::ExifTool->new; # create ExifTool object
589
590
 
590
591
  # don't extract duplicates by default unless set by UserDefined::Options
591
592
  $mt->Options(Duplicates => 0) unless %Image::ExifTool::UserDefined::Options
@@ -1145,10 +1146,10 @@ for (;;) {
1145
1146
  }
1146
1147
  /^overwrite_original$/i and $overwriteOrig = 1, next;
1147
1148
  /^overwrite_original_in_place$/i and $overwriteOrig = 2, next;
1148
- if (/^p$/ or $a eq 'printformat') {
1149
+ if (/^p(-?)$/ or /^printformat(-?)$/i) {
1149
1150
  my $fmt = shift;
1150
1151
  if ($pass) {
1151
- LoadPrintFormat($fmt);
1152
+ LoadPrintFormat($fmt, $1);
1152
1153
  # load MWG module now if necessary
1153
1154
  if (not $useMWG and grep /^mwg:/i, @requestTags) {
1154
1155
  $useMWG = 1;
@@ -1157,7 +1158,7 @@ for (;;) {
1157
1158
  }
1158
1159
  } else {
1159
1160
  # defer to next pass so the filename charset is available
1160
- push @nextPass, '-p', $fmt;
1161
+ push @nextPass, "-$_", $fmt;
1161
1162
  }
1162
1163
  next;
1163
1164
  }
@@ -1639,7 +1640,10 @@ if (@newValues) {
1639
1640
  if ($tag =~ /^(All)?TagsFromFile$/i) {
1640
1641
  defined $newVal or Error("Need file name for -tagsFromFile\n"), next Command;
1641
1642
  ++$isWriting;
1642
- if ($newVal eq '@' or not defined FilenameSPrintf($newVal)) {
1643
+ if ($newVal eq '@' or not defined FilenameSPrintf($newVal) or
1644
+ # can't set tags yet if we are using tags from other files with the -fileNUM option
1645
+ grep /\bfile\d+:/i, @{$setTags{$newVal}})
1646
+ {
1643
1647
  push @dynamicFiles, $newVal;
1644
1648
  next; # set tags from dynamic file later
1645
1649
  }
@@ -1699,7 +1703,7 @@ if (@newValues) {
1699
1703
  my ($rtn, $wrn) = $mt->SetNewValue($tag, $newVal, %opts);
1700
1704
  $needSave = 1;
1701
1705
  ++$isWriting if $rtn;
1702
- $wrn and Warn "Warning: $wrn\n";
1706
+ $wrn and Warning($mt, $wrn);
1703
1707
  }
1704
1708
  # exclude specified tags
1705
1709
  foreach (@exclude) {
@@ -1785,7 +1789,7 @@ if (not $altEnc and $mt->Options('Lang') ne 'en' and eval { require Encode }) {
1785
1789
  if (@fileOrder) {
1786
1790
  my @allFiles;
1787
1791
  ProcessFiles($mt, \@allFiles);
1788
- my $sortTool = new Image::ExifTool;
1792
+ my $sortTool = Image::ExifTool->new;
1789
1793
  $sortTool->Options(FastScan => $fileOrderFast) if $fileOrderFast;
1790
1794
  $sortTool->Options(PrintConv => $mt->Options('PrintConv'));
1791
1795
  $sortTool->Options(Duplicates => 0);
@@ -2073,7 +2077,7 @@ sub GetImageInfo($$)
2073
2077
  @foundTags = ('*', @tags) if @tags;
2074
2078
  $info = $et->ImageInfo(Infile($pipe,$isWriting), \@foundTags, $opts);
2075
2079
  foreach $condition (@condition) {
2076
- my $cond = $et->InsertTagValues(\@foundTags, $condition, \%info);
2080
+ my $cond = $et->InsertTagValues($condition, \@foundTags, \%info);
2077
2081
  {
2078
2082
  # set package so eval'd functions are in Image::ExifTool namespace
2079
2083
  package Image::ExifTool;
@@ -2274,7 +2278,7 @@ sub GetImageInfo($$)
2274
2278
  my @lines;
2275
2279
  my $opt = $type eq 'IF' ? 'Silent' : 'Warn'; # silence "IF" warnings
2276
2280
  foreach (@$prf) {
2277
- my $line = $et->InsertTagValues(\@foundTags, $_, $opt, $grp, $cache);
2281
+ my $line = $et->InsertTagValues($_, \@foundTags, $opt, $grp, $cache);
2278
2282
  if ($type eq 'IF') {
2279
2283
  $skipBody = 1 unless defined $line;
2280
2284
  } elsif (defined $line) {
@@ -2707,12 +2711,12 @@ TAG: foreach $tag (@foundTags) {
2707
2711
  } elsif ($fixLen == 1) {
2708
2712
  $padLen -= length Encode::decode_utf8($desc);
2709
2713
  } else {
2710
- my $gcstr = eval { new Unicode::GCString(Encode::decode_utf8($desc)) };
2714
+ my $gcstr = eval { Unicode::GCString->new(Encode::decode_utf8($desc)) };
2711
2715
  if ($gcstr) {
2712
2716
  $padLen -= $gcstr->columns;
2713
2717
  } else {
2714
2718
  $padLen -= length Encode::decode_utf8($desc);
2715
- Warn "Warning: Unicode::GCString problem. Columns may be misaligned\n";
2719
+ Warning($et, 'Unicode::GCString problem. Columns may be misaligned');
2716
2720
  $fixLen = 1;
2717
2721
  }
2718
2722
  }
@@ -2982,7 +2986,7 @@ sub SetImageInfo($$$)
2982
2986
  my $newFileName = $et->GetNewValues('FileName');
2983
2987
  my $newDir = $et->GetNewValues('Directory');
2984
2988
  if (defined $newFileName and not length $newFileName) {
2985
- Warn "Warning: New file name is empty - $ infile\n";
2989
+ Warning($et,"New file name is empty - $infile");
2986
2990
  undef $newFileName;
2987
2991
  }
2988
2992
  if (defined $testName) {
@@ -3633,7 +3637,7 @@ sub Infile($;$)
3633
3637
  if ($rafStdin) {
3634
3638
  $rafStdin->Seek(0); # rewind
3635
3639
  } elsif (open RAF_STDIN, '-') {
3636
- $rafStdin = new File::RandomAccess(\*RAF_STDIN);
3640
+ $rafStdin = File::RandomAccess->new(\*RAF_STDIN);
3637
3641
  $rafStdin->BinMode();
3638
3642
  }
3639
3643
  return $rafStdin if $rafStdin;
@@ -3641,9 +3645,22 @@ sub Infile($;$)
3641
3645
  return $file;
3642
3646
  }
3643
3647
 
3648
+ #------------------------------------------------------------------------------
3649
+ # Issue warning to stderr, adding leading "Warning: " and trailing newline
3650
+ # if the warning isn't suppressed by the API NoWarning option
3651
+ # Inputs: 0) ExifTool ref, 1) warning string
3652
+ sub Warning($$)
3653
+ {
3654
+ my ($et, $str) = @_;
3655
+ my $noWarn = $et->Options('NoWarning');
3656
+ if (not defined $noWarn or not eval { $str =~ /$noWarn/ }) {
3657
+ Warn "Warning: $str\n";
3658
+ }
3659
+ }
3660
+
3644
3661
  #------------------------------------------------------------------------------
3645
3662
  # Set new values from file
3646
- # Inputs: 0) exiftool ref, 1) filename, 2) reference to list of values to set
3663
+ # Inputs: 0) ExifTool ref, 1) filename, 2) reference to list of values to set
3647
3664
  # Returns: 0 on error (and increments $countBadWr)
3648
3665
  sub DoSetFromFile($$$)
3649
3666
  {
@@ -3656,19 +3673,18 @@ sub DoSetFromFile($$$)
3656
3673
  # delete all error and warning tags
3657
3674
  my @warns = grep /^(Error|Warning)\b/, keys %$info;
3658
3675
  $numSet -= scalar(@warns);
3659
- # issue a warning for the main error only if we were able to set some tags
3660
- if (keys(%$info) > @warns) {
3661
- my $err = $$info{Error};
3662
- delete $$info{$_} foreach @warns;
3663
- $$info{Warning} = $err;
3664
- }
3676
+ # issue a warning only for the main error
3677
+ my $err = $$info{Error};
3678
+ delete $$info{$_} foreach @warns;
3679
+ my $noWarn = $et->Options('NoWarning');
3680
+ $$info{Warning} = $err unless defined $noWarn and eval { $err =~ /$noWarn/ };
3665
3681
  } elsif ($$info{Warning}) {
3666
3682
  my $warns = 1;
3667
3683
  ++$warns while $$info{"Warning ($warns)"};
3668
3684
  $numSet -= $warns;
3669
3685
  }
3670
3686
  PrintErrors($et, $info, $file) and EFile($file), ++$countBadWr, return 0;
3671
- Warn "Warning: No writable tags set from $file\n" unless $numSet;
3687
+ Warning($et,"No writable tags set from $file") unless $numSet;
3672
3688
  return 1;
3673
3689
  }
3674
3690
 
@@ -3814,7 +3830,7 @@ sub ScanDir($$;$)
3814
3830
  if ($evalWarning) {
3815
3831
  chomp $evalWarning;
3816
3832
  $evalWarning =~ s/ at .*//s;
3817
- Warn "Warning: [Win32::FindFile] $evalWarning - $dir\n";
3833
+ Warning($et,"[Win32::FindFile] $evalWarning - $dir");
3818
3834
  $winSurrogate = 1 if $evalWarning =~ /surrogate/;
3819
3835
  } else {
3820
3836
  $et->Options(CharsetFileName => 'UTF8'); # now using UTF8
@@ -4090,6 +4106,10 @@ sub SuggestedExtension($$$)
4090
4106
  $ext = 'pict';
4091
4107
  } elsif ($$valPt =~ /^\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl/s) {
4092
4108
  $ext = 'jxl';
4109
+ } elsif ($$valPt =~ /^.{4}jumb\0.{3}jumdc2pa/s) {
4110
+ $ext = 'c2pa';
4111
+ } elsif ($tag eq 'JUMBF') {
4112
+ $ext = 'jumbf';
4093
4113
  } else {
4094
4114
  $ext = 'dat';
4095
4115
  }
@@ -4098,12 +4118,12 @@ sub SuggestedExtension($$$)
4098
4118
 
4099
4119
  #------------------------------------------------------------------------------
4100
4120
  # Load print format file
4101
- # Inputs: 0) file name
4121
+ # Inputs: 0) file name, 1) flag to avoid adding newline to input argument
4102
4122
  # - saves lines of file to %printFmt list
4103
4123
  # - adds tag names to @tags list
4104
- sub LoadPrintFormat($)
4124
+ sub LoadPrintFormat($;$)
4105
4125
  {
4106
- my $arg = shift;
4126
+ my ($arg, $noNL) = @_;
4107
4127
  if (not defined $arg) {
4108
4128
  Error "Must specify file or expression for -p option\n";
4109
4129
  } elsif ($arg !~ /\n/ and -f $arg and $mt->Open(\*FMT_FILE, $arg)) {
@@ -4112,7 +4132,8 @@ sub LoadPrintFormat($)
4112
4132
  }
4113
4133
  close(FMT_FILE);
4114
4134
  } else {
4115
- AddPrintFormat($arg . "\n");
4135
+ $arg .= "\n" unless $noNL;
4136
+ AddPrintFormat($arg);
4116
4137
  }
4117
4138
  }
4118
4139
 
@@ -4276,7 +4297,7 @@ sub CreateDirectory($)
4276
4297
  return 0;
4277
4298
  }
4278
4299
  unless ($k32CreateDir) {
4279
- $k32CreateDir = new Win32::API('KERNEL32', 'CreateDirectoryW', 'PP', 'I');
4300
+ $k32CreateDir = Win32::API->new('KERNEL32', 'CreateDirectoryW', 'PP', 'I');
4280
4301
  }
4281
4302
  $success = $k32CreateDir->Call($d2, 0) if $k32CreateDir;
4282
4303
  } else {
@@ -4636,49 +4657,50 @@ DESCRIPTION
4636
4657
 
4637
4658
  File Types
4638
4659
  ------------+-------------+-------------+-------------+------------
4639
- 360 r/w | DOCX r | ISO r | NRW r/w | RAR r
4640
- 3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
4641
- 3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
4642
- 3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
4643
- 7Z r | DV r | JP2 r/w | ODS r | RTF r
4644
- A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
4645
- AA r | DVR-MS r | JSON r | OFR r | RWL r/w
4646
- AAC r | DYLIB r | JXL r | OGG r | RWZ r
4647
- AAE r | EIP r | K25 r | OGV r | RM r
4648
- AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
4649
- ACR r | EPUB r | KEY r | OPUS r | SKETCH r
4650
- AFM r | ERF r/w | LA r | ORF r/w | SO r
4651
- AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
4652
- AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
4653
- APE r | EXR r | LNK r | PAC r | SRW r/w
4654
- ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
4655
- ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
4656
- ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
4657
- AVI r | FITS r | MACOS r | PCX r | TIFF r/w
4658
- AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
4659
- AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
4660
- BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
4661
- BPG r | FLV r | MIFF r | PFA r | TXT r
4662
- BTF r | FPF r | MKA r | PFB r | VCF r
4663
- CHM r | FPX r | MKS r | PFM r | VNT r
4664
- COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
4665
- CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
4666
- CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
4667
- CRM r/w | GZ r | MODD r | PICT r | WDP r/w
4668
- CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
4669
- CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
4670
- CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
4671
- CUR r | HEIF r/w | MP3 r | PPT r | WMV r
4672
- CZI r | HTML r | MP4 r/w | PPTX r | WPG r
4673
- DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
4674
- DCP r/w | ICO r | MPG r | PSB r/w | WV r
4675
- DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
4676
- DFONT r | IDML r | MQV r/w | PSP r | XCF r
4677
- DIVX r | IIQ r/w | MRC r | QTIF r/w | XISF r
4678
- DJVU r | IND r/w | MRW r/w | R3D r | XLS r
4679
- DLL r | INSP r/w | MXF r | RA r | XLSX r
4680
- DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
4681
- DOC r | INX r | NKSC r/w | RAM r | ZIP r
4660
+ 360 r/w | DOCX r | ITC r | O r | RSRC r
4661
+ 3FR r | DPX r | J2C r | ODP r | RTF r
4662
+ 3G2 r/w | DR4 r/w/c | JNG r/w | ODS r | RW2 r/w
4663
+ 3GP r/w | DSS r | JP2 r/w | ODT r | RWL r/w
4664
+ 7Z r | DV r | JPEG r/w | OFR r | RWZ r
4665
+ A r | DVB r/w | JSON r | OGG r | RM r
4666
+ AA r | DVR-MS r | JXL r | OGV r | SEQ r
4667
+ AAC r | DYLIB r | K25 r | ONP r | SKETCH r
4668
+ AAE r | EIP r | KDC r | OPUS r | SO r
4669
+ AAX r/w | EPS r/w | KEY r | ORF r/w | SR2 r/w
4670
+ ACR r | EPUB r | LA r | ORI r/w | SRF r
4671
+ AFM r | ERF r/w | LFP r | OTF r | SRW r/w
4672
+ AI r/w | EXE r | LIF r | PAC r | SVG r
4673
+ AIFF r | EXIF r/w/c | LNK r | PAGES r | SWF r
4674
+ APE r | EXR r | LRV r/w | PBM r/w | THM r/w
4675
+ ARQ r/w | EXV r/w/c | M2TS r | PCD r | TIFF r/w
4676
+ ARW r/w | F4A/V r/w | M4A/V r/w | PCX r | TORRENT r
4677
+ ASF r | FFF r/w | MACOS r | PDB r | TTC r
4678
+ AVI r | FITS r | MAX r | PDF r/w | TTF r
4679
+ AVIF r/w | FLA r | MEF r/w | PEF r/w | TXT r
4680
+ AZW r | FLAC r | MIE r/w/c | PFA r | VCF r
4681
+ BMP r | FLIF r/w | MIFF r | PFB r | VNT r
4682
+ BPG r | FLV r | MKA r | PFM r | VRD r/w/c
4683
+ BTF r | FPF r | MKS r | PGF r | VSD r
4684
+ C2PA r | FPX r | MKV r | PGM r/w | WAV r
4685
+ CHM r | GIF r/w | MNG r/w | PLIST r | WDP r/w
4686
+ COS r | GLV r/w | MOBI r | PICT r | WEBP r/w
4687
+ CR2 r/w | GPR r/w | MODD r | PMP r | WEBM r
4688
+ CR3 r/w | GZ r | MOI r | PNG r/w | WMA r
4689
+ CRM r/w | HDP r/w | MOS r/w | PPM r/w | WMV r
4690
+ CRW r/w | HDR r | MOV r/w | PPT r | WPG r
4691
+ CS1 r/w | HEIC r/w | MP3 r | PPTX r | WTV r
4692
+ CSV r | HEIF r/w | MP4 r/w | PS r/w | WV r
4693
+ CUR r | HTML r | MPC r | PSB r/w | X3F r/w
4694
+ CZI r | ICC r/w/c | MPG r | PSD r/w | XCF r
4695
+ DCM r | ICO r | MPO r/w | PSP r | XISF r
4696
+ DCP r/w | ICS r | MQV r/w | QTIF r/w | XLS r
4697
+ DCR r | IDML r | MRC r | R3D r | XLSX r
4698
+ DFONT r | IIQ r/w | MRW r/w | RA r | XMP r/w/c
4699
+ DIVX r | IND r/w | MXF r | RAF r/w | ZIP r
4700
+ DJVU r | INSP r/w | NEF r/w | RAM r |
4701
+ DLL r | INSV r | NKSC r/w | RAR r |
4702
+ DNG r/w | INX r | NRW r/w | RAW r/w |
4703
+ DOC r | ISO r | NUMBERS r | RIFF r |
4682
4704
 
4683
4705
  Meta Information
4684
4706
  ----------------------+----------------------+---------------------
@@ -4743,7 +4765,7 @@ OPTIONS
4743
4765
  -lang [LANG] Set current language
4744
4766
  -listItem INDEX Extract specific item from a list
4745
4767
  -n (--printConv) No print conversion
4746
- -p FMTFILE (-printFormat) Print output in specified format
4768
+ -p[-] STR (-printFormat) Print output in specified format
4747
4769
  -php Export tags as a PHP Array
4748
4770
  -s[NUM] (-short) Short output format (-s for tag names)
4749
4771
  -S (-veryShort) Very short output format
@@ -5566,23 +5588,24 @@ OPTIONS
5566
5588
  > exiftool -Orientation=6 -n a.jpg
5567
5589
  > exiftool -Orientation#=6 a.jpg
5568
5590
 
5569
- -p *FMTFILE* or *STR* (-printFormat)
5570
- Print output in the format specified by the given file or string.
5591
+ -p[-] *STR* or *FMTFILE* (-printFormat)
5592
+ Print output in the format specified by the given string or file.
5571
5593
  The argument is interpreted as a string unless a file of that name
5572
5594
  exists, in which case the string is loaded from the contents of the
5573
- file. Tag names in the format file or string begin with a "$"
5595
+ file. Tag names in the format string or file begin with a "$"
5574
5596
  symbol and may contain leading group names and/or a trailing "#"
5575
5597
  (to disable print conversion). Case is not significant. Braces "{}"
5576
5598
  may be used around the tag name to separate it from subsequent text
5577
5599
  (and must be used if subsequent text begins with an alphanumeric
5578
5600
  character, hyphen, underline, colon or number sign). Use $$ to
5579
- represent a "$" symbol, and $/ for a newline.
5580
-
5581
- Multiple -p options may be used, each contributing a line (or more)
5582
- of text to the output. Lines beginning with "#[HEAD]" and "#[TAIL]"
5583
- are output before the first processed file and after the last
5584
- processed file respectively. Lines beginning with "#[SECT]" and
5585
- "#[ENDS]" are output before and after each section of files. A
5601
+ represent a "$" symbol, and $/ for a newline. When the string
5602
+ argument is used (ie. *STR*), a newline is added to the end of the
5603
+ string unless -p- is specified.
5604
+
5605
+ Multiple -p options may be used. Lines beginning with "#[HEAD]" and
5606
+ "#[TAIL]" are output before the first processed file and after the
5607
+ last processed file respectively. Lines beginning with "#[SECT]"
5608
+ and "#[ENDS]" are output before and after each section of files. A
5586
5609
  section is defined as a group of consecutive files with the same
5587
5610
  section header (eg. files are grouped by directory if "#[SECT]"
5588
5611
  contains $directory). Lines beginning with "#[BODY]" and lines not
@@ -5604,16 +5627,22 @@ OPTIONS
5604
5627
 
5605
5628
  produces output like this:
5606
5629
 
5607
- -- Generated by ExifTool 12.72 --
5630
+ -- Generated by ExifTool 12.76 --
5608
5631
  File: a.jpg - 2003:10:31 15:44:19
5609
5632
  (f/5.6, 1/60s, ISO 100)
5610
5633
  File: b.jpg - 2006:05:23 11:57:38
5611
5634
  (f/8.0, 1/13s, ISO 100)
5612
5635
  -- end --
5613
5636
 
5614
- The values of List-type tags with multiple items and Shortcut tags
5615
- representing multiple tags are joined according the -sep option
5616
- setting when interpolated in the string.
5637
+ The values of List-type tags with multiple items, Shortcut tags
5638
+ representing multiple tags, and matching tags when the "All" group
5639
+ is specified are joined according the -sep option setting when
5640
+ interpolated in the string. (Note that when "All" is used as a
5641
+ group name, dupicate tags are included regardless of the Duplicates
5642
+ option setting.) When "All" is used as a tag name, a value of 1 is
5643
+ returned if any tag exists in the specified group, or 0 otherwise
5644
+ (unless the "All" group is also specified, in which case the values
5645
+ of all matching tags are joined).
5617
5646
 
5618
5647
  When -ee (-extractEmbedded) is combined with -p, embedded documents
5619
5648
  are effectively processed as separate input files.
@@ -6540,7 +6569,9 @@ OPTIONS
6540
6569
  with "^=". If *OPT* is not specified a list of available options is
6541
6570
  returned. The option name is not case senstive, but the option
6542
6571
  values are. See Image::ExifTool Options for option details. This
6543
- overrides API options set via the config file.
6572
+ overrides API options set via the config file. Note that the
6573
+ exiftool app sets some API options internally, and attempts to
6574
+ change these via the command line will have no effect.
6544
6575
 
6545
6576
  -common_args
6546
6577
  Specifies that all arguments following this option are common to
@@ -7348,7 +7379,7 @@ EXIT STATUS
7348
7379
  the commands if -execute was used).
7349
7380
 
7350
7381
  AUTHOR
7351
- Copyright 2003-2022, Phil Harvey
7382
+ Copyright 2003-2024, Phil Harvey
7352
7383
 
7353
7384
  This is free software; you can redistribute it and/or modify it under
7354
7385
  the same terms as Perl itself.