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 +4 -4
- data/bin/Changes +23 -1
- data/bin/MANIFEST +7 -1
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +48 -48
- data/bin/config_files/local_time.config +25 -2
- data/bin/exiftool +56 -54
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
- data/bin/lib/Image/ExifTool/DJI.pm +2 -0
- data/bin/lib/Image/ExifTool/Exif.pm +97 -2
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/GE.pm +2 -0
- data/bin/lib/Image/ExifTool/Garmin.pm +9678 -0
- data/bin/lib/Image/ExifTool/Geotag.pm +100 -12
- data/bin/lib/Image/ExifTool/Google.pm +2 -0
- data/bin/lib/Image/ExifTool/InfiRay.pm +2 -0
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -0
- data/bin/lib/Image/ExifTool/Protobuf.pm +2 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/RIFF.pm +1 -0
- data/bin/lib/Image/ExifTool/Reconyx.pm +2 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +7 -3
- data/bin/lib/Image/ExifTool/TagNames.pod +2791 -8
- data/bin/lib/Image/ExifTool/Validate.pm +10 -1
- data/bin/lib/Image/ExifTool/Writer.pl +12 -4
- data/bin/lib/Image/ExifTool.pm +26 -13
- data/bin/lib/Image/ExifTool.pod +107 -90
- data/bin/perl-Image-ExifTool.spec +47 -47
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 50cc03b3e9c07e520c44ff04c69c350fd2e33ac50b932e4dbd3b860d59abb628
|
|
4
|
+
data.tar.gz: aa9c8e4bb5576e1ed3fa4927ae8d0dfc01a236235872266f3cdb386886b79d6f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
data/bin/META.yml
CHANGED
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 |
|
|
18
|
-
3FR r | DSF r |
|
|
19
|
-
3G2 r/w | DSS r |
|
|
20
|
-
3GP r/w | DV r |
|
|
21
|
-
7Z r | DVB r/w |
|
|
22
|
-
A r | DVR-MS r |
|
|
23
|
-
AA r | DYLIB r |
|
|
24
|
-
AAC r | EIP r |
|
|
25
|
-
AAE r | EPS r/w |
|
|
26
|
-
AAX r/w | EPUB r |
|
|
27
|
-
ACR r | ERF r/w |
|
|
28
|
-
AFM r | EXE r |
|
|
29
|
-
AI r/w | EXIF r/w/c |
|
|
30
|
-
AIFF r | EXR r |
|
|
31
|
-
APE r | EXV r/w/c |
|
|
32
|
-
ARQ r/w | F4A/V r/w |
|
|
33
|
-
ARW r/w | FFF r/w |
|
|
34
|
-
ASF r |
|
|
35
|
-
AVI r |
|
|
36
|
-
AVIF r/w |
|
|
37
|
-
AZW r |
|
|
38
|
-
BMP r |
|
|
39
|
-
BPG r |
|
|
40
|
-
BTF r |
|
|
41
|
-
C2PA r |
|
|
42
|
-
CHM r |
|
|
43
|
-
COS r |
|
|
44
|
-
CR2 r/w |
|
|
45
|
-
CR3 r/w |
|
|
46
|
-
CRM r/w |
|
|
47
|
-
CRW r/w |
|
|
48
|
-
CS1 r/w |
|
|
49
|
-
CSV r |
|
|
50
|
-
CUR r |
|
|
51
|
-
CZI r |
|
|
52
|
-
DCM r |
|
|
53
|
-
DCP r/w |
|
|
54
|
-
DCR r |
|
|
55
|
-
DFONT r |
|
|
56
|
-
DIVX r |
|
|
57
|
-
DJVU r |
|
|
58
|
-
DLL r |
|
|
59
|
-
DNG r/w |
|
|
60
|
-
DOC r |
|
|
61
|
-
DOCX r |
|
|
62
|
-
DPX 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.
|
|
115
|
-
cd Image-ExifTool-13.
|
|
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
|
-
#
|
|
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 $
|
|
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.
|
|
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
|
-
|
|
4220
|
-
$title =~
|
|
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 |
|
|
5133
|
-
3FR r | DSF r |
|
|
5134
|
-
3G2 r/w | DSS r |
|
|
5135
|
-
3GP r/w | DV r |
|
|
5136
|
-
7Z r | DVB r/w |
|
|
5137
|
-
A r | DVR-MS r |
|
|
5138
|
-
AA r | DYLIB r |
|
|
5139
|
-
AAC r | EIP r |
|
|
5140
|
-
AAE r | EPS r/w |
|
|
5141
|
-
AAX r/w | EPUB r |
|
|
5142
|
-
ACR r | ERF r/w |
|
|
5143
|
-
AFM r | EXE r |
|
|
5144
|
-
AI r/w | EXIF r/w/c |
|
|
5145
|
-
AIFF r | EXR r |
|
|
5146
|
-
APE r | EXV r/w/c |
|
|
5147
|
-
ARQ r/w | F4A/V r/w |
|
|
5148
|
-
ARW r/w | FFF r/w |
|
|
5149
|
-
ASF r |
|
|
5150
|
-
AVI r |
|
|
5151
|
-
AVIF r/w |
|
|
5152
|
-
AZW r |
|
|
5153
|
-
BMP r |
|
|
5154
|
-
BPG r |
|
|
5155
|
-
BTF r |
|
|
5156
|
-
C2PA r |
|
|
5157
|
-
CHM r |
|
|
5158
|
-
COS r |
|
|
5159
|
-
CR2 r/w |
|
|
5160
|
-
CR3 r/w |
|
|
5161
|
-
CRM r/w |
|
|
5162
|
-
CRW r/w |
|
|
5163
|
-
CS1 r/w |
|
|
5164
|
-
CSV r |
|
|
5165
|
-
CUR r |
|
|
5166
|
-
CZI r |
|
|
5167
|
-
DCM r |
|
|
5168
|
-
DCP r/w |
|
|
5169
|
-
DCR r |
|
|
5170
|
-
DFONT r |
|
|
5171
|
-
DIVX r |
|
|
5172
|
-
DJVU r |
|
|
5173
|
-
DLL r |
|
|
5174
|
-
DNG r/w |
|
|
5175
|
-
DOC r |
|
|
5176
|
-
DOCX r |
|
|
5177
|
-
DPX 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.
|
|
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>[
|
|
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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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-
|
|
280
|
-
for the official EXIF 3.
|
|
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
|
|
@@ -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.
|
|
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',
|