exiftool_vendored 13.55.0 → 13.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35f445a987bad9af06713ee281ac9326af82356ee74c56cfe4a80fbac4269530
4
- data.tar.gz: 646a4cc76746896c14f93fb07a82d246b407463ef072e3bf6b8fb876e6d1da44
3
+ metadata.gz: 50cc03b3e9c07e520c44ff04c69c350fd2e33ac50b932e4dbd3b860d59abb628
4
+ data.tar.gz: aa9c8e4bb5576e1ed3fa4927ae8d0dfc01a236235872266f3cdb386886b79d6f
5
5
  SHA512:
6
- metadata.gz: 0b51679828aab04533ff1cd3e89affd5f46342b61595969f547303f1122a22d801a13c5f3da419f6f759d40b6fda82dd15aa6ca22167359ebb1af18627518f23
7
- data.tar.gz: 42923e341ce91d31f9b0306e70c75847c3a263f330f4681ee38cfc78bd7db2a4b4cfa786c2bf99fe5a172946dce8dff157413cb1c30dff839ff53f6968fea96e
6
+ metadata.gz: a0552e09e9e31593370dec3ae1c2f64357e359358e1b3654bf29b8ffd06fea5187234451cc5ab1f86cafec96f251c4ba9d42487f1830153e0904b4c2905b196a
7
+ data.tar.gz: 7683e70b275692f0d9a4a01b02fe38fa65e971709b0a0769575c8f66c9c088b70c6f0ca942c020be528eb37e3145e4b1f6f5a74d0741ca198fd4203eccbb966f
data/bin/Changes CHANGED
@@ -7,6 +7,28 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 13.55. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Apr. 17, 2026 - Version 13.57
11
+
12
+ - Added print conversions for Garmin FIT enum tags
13
+ - Decode a number of undocumented Garmin FIT tags
14
+ - Reverted XML patch of 13.56 which broke structured JSON output
15
+
16
+ Apr. 15, 2026 - Version 13.56 - "Exif 3.1"
17
+
18
+ - Added new tags of the Exif 3.1 specification
19
+ - Added ability to geotag directly from any supported file(s) containing GPS
20
+ - Added read support for Garmin FIT files, and the ability to use them with
21
+ the -geotag option
22
+ - Added a new Panasonic AFAreaMode (thanks Andrew)
23
+ - Decode maker notes from newer FLIR cameras (github #408)
24
+ - Improved config_files/local_time.config to add LocalTag UserParam feature
25
+ - Updated Compression value re-purposed by GoPro (github #411)
26
+ - Allow a few more different characters in the Windows -progress title string
27
+ - Avoid trying to return structured information from XML files
28
+ - Patched bug when reading QuickTime MTDT metadata (thanks Thurein Oo)
29
+ - API Changes:
30
+ - Enhanced GetValue so input tag name is no longer case sensitive
31
+
10
32
  Apr. 7, 2026 - Version 13.55 (production release)
11
33
 
12
34
  - Added a few new Windows LNK GUID values
@@ -1381,7 +1403,7 @@ June 28, 2023 - Version 12.64
1381
1403
  - Added NoDups option to eliminate duplicate items from queued values when
1382
1404
  writing List-type tags
1383
1405
 
1384
- June 8, 2023 - Version 12.63
1406
+ June 8, 2023 - Version 12.63 - "Exif 3.0"
1385
1407
 
1386
1408
  - Added ability to read/write/create Brotli-compressed metadata in JXL images
1387
1409
  (requires IO::Compress::Brotli)
data/bin/MANIFEST CHANGED
@@ -87,6 +87,7 @@ html/TagNames/GIF.html
87
87
  html/TagNames/GIMP.html
88
88
  html/TagNames/GM.html
89
89
  html/TagNames/GPS.html
90
+ html/TagNames/Garmin.html
90
91
  html/TagNames/GeoTiff.html
91
92
  html/TagNames/GoPro.html
92
93
  html/TagNames/Google.html
@@ -314,14 +315,15 @@ lib/Image/ExifTool/FujiFilm.pm
314
315
  lib/Image/ExifTool/GE.pm
315
316
  lib/Image/ExifTool/GIF.pm
316
317
  lib/Image/ExifTool/GIMP.pm
317
- lib/Image/ExifTool/Google.pm
318
318
  lib/Image/ExifTool/GM.pm
319
319
  lib/Image/ExifTool/GPS.pm
320
+ lib/Image/ExifTool/Garmin.pm
320
321
  lib/Image/ExifTool/GeoTiff.pm
321
322
  lib/Image/ExifTool/Geolocation.dat
322
323
  lib/Image/ExifTool/Geolocation.pm
323
324
  lib/Image/ExifTool/Geotag.pm
324
325
  lib/Image/ExifTool/GoPro.pm
326
+ lib/Image/ExifTool/Google.pm
325
327
  lib/Image/ExifTool/H264.pm
326
328
  lib/Image/ExifTool/HP.pm
327
329
  lib/Image/ExifTool/HTML.pm
@@ -629,6 +631,8 @@ t/GIMP_2.out
629
631
  t/GPS.t
630
632
  t/GPS_2.out
631
633
  t/GPS_3.out
634
+ t/Garmin.t
635
+ t/Garmin_2.out
632
636
  t/GeoTiff.t
633
637
  t/GeoTiff_2.out
634
638
  t/GeoTiff_3.out
@@ -645,6 +649,7 @@ t/Geotag.t
645
649
  t/Geotag_10.out
646
650
  t/Geotag_11.out
647
651
  t/Geotag_12.out
652
+ t/Geotag_13.out
648
653
  t/Geotag_2.out
649
654
  t/Geotag_3.out
650
655
  t/Geotag_5.out
@@ -1097,6 +1102,7 @@ t/images/GE.jpg
1097
1102
  t/images/GIF.gif
1098
1103
  t/images/GIMP.xcf
1099
1104
  t/images/GPS.jpg
1105
+ t/images/Garmin.fit
1100
1106
  t/images/GeoTiff.tif
1101
1107
  t/images/Geotag.gpx
1102
1108
  t/images/Geotag.igc
data/bin/META.json CHANGED
@@ -50,6 +50,6 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.55",
53
+ "version" : "13.57",
54
54
  "x_serialization_backend" : "JSON::PP version 4.06"
55
55
  }
data/bin/META.yml CHANGED
@@ -31,5 +31,5 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.55'
34
+ version: '13.57'
35
35
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -14,52 +14,52 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DR4 r/w/c | JP2 r/w | ODS r | RW2 r/w
18
- 3FR r | DSF r | JPEG r/w | ODT r | RWL r/w
19
- 3G2 r/w | DSS r | JSON r | OFR r | RWZ r
20
- 3GP r/w | DV r | JXL r/w | OGG r | RM r
21
- 7Z r | DVB r/w | K25 r | OGV r | SEQ r
22
- A r | DVR-MS r | KDC r | ONP r | SKETCH r
23
- AA r | DYLIB r | KEY r | OPUS r | SO r
24
- AAC r | EIP r | KVAR r | ORF r/w | SR2 r/w
25
- AAE r | EPS r/w | LA r | ORI r/w | SRF r
26
- AAX r/w | EPUB r | LFP r | OTF r | SRW r/w
27
- ACR r | ERF r/w | LIF r | PAC r | SVG r
28
- AFM r | EXE r | LNK r | PAGES r | SWF r
29
- AI r/w | EXIF r/w/c | LRV r/w | PBM r/w | THM r/w
30
- AIFF r | EXR r | M2TS r | PCAP r | TIFF r/w
31
- APE r | EXV r/w/c | M4A/V r/w | PCAPNG r | TNEF r
32
- ARQ r/w | F4A/V r/w | MACOS r | PCD r | TORRENT r
33
- ARW r/w | FFF r/w | MAX r | PCX r | TTC r
34
- ASF r | FITS r | MEF r/w | PDB r | TTF r
35
- AVI r | FLA r | MIE r/w/c | PDF r/w | TXT r
36
- AVIF r/w | FLAC r | MIFF r | PEF r/w | URL r
37
- AZW r | FLIF r/w | MKA r | PFA r | VCF r
38
- BMP r | FLV r | MKS r | PFB r | VNT r
39
- BPG r | FPF r | MKV r | PFM r | VRD r/w/c
40
- BTF r | FPX r | MNG r/w | PGF r | VSD r
41
- C2PA r | GIF r/w | MOBI r | PGM r/w | VSDX r
42
- CHM r | GLV r/w | MODD r | PLIST r | WAV r
43
- COS r | GPR r/w | MOI r | PICT r | WDP r/w
44
- CR2 r/w | GZ r | MOS r/w | PMP r | WEBP r/w
45
- CR3 r/w | HDP r/w | MOV r/w | PNG r/w | WEBM r
46
- CRM r/w | HDR r | MP3 r | PPM r/w | WMA r
47
- CRW r/w | HEIC r/w | MP4 r/w | PPT r | WMV r
48
- CS1 r/w | HEIF r/w | MPC r | PPTX r | WOFF r
49
- CSV r | HTML r | MPG r | PS r/w | WOFF2 r
50
- CUR r | ICC r/w/c | MPO r/w | PSB r/w | WPG r
51
- CZI r | ICO r | MQV r/w | PSD r/w | WTV r
52
- DCM r | ICS r | MRC r | PSP r | WV r
53
- DCP r/w | IDML r | MRW r/w | QTIF r/w | X3F r/w
54
- DCR r | IIQ r/w | MXF r | R3D r | XCF r
55
- DFONT r | IND r/w | NEF r/w | RA r | XISF r
56
- DIVX r | INSP r/w | NKA r | RAF r/w | XLS r
57
- DJVU r | INSV r | NKSC r/w | RAM r | XLSX r
58
- DLL r | INX r | NRW r/w | RAR r | XMP r/w/c
59
- DNG r/w | ISO r | NUMBERS r | RAW r/w | ZIP r
60
- DOC r | ITC r | NXD r | RIFF r |
61
- DOCX r | J2C r | O r | RSRC r |
62
- DPX r | JNG r/w | ODP r | RTF r |
17
+ 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RTF r
18
+ 3FR r | DSF r | JP2 r/w | ODS r | RW2 r/w
19
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RWL r/w
20
+ 3GP r/w | DV r | JSON r | OFR r | RWZ r
21
+ 7Z r | DVB r/w | JXL r/w | OGG r | RM r
22
+ A r | DVR-MS r | K25 r | OGV r | SEQ r
23
+ AA r | DYLIB r | KDC r | ONP r | SKETCH r
24
+ AAC r | EIP r | KEY r | OPUS r | SO r
25
+ AAE r | EPS r/w | KVAR r | ORF r/w | SR2 r/w
26
+ AAX r/w | EPUB r | LA r | ORI r/w | SRF r
27
+ ACR r | ERF r/w | LFP r | OTF r | SRW r/w
28
+ AFM r | EXE r | LIF r | PAC r | SVG r
29
+ AI r/w | EXIF r/w/c | LNK r | PAGES r | SWF r
30
+ AIFF r | EXR r | LRV r/w | PBM r/w | THM r/w
31
+ APE r | EXV r/w/c | M2TS r | PCAP r | TIFF r/w
32
+ ARQ r/w | F4A/V r/w | M4A/V r/w | PCAPNG r | TNEF r
33
+ ARW r/w | FFF r/w | MACOS r | PCD r | TORRENT r
34
+ ASF r | FIT r | MAX r | PCX r | TTC r
35
+ AVI r | FITS r | MEF r/w | PDB r | TTF r
36
+ AVIF r/w | FLA r | MIE r/w/c | PDF r/w | TXT r
37
+ AZW r | FLAC r | MIFF r | PEF r/w | URL r
38
+ BMP r | FLIF r/w | MKA r | PFA r | VCF r
39
+ BPG r | FLV r | MKS r | PFB r | VNT r
40
+ BTF r | FPF r | MKV r | PFM r | VRD r/w/c
41
+ C2PA r | FPX r | MNG r/w | PGF r | VSD r
42
+ CHM r | GIF r/w | MOBI r | PGM r/w | VSDX r
43
+ COS r | GLV r/w | MODD r | PLIST r | WAV r
44
+ CR2 r/w | GPR r/w | MOI r | PICT r | WDP r/w
45
+ CR3 r/w | GZ r | MOS r/w | PMP r | WEBP r/w
46
+ CRM r/w | HDP r/w | MOV r/w | PNG r/w | WEBM r
47
+ CRW r/w | HDR r | MP3 r | PPM r/w | WMA r
48
+ CS1 r/w | HEIC r/w | MP4 r/w | PPT r | WMV r
49
+ CSV r | HEIF r/w | MPC r | PPTX r | WOFF r
50
+ CUR r | HTML r | MPG r | PS r/w | WOFF2 r
51
+ CZI r | ICC r/w/c | MPO r/w | PSB r/w | WPG r
52
+ DCM r | ICO r | MQV r/w | PSD r/w | WTV r
53
+ DCP r/w | ICS r | MRC r | PSP r | WV r
54
+ DCR r | IDML r | MRW r/w | QTIF r/w | X3F r/w
55
+ DFONT r | IIQ r/w | MXF r | R3D r | XCF r
56
+ DIVX r | IND r/w | NEF r/w | RA r | XISF r
57
+ DJVU r | INSP r/w | NKA r | RAF r/w | XLS r
58
+ DLL r | INSV r | NKSC r/w | RAM r | XLSX r
59
+ DNG r/w | INX r | NRW r/w | RAR r | XMP r/w/c
60
+ DOC r | ISO r | NUMBERS r | RAW r/w | ZIP r
61
+ DOCX r | ITC r | NXD r | RIFF r |
62
+ DPX r | J2C r | O r | RSRC r |
63
63
 
64
64
  Meta Information
65
65
  ----------------------+----------------------+---------------------
@@ -111,8 +111,8 @@ your home directory, then you would type the following commands in a
111
111
  terminal window to extract and run ExifTool:
112
112
 
113
113
  cd ~/Desktop
114
- gzip -dc Image-ExifTool-13.55.tar.gz | tar -xf -
115
- cd Image-ExifTool-13.55
114
+ gzip -dc Image-ExifTool-13.57.tar.gz | tar -xf -
115
+ cd Image-ExifTool-13.57
116
116
  ./exiftool t/images/ExifTool.jpg
117
117
 
118
118
  Note: These commands extract meta information from one of the test images.
@@ -13,10 +13,18 @@
13
13
  #
14
14
  # Usage: exiftool -config local_time.config -localtime FILE
15
15
  #
16
- # Requires: ExifTool version 12.78 or later
16
+ # Options: The user parameter LocalTag may be set to the name of the
17
+ # date/time tag to use, case insensitive with optional group
18
+ # name(s). For example add this to the command to use
19
+ # SubSecDateTimeOriginal as the basis for LocalTime:
20
+ #
21
+ # -userparam localtag=subsecdatetimeoriginal
22
+ #
23
+ # Requires: ExifTool version 13.56 or later
17
24
  #
18
25
  # Revisions: 2025-10-19 - P. Harvey Created
19
26
  # 2026-04-02 - PH Preserve decimal seconds up to 6 digits
27
+ # 2026-04-08 - PH Added LocalTag feature
20
28
  #------------------------------------------------------------------------------
21
29
 
22
30
  %Image::ExifTool::UserDefined = (
@@ -38,7 +46,22 @@
38
46
  require Image::ExifTool::Geolocation;
39
47
  my ($loc) = Image::ExifTool::Geolocation::Geolocate("$val[0],$val[1]");
40
48
  return undef unless $loc;
41
- my $time = $val[2] || $val[3] || $val[4] || $val[5] || $val[6];
49
+ my $pref = $self->Options(UserParam => 'LocalTag');
50
+ my $time;
51
+ if ($pref) {
52
+ my $num = { gpsdatetime => 2,
53
+ subsecdatetimeoriginal => 3,
54
+ subseccreatedate => 4,
55
+ datetimeoriginal => 5,
56
+ createdate => 6 }->{lc $pref};
57
+ if ($num) {
58
+ $time = $val[$num];
59
+ } else {
60
+ $time = $self->GetValue($pref);
61
+ }
62
+ } else {
63
+ $time = $val[2] || $val[3] || $val[4] || $val[5] || $val[6];
64
+ }
42
65
  return undef unless $time;
43
66
  my $secs = Image::ExifTool::GetUnixTime($time, 1);
44
67
  return undef unless $secs;
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '13.55';
14
+ my $version = '13.57';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -4216,8 +4216,8 @@ sub SetWindowTitle($)
4216
4216
  if ($curTitle ne $title) {
4217
4217
  $curTitle = $title;
4218
4218
  if ($^O eq 'MSWin32') {
4219
- $title =~ tr(-_a-zA-Z0-9%.+/:=?*@~ )()dc; # allow only safe characters
4220
- $title =~ s/([\/?:%])/^$1/g; # escape remaing questionable chars
4219
+ # allow only safe characters
4220
+ $title =~ tr(-_a-zA-Z0-9 \(\)[]{}%.+/:;,=?*!@#$~')()dc;
4221
4221
  eval { system qq{title $title} };
4222
4222
  } else {
4223
4223
  # (this only works for XTerm terminals, and STDERR must go to the console)
@@ -5129,52 +5129,52 @@ supported by ExifTool (r = read, w = write, c = create):
5129
5129
 
5130
5130
  File Types
5131
5131
  ------------+-------------+-------------+-------------+------------
5132
- 360 r/w | DR4 r/w/c | JP2 r/w | ODS r | RW2 r/w
5133
- 3FR r | DSF r | JPEG r/w | ODT r | RWL r/w
5134
- 3G2 r/w | DSS r | JSON r | OFR r | RWZ r
5135
- 3GP r/w | DV r | JXL r/w | OGG r | RM r
5136
- 7Z r | DVB r/w | K25 r | OGV r | SEQ r
5137
- A r | DVR-MS r | KDC r | ONP r | SKETCH r
5138
- AA r | DYLIB r | KEY r | OPUS r | SO r
5139
- AAC r | EIP r | KVAR r | ORF r/w | SR2 r/w
5140
- AAE r | EPS r/w | LA r | ORI r/w | SRF r
5141
- AAX r/w | EPUB r | LFP r | OTF r | SRW r/w
5142
- ACR r | ERF r/w | LIF r | PAC r | SVG r
5143
- AFM r | EXE r | LNK r | PAGES r | SWF r
5144
- AI r/w | EXIF r/w/c | LRV r/w | PBM r/w | THM r/w
5145
- AIFF r | EXR r | M2TS r | PCAP r | TIFF r/w
5146
- APE r | EXV r/w/c | M4A/V r/w | PCAPNG r | TNEF r
5147
- ARQ r/w | F4A/V r/w | MACOS r | PCD r | TORRENT r
5148
- ARW r/w | FFF r/w | MAX r | PCX r | TTC r
5149
- ASF r | FITS r | MEF r/w | PDB r | TTF r
5150
- AVI r | FLA r | MIE r/w/c | PDF r/w | TXT r
5151
- AVIF r/w | FLAC r | MIFF r | PEF r/w | URL r
5152
- AZW r | FLIF r/w | MKA r | PFA r | VCF r
5153
- BMP r | FLV r | MKS r | PFB r | VNT r
5154
- BPG r | FPF r | MKV r | PFM r | VRD r/w/c
5155
- BTF r | FPX r | MNG r/w | PGF r | VSD r
5156
- C2PA r | GIF r/w | MOBI r | PGM r/w | VSDX r
5157
- CHM r | GLV r/w | MODD r | PLIST r | WAV r
5158
- COS r | GPR r/w | MOI r | PICT r | WDP r/w
5159
- CR2 r/w | GZ r | MOS r/w | PMP r | WEBP r/w
5160
- CR3 r/w | HDP r/w | MOV r/w | PNG r/w | WEBM r
5161
- CRM r/w | HDR r | MP3 r | PPM r/w | WMA r
5162
- CRW r/w | HEIC r/w | MP4 r/w | PPT r | WMV r
5163
- CS1 r/w | HEIF r/w | MPC r | PPTX r | WOFF r
5164
- CSV r | HTML r | MPG r | PS r/w | WOFF2 r
5165
- CUR r | ICC r/w/c | MPO r/w | PSB r/w | WPG r
5166
- CZI r | ICO r | MQV r/w | PSD r/w | WTV r
5167
- DCM r | ICS r | MRC r | PSP r | WV r
5168
- DCP r/w | IDML r | MRW r/w | QTIF r/w | X3F r/w
5169
- DCR r | IIQ r/w | MXF r | R3D r | XCF r
5170
- DFONT r | IND r/w | NEF r/w | RA r | XISF r
5171
- DIVX r | INSP r/w | NKA r | RAF r/w | XLS r
5172
- DJVU r | INSV r | NKSC r/w | RAM r | XLSX r
5173
- DLL r | INX r | NRW r/w | RAR r | XMP r/w/c
5174
- DNG r/w | ISO r | NUMBERS r | RAW r/w | ZIP r
5175
- DOC r | ITC r | NXD r | RIFF r |
5176
- DOCX r | J2C r | O r | RSRC r |
5177
- DPX r | JNG r/w | ODP r | RTF r |
5132
+ 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RTF r
5133
+ 3FR r | DSF r | JP2 r/w | ODS r | RW2 r/w
5134
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RWL r/w
5135
+ 3GP r/w | DV r | JSON r | OFR r | RWZ r
5136
+ 7Z r | DVB r/w | JXL r/w | OGG r | RM r
5137
+ A r | DVR-MS r | K25 r | OGV r | SEQ r
5138
+ AA r | DYLIB r | KDC r | ONP r | SKETCH r
5139
+ AAC r | EIP r | KEY r | OPUS r | SO r
5140
+ AAE r | EPS r/w | KVAR r | ORF r/w | SR2 r/w
5141
+ AAX r/w | EPUB r | LA r | ORI r/w | SRF r
5142
+ ACR r | ERF r/w | LFP r | OTF r | SRW r/w
5143
+ AFM r | EXE r | LIF r | PAC r | SVG r
5144
+ AI r/w | EXIF r/w/c | LNK r | PAGES r | SWF r
5145
+ AIFF r | EXR r | LRV r/w | PBM r/w | THM r/w
5146
+ APE r | EXV r/w/c | M2TS r | PCAP r | TIFF r/w
5147
+ ARQ r/w | F4A/V r/w | M4A/V r/w | PCAPNG r | TNEF r
5148
+ ARW r/w | FFF r/w | MACOS r | PCD r | TORRENT r
5149
+ ASF r | FIT r | MAX r | PCX r | TTC r
5150
+ AVI r | FITS r | MEF r/w | PDB r | TTF r
5151
+ AVIF r/w | FLA r | MIE r/w/c | PDF r/w | TXT r
5152
+ AZW r | FLAC r | MIFF r | PEF r/w | URL r
5153
+ BMP r | FLIF r/w | MKA r | PFA r | VCF r
5154
+ BPG r | FLV r | MKS r | PFB r | VNT r
5155
+ BTF r | FPF r | MKV r | PFM r | VRD r/w/c
5156
+ C2PA r | FPX r | MNG r/w | PGF r | VSD r
5157
+ CHM r | GIF r/w | MOBI r | PGM r/w | VSDX r
5158
+ COS r | GLV r/w | MODD r | PLIST r | WAV r
5159
+ CR2 r/w | GPR r/w | MOI r | PICT r | WDP r/w
5160
+ CR3 r/w | GZ r | MOS r/w | PMP r | WEBP r/w
5161
+ CRM r/w | HDP r/w | MOV r/w | PNG r/w | WEBM r
5162
+ CRW r/w | HDR r | MP3 r | PPM r/w | WMA r
5163
+ CS1 r/w | HEIC r/w | MP4 r/w | PPT r | WMV r
5164
+ CSV r | HEIF r/w | MPC r | PPTX r | WOFF r
5165
+ CUR r | HTML r | MPG r | PS r/w | WOFF2 r
5166
+ CZI r | ICC r/w/c | MPO r/w | PSB r/w | WPG r
5167
+ DCM r | ICO r | MQV r/w | PSD r/w | WTV r
5168
+ DCP r/w | ICS r | MRC r | PSP r | WV r
5169
+ DCR r | IDML r | MRW r/w | QTIF r/w | X3F r/w
5170
+ DFONT r | IIQ r/w | MXF r | R3D r | XCF r
5171
+ DIVX r | IND r/w | NEF r/w | RA r | XISF r
5172
+ DJVU r | INSP r/w | NKA r | RAF r/w | XLS r
5173
+ DLL r | INSV r | NKSC r/w | RAM r | XLSX r
5174
+ DNG r/w | INX r | NRW r/w | RAR r | XMP r/w/c
5175
+ DOC r | ISO r | NUMBERS r | RAW r/w | ZIP r
5176
+ DOCX r | ITC r | NXD r | RIFF r |
5177
+ DPX r | J2C r | O r | RSRC r |
5178
5178
 
5179
5179
  Meta Information
5180
5180
  ----------------------+----------------------+---------------------
@@ -6159,7 +6159,7 @@ with this command:
6159
6159
 
6160
6160
  produces output like this:
6161
6161
 
6162
- -- Generated by ExifTool 13.55 --
6162
+ -- Generated by ExifTool 13.57 --
6163
6163
  File: a.jpg - 2003:10:31 15:44:19
6164
6164
  (f/5.6, 1/60s, ISO 100)
6165
6165
  File: b.jpg - 2006:05:23 11:57:38
@@ -6445,7 +6445,7 @@ natural numbers starting from 1, instead of 0 (see example F above).
6445
6445
  This same I<FMT> syntax is used with the B<-o> and B<-tagsFromFile> options,
6446
6446
  although %c and %C are only valid for output file names.
6447
6447
 
6448
- =item B<-W>[+|!] I<FMT> (B<-tagOut>)
6448
+ =item B<-W>[+][!] I<FMT> (B<-tagOut>)
6449
6449
 
6450
6450
  This enhanced version of the B<-w> option allows a separate output file to
6451
6451
  be created for each extracted tag. See the B<-w> option documentation above
@@ -7363,16 +7363,18 @@ necessary when using this technique.)
7363
7363
  Set user parameter. I<PARAM> is an arbitrary user parameter name. This is
7364
7364
  an interface to the API UserParam option (see the
7365
7365
  L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
7366
- provides a method to access user-defined parameters in arguments to the
7366
+ provides a method to access user-defined parameters in arguments of the
7367
7367
  B<-if>, B<-p> and B<-fileNUM> options as if they were any other tag.
7368
7368
  Appending a hash tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also
7369
7369
  causes the parameter to be extracted as a normal tag in the UserParam group.
7370
- Similar to the B<-api> option, the parameter value is set to 1 if I<=VAL>
7370
+ Similar to the B<-api> option, the parameter value is set to 1 if I<=VAL>
7371
7371
  is omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
7372
- I<VAL> is omitted with C<^=>.
7372
+ I<VAL> is omitted with C<^=>. Examples:
7373
7373
 
7374
7374
  exiftool -p '$test from $filename' -userparam test=Hello FILE
7375
7375
 
7376
+ exiftool "-description<mytag" -userparam mytag#="test" FILE
7377
+
7376
7378
  =back
7377
7379
 
7378
7380
  =head3 Advanced formatting feature
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.67';
38
+ $VERSION = '3.68';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -273,11 +273,11 @@ tags remain.
273
273
 
274
274
  The table below lists all EXIF tags. Also listed are TIFF, DNG, HDP and
275
275
  other tags which are not part of the EXIF specification, but may co-exist
276
- with EXIF tags in some images. Tags which are part of the EXIF 3.0
276
+ with EXIF tags in some images. Tags which are part of the EXIF 3.1
277
277
  specification have an underlined B<Tag Name> in the HTML version of this
278
278
  documentation. See
279
- L<https://www.cipa.jp/std/documents/download_e.html?CIPA_DC-008-2024-E>
280
- for the official EXIF 3.0 specification.
279
+ L<https://www.cipa.jp/std/documents/download_e.html?CIPA_DC-008-2026-E>
280
+ for the official EXIF 3.1 specification.
281
281
  },
282
282
  GPS => q{
283
283
  These GPS tags are part of the EXIF standard, and are stored in a separate
@@ -965,6 +965,8 @@ sub ProcessDJIInfo($$$)
965
965
  return 1;
966
966
  }
967
967
 
968
+ 1; # end
969
+
968
970
  __END__
969
971
 
970
972
  =head1 NAME
@@ -57,7 +57,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
57
57
  use Image::ExifTool qw(:DataAccess :Utils);
58
58
  use Image::ExifTool::MakerNotes;
59
59
 
60
- $VERSION = '4.63';
60
+ $VERSION = '4.64';
61
61
 
62
62
  sub ProcessExif($$$);
63
63
  sub WriteExif($$$);
@@ -158,6 +158,16 @@ $formatName[129] = 'utf8'; # (Exif 3.0)
158
158
  22 => 'D75',
159
159
  23 => 'D50',
160
160
  24 => 'ISO Studio Tungsten',
161
+ 25 => 'Daylight', # Exif3.1
162
+ 26 => 'Day White', # Exif3.1
163
+ 27 => 'Cool White', # Exif3.1
164
+ 28 => 'White', # Exif3.1
165
+ 29 => 'Warm White', # Exif3.1
166
+ 30 => 'Daylight LED', # Exif3.1 (D 5700-7100K)
167
+ 31 => 'Day White LED', # Exif3.1 (N 4600-5500K)
168
+ 32 => 'Cool White LED',# Exif3.1 (W 3800-4500K)
169
+ 33 => 'White LED', # Exif3.1 (WW 3250-3800K)
170
+ 34 => 'Warm White LED',# Exif3.1 (L 2600-3250K)
161
171
  255 => 'Other',
162
172
  );
163
173
 
@@ -209,7 +219,7 @@ $formatName[129] = 'utf8'; # (Exif 3.0)
209
219
  6 => 'JPEG (old-style)', #3
210
220
  7 => 'JPEG', #4
211
221
  8 => 'Adobe Deflate', #3
212
- 9 => 'JBIG B&W', #3
222
+ 9 => 'JBIG B&W or VC-5', #3 / github411
213
223
  10 => 'JBIG Color', #3
214
224
  99 => 'JPEG', #16
215
225
  262 => 'Kodak 262', #16
@@ -383,6 +393,20 @@ my %opcodeInfo = (
383
393
  PrintConvInv => undef, # (so the inverse conversion is not performed)
384
394
  );
385
395
 
396
+ # lookups for LearningOptOutIn tag
397
+ my %use = (
398
+ 0 => 'All / Individual Usage Not Specified',
399
+ 1 => 'Non-Generative AI/ML Training',
400
+ 2 => 'Generative AI/ML Training',
401
+ 3 => 'Data Mining',
402
+ 4 => 'Input to Foundation Model (Trained AI/ML Model)',
403
+ );
404
+ my %ind = (
405
+ 0 => 'Opt-out',
406
+ 1 => 'Opt-in',
407
+ 2 => 'Unspecified',
408
+ );
409
+
386
410
  # main EXIF tag table
387
411
  %Image::ExifTool::Exif::Main = (
388
412
  GROUPS => { 0 => 'EXIF', 1 => 'IFD0', 2 => 'Image'},
@@ -2481,6 +2505,36 @@ my %opcodeInfo = (
2481
2505
  # SHOULD ADD SPECIAL LOGIC TO ALLOW CONDITIONAL OVERWRITE OF
2482
2506
  # "UNKNOWN" VALUES FILLED WITH SPACES
2483
2507
  },
2508
+ 0x9287 => { #Exif3.1
2509
+ Name => 'LearningOptOutIn',
2510
+ Writable => 'undef',
2511
+ Format => 'int16u',
2512
+ Notes => 'multiple values: 0. "'.join('","',@use{0..4}).'
2513
+ ", 1. "'.join('","',@ind{0..2}).'"',
2514
+ Count => -1,
2515
+ PrintConv => sub {
2516
+ my @a = split ' ', shift;
2517
+ my ($i, @rtn);
2518
+ for ($i=1; $i<@a; ++$i) {
2519
+ push @rtn, (($i & 1) ? $use{$a[$i]} : $ind{$a[$i]}) || "Unknown($a[$i])";
2520
+ }
2521
+ return join('; ', @rtn);
2522
+ },
2523
+ PrintConvInv => sub {
2524
+ my @a = split /; ?/, shift;
2525
+ my ($i, @rtn);
2526
+ for ($i=0; $i<@a; ++$i) {
2527
+ my ($v, $multi) = Image::ExifTool::ReverseLookup($a[$i], ($i & 1) ? \%ind : \%use);
2528
+ if (not defined $v) {
2529
+ $Image::ExifTool::evalWarning = qq{Can't convert "$a[$i]" (} .
2530
+ ($multi ? 'multiple' : 'no') . " matches)";
2531
+ return undef;
2532
+ }
2533
+ push @rtn, $v;
2534
+ }
2535
+ return join(' ', int(@rtn / 2), @rtn);
2536
+ },
2537
+ },
2484
2538
  0x9290 => {
2485
2539
  Name => 'SubSecTime',
2486
2540
  Groups => { 2 => 'Time' },
@@ -2917,7 +2971,48 @@ my %opcodeInfo = (
2917
2971
  },
2918
2972
  },
2919
2973
  # 0xa40d - int16u: 0 (GE E1486 TW)
2974
+ 0xa40d => { #Exif3.1
2975
+ Name => 'DevelopmentType',
2976
+ Writable => 'int16u',
2977
+ ValueConv => '($val >> 8) . " " . ($val & 0xff)',
2978
+ ValueConvInv => 'my @a=split " ",$val; (($a[0] & 0xff) << 8) + ($a[1] & 0xff)',
2979
+ PrintConv => [{
2980
+ 1 => 'Accurate Reproduction',
2981
+ 2 => 'Small Differences',
2982
+ 4 => 'Extreme Differences',
2983
+ },{
2984
+ 1 => 'Factory Default Settings',
2985
+ 2 => 'Not Default Settings',
2986
+ 4 => 'Unknown Settings',
2987
+ }],
2988
+ },
2920
2989
  # 0xa40e - int16u: 1 (GE E1486 TW)
2990
+ 0xa40e => { #Exif3.1
2991
+ Name => 'DevelopmentTypeDescription',
2992
+ Writable => 'string',
2993
+ ValueConv => '$self->Decode($val, "UTF8")',
2994
+ ValueConvInv => '$self->Encode($val,"UTF8")',
2995
+ },
2996
+ 0xa40f => { #Exif3.1
2997
+ Name => 'DistortionCorrection',
2998
+ Writable => 'int16u',
2999
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
3000
+ },
3001
+ 0xa410 => { #Exif3.1
3002
+ Name => 'ChromaticAberrationCorrection',
3003
+ Writable => 'int16u',
3004
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
3005
+ },
3006
+ 0xa411 => { #Exif3.1
3007
+ Name => 'ShadingCorrection',
3008
+ Writable => 'int16u',
3009
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
3010
+ },
3011
+ 0xa412 => { #Exif3.1
3012
+ Name => 'NoiseReduction',
3013
+ Writable => 'int16u',
3014
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
3015
+ },
2921
3016
  0xa420 => { Name => 'ImageUniqueID', Writable => 'string' },
2922
3017
  0xa430 => { #24
2923
3018
  Name => 'OwnerName',
@@ -660,7 +660,7 @@ my %fpxFileType = (
660
660
  },
661
661
  },
662
662
  0x2500000E => {
663
- Name => 'BackLight',
663
+ Name => 'Backlight',
664
664
  PrintConv => {
665
665
  1 => 'Front Lit',
666
666
  2 => 'Back Lit 1',
@@ -51,6 +51,8 @@ sub ProcessGE2($$$);
51
51
  # 0x0600 - int32u: 0
52
52
  );
53
53
 
54
+ 1; # end
55
+
54
56
  __END__
55
57
 
56
58
  =head1 NAME