exiftool-vendored.pl 12.28.0 → 12.34.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.
- package/bin/Changes +108 -5
- package/bin/MANIFEST +7 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/arg_files/xmp2exif.args +2 -1
- package/bin/config_files/example.config +1 -1
- package/bin/exiftool +39 -25
- package/bin/fmt_files/gpx.fmt +1 -1
- package/bin/fmt_files/gpx_wpt.fmt +1 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +16 -3
- package/bin/lib/Image/ExifTool/CBOR.pm +331 -0
- package/bin/lib/Image/ExifTool/Canon.pm +35 -5
- package/bin/lib/Image/ExifTool/Charset.pm +2 -0
- package/bin/lib/Image/ExifTool/DPX.pm +13 -2
- package/bin/lib/Image/ExifTool/Exif.pm +98 -4
- package/bin/lib/Image/ExifTool/FujiFilm.pm +1 -0
- package/bin/lib/Image/ExifTool/Geotag.pm +13 -2
- package/bin/lib/Image/ExifTool/GoPro.pm +16 -1
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
- package/bin/lib/Image/ExifTool/ID3.pm +15 -3
- package/bin/lib/Image/ExifTool/JSON.pm +7 -3
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +60 -26
- package/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
- package/bin/lib/Image/ExifTool/M2TS.pm +81 -14
- package/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +12 -3
- package/bin/lib/Image/ExifTool/NikonSettings.pm +10 -2
- package/bin/lib/Image/ExifTool/Olympus.pm +8 -1
- package/bin/lib/Image/ExifTool/Other.pm +93 -0
- package/bin/lib/Image/ExifTool/PDF.pm +11 -12
- package/bin/lib/Image/ExifTool/PNG.pm +7 -6
- package/bin/lib/Image/ExifTool/Panasonic.pm +2 -2
- package/bin/lib/Image/ExifTool/Pentax.pm +2 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +67 -9
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +133 -119
- package/bin/lib/Image/ExifTool/README +9 -2
- package/bin/lib/Image/ExifTool/RIFF.pm +6 -1
- package/bin/lib/Image/ExifTool/Samsung.pm +47 -10
- package/bin/lib/Image/ExifTool/Sony.pm +80 -32
- package/bin/lib/Image/ExifTool/TagLookup.pm +139 -4
- package/bin/lib/Image/ExifTool/TagNames.pod +224 -30
- package/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
- package/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +17 -3
- package/bin/lib/Image/ExifTool/Writer.pl +43 -0
- package/bin/lib/Image/ExifTool/XMP.pm +21 -8
- package/bin/lib/Image/ExifTool/XMP2.pl +4 -1
- package/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- package/bin/lib/Image/ExifTool.pm +84 -31
- package/bin/lib/Image/ExifTool.pod +24 -15
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +6 -4
- package/package.json +3 -3
package/bin/Changes
CHANGED
|
@@ -4,9 +4,112 @@ 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.
|
|
7
|
+
Note: The most recent production release is Version 12.30. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
|
9
9
|
|
|
10
|
+
Oct. 27, 2021 - Version 12.34
|
|
11
|
+
|
|
12
|
+
- Added support for ICC.2:2019 (Profile version 5.0.0 - iccMAX) color profiles
|
|
13
|
+
- Added ability to detect/delete a Windows Zone.Identifier alternate data
|
|
14
|
+
stream (ADS) via the new ZoneIdentifier tag
|
|
15
|
+
- Added support for the Sony ILCE-7M4 (thanks Jos Roost)
|
|
16
|
+
- Added a new Sony lens (thanks LibRaw and Jos Roost)
|
|
17
|
+
- Added a new SonyModelID (thanks LibRaw)
|
|
18
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
|
19
|
+
- Improved handling of some SVG files
|
|
20
|
+
- Patched -overwrite_original_in_place option to open the output file in
|
|
21
|
+
update mode rather than write mode (to allow some write optimizations on
|
|
22
|
+
certain filesystems)
|
|
23
|
+
- Fixed case of tag ID for new XMP-iptcExt:EventID (thanks Michael Steidl)
|
|
24
|
+
- Fixed problem extracting ICC_Profile information from some PDF files
|
|
25
|
+
- API Changes:
|
|
26
|
+
- Added QuickTimePad option
|
|
27
|
+
|
|
28
|
+
Oct. 16, 2021 - Version 12.33
|
|
29
|
+
|
|
30
|
+
- Added support for DNG version 1.6.0.0
|
|
31
|
+
- Added two new Sony LensType values (thanks Jos Roost and LibRaw)
|
|
32
|
+
- Added some new elements to the XMP-crs:Look structure (thanks Herb)
|
|
33
|
+
- Added a few new IPTC XMP tags (thanks Michael Steidl)
|
|
34
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
|
35
|
+
- Decode Canon ShutterMode (thanks John Moyer)
|
|
36
|
+
- Extract LensModel from some Olympus MOV videos
|
|
37
|
+
- Generate MediaDataOffset/Size for MOV videos with zero-sized MDAT chunk
|
|
38
|
+
- Improvements to CBOR reader, including hex dump with -v3 option
|
|
39
|
+
- Recognize Final Cut Pro XML files
|
|
40
|
+
- Allow binary data of Protected tags to be extracted with the -X -j and -php
|
|
41
|
+
options with -b by setting the API RequestAll option to 3
|
|
42
|
+
- Changed name of "Canon EF 80-200mm f/4.5-5.6" lens with LensType 38 to add
|
|
43
|
+
"II" to the name (Exiv2 issue 1906)
|
|
44
|
+
- Fixed runtime warning when processing files with a .DIR extension
|
|
45
|
+
|
|
46
|
+
Sept. 30, 2021 - Version 12.32
|
|
47
|
+
|
|
48
|
+
- Added support for CBOR-format metadata in JUMBF (note that JUMBF support is
|
|
49
|
+
still experimental)
|
|
50
|
+
- Added a new Nikon LensID
|
|
51
|
+
- Added a new Pentax LensType
|
|
52
|
+
- Decode timed GPS for two more dashcam formats
|
|
53
|
+
- Support reference direction columns in -geotag CSV input
|
|
54
|
+
- Removed generation of GPSSpeedRef and GPSTrackRef tags in timed metadata for
|
|
55
|
+
most dashcam formats when speed is km/h and track is relative to true north
|
|
56
|
+
- Patched to allow writing of console output to named pipes
|
|
57
|
+
- Fixed formatting of InternalSerialNumber for some Panasonic cameras
|
|
58
|
+
- Fixed bug in arg_files/xmp2exif.args support file
|
|
59
|
+
|
|
60
|
+
Sept. 22, 2021 - Version 12.31
|
|
61
|
+
|
|
62
|
+
- Added a new SonyModelID and a couple of new Sony lenses (thanks Jos Roost)
|
|
63
|
+
- Added a new Canon LensType (thanks Chris Skopec)
|
|
64
|
+
- Added Composite GPSLatitude/Longitude tags for Sony videos to combine the
|
|
65
|
+
reference hemispheres as with the Composite tags for EXIF GPS
|
|
66
|
+
- Decode DPX AspectRatio
|
|
67
|
+
- Decode more GoPro MP4 tags
|
|
68
|
+
- Extract ICC_Profile from CS0 object in PDF files
|
|
69
|
+
- Extract encrypted GPS from Akaso V1 dashcam videos (can't yet decrypt)
|
|
70
|
+
- Improved handling of QuickTime iTunesInfo tags, and created new "iTunes"
|
|
71
|
+
family 1 group for these
|
|
72
|
+
- Patched so NoPDFList option also applies when writing
|
|
73
|
+
- Patched to allow user-defined PNG TextualData tags to be written only as iTXt
|
|
74
|
+
- Patched PDF reader to avoid concatenating values of multiple List-type tags
|
|
75
|
+
into a single tag
|
|
76
|
+
|
|
77
|
+
Aug. 12, 2021 - Version 12.30 (production release)
|
|
78
|
+
|
|
79
|
+
- Added read support for Portable FloatMap (PFM) images (this was a bit of a
|
|
80
|
+
pain because they have the same file extension as Printer Font Metrix files)
|
|
81
|
+
- Added a few new Nikon LensID values (thanks LibRaw)
|
|
82
|
+
- Added a new Canon LensType
|
|
83
|
+
- Added a new Olympus CameraType (thanks LibRaw)
|
|
84
|
+
- Added minor warning about unknown data between JPEG segments
|
|
85
|
+
- Added a couple of new NikonSettings tags (thanks Warren Hatch)
|
|
86
|
+
- Added a new Sony LensType (thanks Jos Roost)
|
|
87
|
+
- Decode 'id3 ' chunk in WAV audio files
|
|
88
|
+
- Decode timed GPS from concatenated Garmin dashcam videos
|
|
89
|
+
- Decode SamsungTrailer information from sefd atom in HEIC images
|
|
90
|
+
- Decode more Sony MakerNote tags for the ZV-E10 (thanks Jos Roost)
|
|
91
|
+
- Decode DepthMapTiff from JPEG images of more Samsung models
|
|
92
|
+
- Decode timed GPS from M2TS videos of yet another type of dashcam
|
|
93
|
+
- Extract PreviewImage from Xaiomi MP4 videos
|
|
94
|
+
- Changed name of second EmbeddedImage in Samsung trailer to EmbeddedImage2
|
|
95
|
+
- Improved Dutch translations for GPS tags (thanks Peter Dubbelman)
|
|
96
|
+
- Allow ICC_Profile to be "deleted" from AVIF files (actually, the profile
|
|
97
|
+
isn't really deleted. Instead, a zero-length profile is written to allow a
|
|
98
|
+
profile to be added back later since QuickTime item property containers
|
|
99
|
+
currently can't be created)
|
|
100
|
+
- Patched to remove 2 GB size limit when reading Photoshop ImageSourceData
|
|
101
|
+
|
|
102
|
+
July 9, 2021 - Version 12.29
|
|
103
|
+
|
|
104
|
+
- Added a few new Nikon and Olympus lenses (thanks LibRaw)
|
|
105
|
+
- Improved a QuickTime "File format error" message to be more meaningful, and
|
|
106
|
+
made it a minor error
|
|
107
|
+
- Changed PNG writer to add EXIF before IDAT
|
|
108
|
+
- Some changes the way JUMBF metadata is handled
|
|
109
|
+
- Patched to read timed GPS from a different type of INSV videos
|
|
110
|
+
- Patched a security issue
|
|
111
|
+
- Fixed problem where ExifTool could hang when processing mebx timed metadata
|
|
112
|
+
|
|
10
113
|
June 22, 2021 - Version 12.28
|
|
11
114
|
|
|
12
115
|
- Added read support for Leica Image File (LIF) images
|
|
@@ -27,7 +130,7 @@ June 9, 2021 - Version 12.27
|
|
|
27
130
|
- Added warning if IPTCDigest is not current
|
|
28
131
|
- Decode a couple more Pentax tags (thanks LibRaw)
|
|
29
132
|
- Decode streaming GPS from Novatek INNOVV MP4 and TS videos
|
|
30
|
-
- Improved tag names in
|
|
133
|
+
- Improved tag names in config_files/covert_regions.config (thanks StarGeek)
|
|
31
134
|
- Changed MIME types for MS Office macro-enabled formats to add the .12
|
|
32
135
|
- Patched Canon LensID logic to properly identify the Canon RF 24-105mm F4 L
|
|
33
136
|
IS USM lens
|
|
@@ -1417,8 +1520,8 @@ Oct. 9, 2018 - Version 11.13
|
|
|
1417
1520
|
- Added a new Canon LensType (thanks LibRaw)
|
|
1418
1521
|
- Minor improvements to verbose dump of streaming GPS metadata
|
|
1419
1522
|
- Reverted change of version 10.71 which resulted in Windows not recognizing
|
|
1420
|
-
PNG CreationTime as written by ExifTool (added this feature to the
|
|
1421
|
-
StrictDate
|
|
1523
|
+
PNG CreationTime as written by ExifTool (added this feature to the API
|
|
1524
|
+
StrictDate option instead)
|
|
1422
1525
|
- Improved decoding of Nikon CropHiSpeed (thanks LibRaw)
|
|
1423
1526
|
- Improved -fast option to reduce memory usage when reading JPG, PNG,
|
|
1424
1527
|
QuickTime-based and RIFF-based files via a sequential stream
|
|
@@ -1532,7 +1635,7 @@ June 21, 2018 - Version 11.03
|
|
|
1532
1635
|
June 13, 2018 - Version 11.02
|
|
1533
1636
|
|
|
1534
1637
|
- Added support for a different format of Apple iWorks files
|
|
1535
|
-
- Added undocumented FixCorruptedMOV
|
|
1638
|
+
- Added undocumented API FixCorruptedMOV option to allow fixing MOV videos
|
|
1536
1639
|
with multiple 'mdat' atoms which were corrupted by ExifTool
|
|
1537
1640
|
- Decode more QuickTime tags
|
|
1538
1641
|
- Decode more PanasonicRaw tags (thanks Klaus Homeister)
|
package/bin/MANIFEST
CHANGED
|
@@ -48,6 +48,7 @@ html/TagNames/Apple.html
|
|
|
48
48
|
html/TagNames/Audible.html
|
|
49
49
|
html/TagNames/BMP.html
|
|
50
50
|
html/TagNames/BPG.html
|
|
51
|
+
html/TagNames/CBOR.html
|
|
51
52
|
html/TagNames/Canon.html
|
|
52
53
|
html/TagNames/CanonCustom.html
|
|
53
54
|
html/TagNames/CanonRaw.html
|
|
@@ -125,6 +126,7 @@ html/TagNames/Ogg.html
|
|
|
125
126
|
html/TagNames/Olympus.html
|
|
126
127
|
html/TagNames/OpenEXR.html
|
|
127
128
|
html/TagNames/Opus.html
|
|
129
|
+
html/TagNames/Other.html
|
|
128
130
|
html/TagNames/PCX.html
|
|
129
131
|
html/TagNames/PDF.html
|
|
130
132
|
html/TagNames/PGF.html
|
|
@@ -216,6 +218,7 @@ lib/Image/ExifTool/BPG.pm
|
|
|
216
218
|
lib/Image/ExifTool/BZZ.pm
|
|
217
219
|
lib/Image/ExifTool/BigTIFF.pm
|
|
218
220
|
lib/Image/ExifTool/BuildTagLookup.pm
|
|
221
|
+
lib/Image/ExifTool/CBOR.pm
|
|
219
222
|
lib/Image/ExifTool/Canon.pm
|
|
220
223
|
lib/Image/ExifTool/CanonCustom.pm
|
|
221
224
|
lib/Image/ExifTool/CanonRaw.pm
|
|
@@ -350,6 +353,7 @@ lib/Image/ExifTool/Ogg.pm
|
|
|
350
353
|
lib/Image/ExifTool/Olympus.pm
|
|
351
354
|
lib/Image/ExifTool/OpenEXR.pm
|
|
352
355
|
lib/Image/ExifTool/Opus.pm
|
|
356
|
+
lib/Image/ExifTool/Other.pm
|
|
353
357
|
lib/Image/ExifTool/PCX.pm
|
|
354
358
|
lib/Image/ExifTool/PDF.pm
|
|
355
359
|
lib/Image/ExifTool/PGF.pm
|
|
@@ -717,6 +721,8 @@ t/PDF_6.out
|
|
|
717
721
|
t/PDF_7.out
|
|
718
722
|
t/PDF_8.out
|
|
719
723
|
t/PDF_9.out
|
|
724
|
+
t/PFM.t
|
|
725
|
+
t/PFM_2.out
|
|
720
726
|
t/PGF.t
|
|
721
727
|
t/PGF_2.out
|
|
722
728
|
t/PICT.t
|
|
@@ -1050,6 +1056,7 @@ t/images/Opus.opus
|
|
|
1050
1056
|
t/images/PCX.pcx
|
|
1051
1057
|
t/images/PDF.pdf
|
|
1052
1058
|
t/images/PDF2.pdf
|
|
1059
|
+
t/images/PFM.pfm
|
|
1053
1060
|
t/images/PGF.pgf
|
|
1054
1061
|
t/images/PICT.pict
|
|
1055
1062
|
t/images/PLIST-bin.plist
|
package/bin/META.json
CHANGED
package/bin/META.yml
CHANGED
package/bin/README
CHANGED
|
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
|
|
|
107
107
|
terminal window to extract and run ExifTool:
|
|
108
108
|
|
|
109
109
|
cd ~/Desktop
|
|
110
|
-
gzip -dc Image-ExifTool-12.
|
|
111
|
-
cd Image-ExifTool-12.
|
|
110
|
+
gzip -dc Image-ExifTool-12.34.tar.gz | tar -xf -
|
|
111
|
+
cd Image-ExifTool-12.34
|
|
112
112
|
./exiftool t/images/ExifTool.jpg
|
|
113
113
|
|
|
114
114
|
Note: These commands extract meta information from one of the test images.
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# 2015/01/12 - PH Avoid copying from non-standard namespaces
|
|
14
14
|
# 2016/09/26 - PH Write Composite SubSec tags
|
|
15
15
|
# 2018/05/07 - PH Added support for GPSDestXxxRef tags
|
|
16
|
+
# 2021/09/30 - PH Removed erroneous "-" when copying CreatorTool
|
|
16
17
|
#
|
|
17
18
|
# References: http://www.metadataworkinggroup.org/specs/
|
|
18
19
|
#
|
|
@@ -34,7 +35,7 @@
|
|
|
34
35
|
-Composite:SubSecDateTimeOriginal < XMP-photoshop:DateCreated
|
|
35
36
|
-Composite:SubSecCreateDate < XMP-xmp:CreateDate
|
|
36
37
|
-Composite:SubSecModifyDate < XMP-xmp:ModifyDate
|
|
37
|
-
-EXIF:Software <
|
|
38
|
+
-EXIF:Software < XMP-xmp:CreatorTool
|
|
38
39
|
-EXIF:Copyright < XMP-dc:Rights
|
|
39
40
|
-EXIF:Artist < XMP-dc:Creator
|
|
40
41
|
# XMP flash information is translated by the Composite Flash tag
|
package/bin/exiftool
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
use strict;
|
|
11
11
|
require 5.004;
|
|
12
12
|
|
|
13
|
-
my $version = '12.
|
|
13
|
+
my $version = '12.34';
|
|
14
14
|
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
16
16
|
my $exeDir;
|
|
@@ -1619,7 +1619,7 @@ if (@newValues) {
|
|
|
1619
1619
|
next;
|
|
1620
1620
|
}
|
|
1621
1621
|
my %opts = ( Shift => 0 ); # shift values if possible instead of adding/deleting
|
|
1622
|
-
# allow writing of '
|
|
1622
|
+
# allow writing of 'Unsafe' tags unless specified by wildcard
|
|
1623
1623
|
$opts{Protected} = 1 unless $tag =~ /[?*]/;
|
|
1624
1624
|
|
|
1625
1625
|
if ($tag =~ s/<// and defined $newVal) {
|
|
@@ -1954,10 +1954,19 @@ sub GetImageInfo($$)
|
|
|
1954
1954
|
my $pipe = $file;
|
|
1955
1955
|
if ($doUnzip) {
|
|
1956
1956
|
# pipe through gzip or bzip2 if necessary
|
|
1957
|
-
if ($file =~ /\.gz$/i) {
|
|
1958
|
-
$
|
|
1959
|
-
|
|
1960
|
-
|
|
1957
|
+
if ($file =~ /\.(gz|bz2)$/i) {
|
|
1958
|
+
my $type = lc $1;
|
|
1959
|
+
if ($file =~ /[^-_.'A-Za-z0-9\/\\]/) {
|
|
1960
|
+
Warn "Error: Insecure zip file name. Skipped\n";
|
|
1961
|
+
EFile($file);
|
|
1962
|
+
++$countBad;
|
|
1963
|
+
return;
|
|
1964
|
+
}
|
|
1965
|
+
if ($type eq 'gz') {
|
|
1966
|
+
$pipe = qq{gzip -dc "$file" |};
|
|
1967
|
+
} else {
|
|
1968
|
+
$pipe = qq{bzip2 -dc "$file" |};
|
|
1969
|
+
}
|
|
1961
1970
|
}
|
|
1962
1971
|
}
|
|
1963
1972
|
# evaluate -if expression for conditional processing
|
|
@@ -2276,7 +2285,7 @@ TAG: foreach $tag (@foundTags) {
|
|
|
2276
2285
|
# avoid extracting Protected binary tags (eg. data blocks) [insider information]
|
|
2277
2286
|
my $lcTag = lc $tag;
|
|
2278
2287
|
$lcTag =~ s/ .*//;
|
|
2279
|
-
next unless $$et{REQ_TAG_LOOKUP}{$lcTag};
|
|
2288
|
+
next unless $$et{REQ_TAG_LOOKUP}{$lcTag} or ($$et{OPTIONS}{RequestAll} || 0) > 2;
|
|
2280
2289
|
}
|
|
2281
2290
|
$val = ConvertBinary($val); # convert SCALAR references
|
|
2282
2291
|
next unless defined $val;
|
|
@@ -3052,12 +3061,14 @@ sub SetImageInfo($$$)
|
|
|
3052
3061
|
# temporarily disable CTRL-C during this critical operation
|
|
3053
3062
|
$critical = 1;
|
|
3054
3063
|
undef $tmpFile; # handle deletion of temporary file ourself
|
|
3055
|
-
if ($et->Open(\*ORIG_FILE, $file, '
|
|
3064
|
+
if ($et->Open(\*ORIG_FILE, $file, '+<')) {
|
|
3056
3065
|
binmode(ORIG_FILE);
|
|
3057
3066
|
while (read(NEW_FILE, $buff, 65536)) {
|
|
3058
3067
|
print ORIG_FILE $buff or $err = 1;
|
|
3059
3068
|
}
|
|
3060
3069
|
close(NEW_FILE);
|
|
3070
|
+
# Handle files being shorter than the original
|
|
3071
|
+
eval { truncate(ORIG_FILE, tell(ORIG_FILE)) } or $err = 1;
|
|
3061
3072
|
close(ORIG_FILE) or $err = 1;
|
|
3062
3073
|
if ($err) {
|
|
3063
3074
|
Warn "Couldn't overwrite in place - $file\n";
|
|
@@ -3241,7 +3252,8 @@ sub FormatXML($$$)
|
|
|
3241
3252
|
} elsif (ref $val eq 'HASH') {
|
|
3242
3253
|
$gt = " rdf:parseType='Resource'>";
|
|
3243
3254
|
my $val2 = '';
|
|
3244
|
-
|
|
3255
|
+
my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
|
|
3256
|
+
foreach (@keys) {
|
|
3245
3257
|
# (some variable-namespace XML structure fields may have a different group)
|
|
3246
3258
|
my $tok = /:/ ? $_ : ($grp . ':' . $_);
|
|
3247
3259
|
$val2 .= "\n$ind <$tok" . FormatXML($$val{$_}, "$ind ", $grp) . "</$tok>";
|
|
@@ -3318,7 +3330,8 @@ sub FormatJSON($$$)
|
|
|
3318
3330
|
} elsif (ref $val eq 'HASH') {
|
|
3319
3331
|
my ($bra, $ket, $sep) = $json == 1 ? ('{','}',':') : ('Array(',')',' =>');
|
|
3320
3332
|
print $fp $bra;
|
|
3321
|
-
|
|
3333
|
+
my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
|
|
3334
|
+
foreach (@keys) {
|
|
3322
3335
|
print $fp ',' if $comma;
|
|
3323
3336
|
my $key = EscapeJSON($_, 1);
|
|
3324
3337
|
print $fp qq(\n$ind $key$sep );
|
|
@@ -4721,11 +4734,11 @@ I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
|
|
|
4721
4734
|
prefixed by optional family numbers, and separated colons. If no group name
|
|
4722
4735
|
is specified, the tag is created in the preferred group, and updated in any
|
|
4723
4736
|
other location where a same-named tag already exists. The preferred group
|
|
4724
|
-
is the first group in the following list
|
|
4725
|
-
IPTC, 3) XMP.
|
|
4737
|
+
in JPEG and TIFF-format images is the first group in the following list
|
|
4738
|
+
where I<TAG> is valid: 1) EXIF, 2) IPTC, 3) XMP.
|
|
4726
4739
|
|
|
4727
4740
|
The wildcards C<*> and C<?> may be used in tag names to assign the same
|
|
4728
|
-
value to multiple tags. When specified with wildcards, "
|
|
4741
|
+
value to multiple tags. When specified with wildcards, "Unsafe" tags are
|
|
4729
4742
|
not written. A tag name of C<All> is equivalent to C<*> (except that it
|
|
4730
4743
|
doesn't require quoting, while arguments with wildcards do on systems with
|
|
4731
4744
|
shell globbing), and is often used when deleting all metadata (ie. C<-All=>)
|
|
@@ -4871,10 +4884,10 @@ See L</COPYING EXAMPLES> for examples using B<-tagsFromFile>.
|
|
|
4871
4884
|
Notes:
|
|
4872
4885
|
|
|
4873
4886
|
1) Some tags (generally tags which may affect the appearance of the image)
|
|
4874
|
-
are considered "
|
|
4887
|
+
are considered "Unsafe" to write, and are only copied if specified
|
|
4875
4888
|
explicitly (ie. no wildcards). See the
|
|
4876
4889
|
L<tag name documentation|Image::ExifTool::TagNames> for more details about
|
|
4877
|
-
"
|
|
4890
|
+
"Unsafe" tags.
|
|
4878
4891
|
|
|
4879
4892
|
2) Be aware of the difference between excluding a tag from being copied
|
|
4880
4893
|
(--I<TAG>), and deleting a tag (-I<TAG>=). Excluding a tag prevents it from
|
|
@@ -4972,7 +4985,7 @@ intermediate file (C<out.args> in this example):
|
|
|
4972
4985
|
exiftool -@ out.args -sep ', ' dst.jpg
|
|
4973
4986
|
|
|
4974
4987
|
Note: Be careful when copying information with this technique since it is
|
|
4975
|
-
easy to write tags which are normally considered "
|
|
4988
|
+
easy to write tags which are normally considered "Unsafe". For instance,
|
|
4976
4989
|
the FileName and Directory tags are excluded in the example above to avoid
|
|
4977
4990
|
renaming and moving the destination file. Also note that the second command
|
|
4978
4991
|
above will produce warning messages for any tags which are not writable.
|
|
@@ -4992,8 +5005,8 @@ are in the default output. By default, list items are separated by a
|
|
|
4992
5005
|
newline when extracted with the B<-b> option, but this may be changed (see
|
|
4993
5006
|
the B<-sep> option for details). May be combined with B<-j>, B<-php> or
|
|
4994
5007
|
B<-X> to extract binary data in JSON, PHP or XML format, but note that
|
|
4995
|
-
"
|
|
4996
|
-
|
|
5008
|
+
"Unsafe" tags are not extracted as binary unless they are specified explicitly or
|
|
5009
|
+
the API RequestAll option is set to 3 or higher.
|
|
4997
5010
|
|
|
4998
5011
|
With a leading double dash (B<--b> or B<--binary>), tags which contain
|
|
4999
5012
|
binary data are suppressed in the output when reading.
|
|
@@ -5194,7 +5207,7 @@ By default the resulting group name is simplified by removing any leading
|
|
|
5194
5207
|
C<Main:> and collapsing adjacent identical group names, but this can be
|
|
5195
5208
|
avoided by placing a colon before the first family number (eg. B<-g:3:1>).
|
|
5196
5209
|
Use the B<-listg> option to list group names for a specified family. The
|
|
5197
|
-
SavePath and SaveFormat
|
|
5210
|
+
API SavePath and SaveFormat options are automatically enabled if the
|
|
5198
5211
|
respective family 5 or 6 group names are requested. See the
|
|
5199
5212
|
L<API GetGroup documentation|Image::ExifTool/GetGroup> for more information.
|
|
5200
5213
|
|
|
@@ -5397,7 +5410,7 @@ with this command:
|
|
|
5397
5410
|
|
|
5398
5411
|
produces output like this:
|
|
5399
5412
|
|
|
5400
|
-
-- Generated by ExifTool 12.
|
|
5413
|
+
-- Generated by ExifTool 12.34 --
|
|
5401
5414
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5402
5415
|
(f/5.6, 1/60s, ISO 100)
|
|
5403
5416
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5414,7 +5427,7 @@ are effectively processed as separate input files.
|
|
|
5414
5427
|
If a specified tag does not exist, a minor warning is issued and the line
|
|
5415
5428
|
with the missing tag is not printed. However, the B<-f> option may be used
|
|
5416
5429
|
to set the value of missing tags to '-' (but this may be configured via the
|
|
5417
|
-
MissingTagValue
|
|
5430
|
+
API MissingTagValue option), or the B<-m> option may be used to ignore minor
|
|
5418
5431
|
warnings and leave the missing values empty. Alternatively, B<-q -q> may be
|
|
5419
5432
|
used to simply suppress the warning messages.
|
|
5420
5433
|
|
|
@@ -5713,9 +5726,10 @@ The B<-t> option adds tag table information to the output (see B<-t> for
|
|
|
5713
5726
|
details).
|
|
5714
5727
|
|
|
5715
5728
|
Note: This output is NOT the same as XMP because it uses
|
|
5716
|
-
dynamically-generated property names corresponding to the ExifTool tag
|
|
5717
|
-
names, and not the standard XMP
|
|
5718
|
-
|
|
5729
|
+
dynamically-generated property names corresponding to the ExifTool tag names
|
|
5730
|
+
with ExifTool family 1 group names as namespaces, and not the standard XMP
|
|
5731
|
+
properties and namespaces. To write XMP instead, use the B<-o> option with
|
|
5732
|
+
an XMP extension for the output file.
|
|
5719
5733
|
|
|
5720
5734
|
=back
|
|
5721
5735
|
|
|
@@ -6362,7 +6376,7 @@ exit status of the command (see L</EXIT STATUS>).
|
|
|
6362
6376
|
|
|
6363
6377
|
Save the names of files giving errors (I<NUM> missing or 1), files that were
|
|
6364
6378
|
unchanged (I<NUM> is 2), files that fail the B<-if> condition (I<NUM> is 4),
|
|
6365
|
-
or any combination thereof
|
|
6379
|
+
or any combination thereof by summing I<NUM> (eg. B<-efile3> is the same
|
|
6366
6380
|
has having both B<-efile> and B<-efile2> options with the same I<ERRFILE>).
|
|
6367
6381
|
By default, file names are appended to any existing I<ERRFILE>, but
|
|
6368
6382
|
I<ERRFILE> is overwritten if an exclamation point is added to the option
|
package/bin/fmt_files/gpx.fmt
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
|
14
14
|
#
|
|
15
15
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
|
16
|
-
# 2) The -
|
|
16
|
+
# 2) The -ee3 option is to extract the full track from video files.
|
|
17
17
|
# 3) The -fileOrder option may be used to control the order of the
|
|
18
18
|
# generated track points when processing multiple files.
|
|
19
19
|
#------------------------------------------------------------------------------
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
|
15
15
|
#
|
|
16
16
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
|
17
|
-
# 2) The -
|
|
17
|
+
# 2) The -ee3 option is to extract the full track from video files.
|
|
18
18
|
# 3) The -fileOrder option may be used to control the order of the
|
|
19
19
|
# generated track points when processing multiple files.
|
|
20
20
|
#------------------------------------------------------------------------------
|
|
@@ -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.46';
|
|
39
39
|
@ISA = qw(Exporter);
|
|
40
40
|
|
|
41
41
|
sub NumbersFirst($$);
|
|
@@ -68,6 +68,7 @@ my %tweakOrder = (
|
|
|
68
68
|
IPTC => 'Exif', # put IPTC after EXIF,
|
|
69
69
|
GPS => 'XMP', # etc...
|
|
70
70
|
Composite => 'Extra',
|
|
71
|
+
CBOR => 'JSON',
|
|
71
72
|
GeoTiff => 'GPS',
|
|
72
73
|
CanonVRD=> 'CanonCustom',
|
|
73
74
|
DJI => 'Casio',
|
|
@@ -459,7 +460,7 @@ According to the specification, integer-format QuickTime date/time tags
|
|
|
459
460
|
should be stored as UTC. Unfortunately, digital cameras often store local
|
|
460
461
|
time values instead (presumably because they don't know the time zone). For
|
|
461
462
|
this reason, by default ExifTool does not assume a time zone for these
|
|
462
|
-
values. However, if the L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC>
|
|
463
|
+
values. However, if the API L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> option is set, then ExifTool will
|
|
463
464
|
assume these values are properly stored as UTC, and will convert them to
|
|
464
465
|
local time when extracting.
|
|
465
466
|
|
|
@@ -468,6 +469,11 @@ the PrintConv option is enabled and no time zone is specified. This is
|
|
|
468
469
|
because Apple software may display crazy values if the time zone is missing
|
|
469
470
|
for some tags.
|
|
470
471
|
|
|
472
|
+
By default ExifTool will remove null padding from some QuickTime containers
|
|
473
|
+
in Canon CR3 files when writing, but the
|
|
474
|
+
L<QuickTimePad|../ExifTool.html#QuickTimePad> option may be used to preserve
|
|
475
|
+
the original size by padding with nulls if necessary.
|
|
476
|
+
|
|
471
477
|
See
|
|
472
478
|
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
|
|
473
479
|
for the official specification.
|
|
@@ -2117,7 +2123,7 @@ sub WriteTagNames($$)
|
|
|
2117
2123
|
$short = $$shortName{$tableName};
|
|
2118
2124
|
my @names = split ' ', $short;
|
|
2119
2125
|
my $class = shift @names;
|
|
2120
|
-
if (@names) {
|
|
2126
|
+
if (@names and $class ne 'Other') {
|
|
2121
2127
|
# add heading for tables without a Main
|
|
2122
2128
|
unless ($heading eq $class) {
|
|
2123
2129
|
$heading = $class;
|
|
@@ -2145,6 +2151,13 @@ sub WriteTagNames($$)
|
|
|
2145
2151
|
$short = $$shortName{$tableName};
|
|
2146
2152
|
$short = $tableName unless $short;
|
|
2147
2153
|
$url = "$short.html";
|
|
2154
|
+
# handle various tables in "Other.pm"
|
|
2155
|
+
if ($short =~ /^Other (.*)/) {
|
|
2156
|
+
$short = $1;
|
|
2157
|
+
$url = 'Other.html#' . $1;
|
|
2158
|
+
} else {
|
|
2159
|
+
$url = "$short.html";
|
|
2160
|
+
}
|
|
2148
2161
|
print HTMLFILE "<a href='${url}'>$short</a>";
|
|
2149
2162
|
++$count;
|
|
2150
2163
|
}
|