exiftool-vendored.exe 12.82.1 → 12.85.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/exiftool_files/Changes +59 -0
- package/bin/exiftool_files/README +47 -46
- package/bin/exiftool_files/build_geolocation +945 -0
- package/bin/exiftool_files/config_files/example.config +2 -2
- package/bin/exiftool_files/exiftool.pl +79 -55
- package/bin/exiftool_files/fmt_files/gpx.fmt +2 -1
- package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +52 -7
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +5 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +11 -2
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +18 -5
- package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +29 -0
- package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +19 -2
- package/bin/exiftool_files/lib/Image/ExifTool/GM.pm +17 -8
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +170 -104
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +18 -10
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +28 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +25 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +64 -13
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +26 -7
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +5 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +15 -6
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +3557 -3540
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +61 -13
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +4 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +166 -134
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +2 -0
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +3 -0
- package/bin/exiftool_files/lib/Image/ExifTool.pm +59 -27
- package/bin/exiftool_files/lib/Image/ExifTool.pod +88 -71
- package/package.json +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/cs.pm +0 -978
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/de.pm +0 -1975
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/en_ca.pm +0 -44
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/en_gb.pm +0 -124
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/es.pm +0 -2921
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/fi.pm +0 -1116
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/fr.pm +0 -3171
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/it.pm +0 -2750
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ja.pm +0 -10256
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ko.pm +0 -4499
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/nl.pm +0 -1270
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/pl.pm +0 -3019
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ru.pm +0 -18220
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/sk.pm +0 -441
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/sv.pm +0 -714
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/tr.pm +0 -452
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/zh_cn.pm +0 -2225
- package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/zh_tw.pm +0 -72
|
@@ -364,8 +364,8 @@ $Image::ExifTool::QuickTime::Keys{PREFERRED} = 3;
|
|
|
364
364
|
|
|
365
365
|
# Add user-defined cities to the Geolocation lookup
|
|
366
366
|
@Image::ExifTool::UserDefined::Geolocation = (
|
|
367
|
-
# (city,region,
|
|
368
|
-
['Sinemorets','
|
|
367
|
+
# (city,region,subregion,country_code,country,timezone,feature_code,population,lat,lon)
|
|
368
|
+
['Sinemorets','burgas','Obshtina Tsarevo','BG','','Europe/Sofia','PPL',400,42.06115,27.97833],
|
|
369
369
|
);
|
|
370
370
|
|
|
371
371
|
#------------------------------------------------------------------------------
|
|
@@ -11,7 +11,7 @@ use strict;
|
|
|
11
11
|
use warnings;
|
|
12
12
|
require 5.004;
|
|
13
13
|
|
|
14
|
-
my $version = '12.
|
|
14
|
+
my $version = '12.85';
|
|
15
15
|
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
17
17
|
my $exePath;
|
|
@@ -748,6 +748,7 @@ for (;;) {
|
|
|
748
748
|
push @isUTF8, 10 if $isAlt;
|
|
749
749
|
for ($i=0; ; ++$i) {
|
|
750
750
|
my @entry = Image::ExifTool::Geolocation::GetEntry($i,$langOpt,1) or last;
|
|
751
|
+
$#entry = 9; # remove everything after latitude (eg. feature type)
|
|
751
752
|
next if $minPop and $entry[7] < $minPop;
|
|
752
753
|
next if %fcodes and $neg ? $fcodes{lc $entry[6]} : not $fcodes{lc $entry[6]};
|
|
753
754
|
push @entry, Image::ExifTool::Geolocation::GetAltNames($i,1) if $isAlt;
|
|
@@ -1179,7 +1180,7 @@ for (;;) {
|
|
|
1179
1180
|
if (/^p(-?)$/ or /^printformat(-?)$/i) {
|
|
1180
1181
|
my $fmt = shift;
|
|
1181
1182
|
if ($pass) {
|
|
1182
|
-
LoadPrintFormat($fmt, $1);
|
|
1183
|
+
LoadPrintFormat($fmt, $1 || $binaryOutput);
|
|
1183
1184
|
# load MWG module now if necessary
|
|
1184
1185
|
if (not $useMWG and grep /^mwg:/i, @requestTags) {
|
|
1185
1186
|
$useMWG = 1;
|
|
@@ -2241,6 +2242,14 @@ sub GetImageInfo($$)
|
|
|
2241
2242
|
if (%printFmt) {
|
|
2242
2243
|
$et->Options(Duplicates => 1);
|
|
2243
2244
|
$et->Options(RequestTags => \@requestTags);
|
|
2245
|
+
if ($printFmt{SetTags}) {
|
|
2246
|
+
# initialize options so we can set any tags we want
|
|
2247
|
+
$$et{TAGS_FROM_FILE} = 1;
|
|
2248
|
+
$et->Options(MakerNotes => 1);
|
|
2249
|
+
$et->Options(Struct => 2);
|
|
2250
|
+
$et->Options(List => 1);
|
|
2251
|
+
$et->Options(CoordFormat => '%d %d %.8f') unless $et->Options('CoordFormat');
|
|
2252
|
+
}
|
|
2244
2253
|
} else {
|
|
2245
2254
|
@foundTags = @tags;
|
|
2246
2255
|
}
|
|
@@ -2293,8 +2302,8 @@ sub GetImageInfo($$)
|
|
|
2293
2302
|
# output using print format file (-p) option
|
|
2294
2303
|
my ($type, $doc, $grp, $lastDoc, $cache);
|
|
2295
2304
|
$fileTrailer = '';
|
|
2296
|
-
# repeat for each
|
|
2297
|
-
if (
|
|
2305
|
+
# repeat for each sub-document if necessary
|
|
2306
|
+
if ($$et{DOC_COUNT}) {
|
|
2298
2307
|
# (cache tag keys if there are sub-documents)
|
|
2299
2308
|
$lastDoc = $$et{DOC_COUNT} and $cache = { };
|
|
2300
2309
|
} else {
|
|
@@ -4118,6 +4127,7 @@ sub AddPrintFormat($)
|
|
|
4118
4127
|
push @{$printFmt{$type}}, $expr;
|
|
4119
4128
|
# add to list of requested tags
|
|
4120
4129
|
push @requestTags, $expr =~ /\$\{?((?:[-\w]+:)*[-\w?*]+)/g;
|
|
4130
|
+
$printFmt{SetTags} = 1 if $expr =~ /\bSetTags\b/;
|
|
4121
4131
|
}
|
|
4122
4132
|
|
|
4123
4133
|
#------------------------------------------------------------------------------
|
|
@@ -4719,50 +4729,50 @@ DESCRIPTION
|
|
|
4719
4729
|
|
|
4720
4730
|
File Types
|
|
4721
4731
|
------------+-------------+-------------+-------------+------------
|
|
4722
|
-
360 r/w | DOCX r | ITC r |
|
|
4723
|
-
3FR r | DPX r | J2C r |
|
|
4724
|
-
3G2 r/w | DR4 r/w/c | JNG r/w |
|
|
4725
|
-
3GP r/w | DSS r | JP2 r/w |
|
|
4726
|
-
7Z r | DV r | JPEG r/w |
|
|
4727
|
-
A r | DVB r/w | JSON r |
|
|
4728
|
-
AA r | DVR-MS r | JXL r/w |
|
|
4729
|
-
AAC r | DYLIB r | K25 r |
|
|
4730
|
-
AAE r | EIP r | KDC r |
|
|
4731
|
-
AAX r/w | EPS r/w | KEY r |
|
|
4732
|
-
ACR r | EPUB r | LA r |
|
|
4733
|
-
AFM r | ERF r/w | LFP r |
|
|
4734
|
-
AI r/w | EXE r | LIF r |
|
|
4735
|
-
AIFF r | EXIF r/w/c | LNK r |
|
|
4736
|
-
APE r | EXR r | LRV r/w |
|
|
4737
|
-
ARQ r/w | EXV r/w/c | M2TS r |
|
|
4738
|
-
ARW r/w | F4A/V r/w | M4A/V r/w |
|
|
4739
|
-
ASF r | FFF r/w | MACOS r |
|
|
4740
|
-
AVI r | FITS r | MAX r |
|
|
4741
|
-
AVIF r/w | FLA r | MEF r/w |
|
|
4742
|
-
AZW r | FLAC r | MIE r/w/c |
|
|
4743
|
-
BMP r | FLIF r/w | MIFF r |
|
|
4744
|
-
BPG r | FLV r | MKA r |
|
|
4745
|
-
BTF r | FPF r | MKS r |
|
|
4746
|
-
C2PA r | FPX r | MKV r |
|
|
4747
|
-
CHM r | GIF r/w | MNG r/w |
|
|
4748
|
-
COS r | GLV r/w | MOBI r |
|
|
4749
|
-
CR2 r/w | GPR r/w | MODD r |
|
|
4750
|
-
CR3 r/w | GZ r | MOI r |
|
|
4751
|
-
CRM r/w | HDP r/w | MOS r/w |
|
|
4752
|
-
CRW r/w | HDR r | MOV r/w |
|
|
4753
|
-
CS1 r/w | HEIC r/w | MP3 r |
|
|
4754
|
-
CSV r | HEIF r/w | MP4 r/w |
|
|
4755
|
-
CUR r | HTML r | MPC r |
|
|
4756
|
-
CZI r | ICC r/w/c | MPG r |
|
|
4757
|
-
DCM r | ICO r | MPO r/w |
|
|
4758
|
-
DCP r/w | ICS r | MQV r/w |
|
|
4759
|
-
DCR r | IDML r | MRC r |
|
|
4760
|
-
DFONT r | IIQ r/w | MRW r/w |
|
|
4761
|
-
DIVX r | IND r/w | MXF r |
|
|
4762
|
-
DJVU r | INSP r/w | NEF r/w |
|
|
4763
|
-
DLL r | INSV r |
|
|
4764
|
-
DNG r/w | INX r |
|
|
4765
|
-
DOC r | ISO r |
|
|
4732
|
+
360 r/w | DOCX r | ITC r | NUMBERS r | RAW r/w
|
|
4733
|
+
3FR r | DPX r | J2C r | NXD r | RIFF r
|
|
4734
|
+
3G2 r/w | DR4 r/w/c | JNG r/w | O r | RSRC r
|
|
4735
|
+
3GP r/w | DSS r | JP2 r/w | ODP r | RTF r
|
|
4736
|
+
7Z r | DV r | JPEG r/w | ODS r | RW2 r/w
|
|
4737
|
+
A r | DVB r/w | JSON r | ODT r | RWL r/w
|
|
4738
|
+
AA r | DVR-MS r | JXL r/w | OFR r | RWZ r
|
|
4739
|
+
AAC r | DYLIB r | K25 r | OGG r | RM r
|
|
4740
|
+
AAE r | EIP r | KDC r | OGV r | SEQ r
|
|
4741
|
+
AAX r/w | EPS r/w | KEY r | ONP r | SKETCH r
|
|
4742
|
+
ACR r | EPUB r | LA r | OPUS r | SO r
|
|
4743
|
+
AFM r | ERF r/w | LFP r | ORF r/w | SR2 r/w
|
|
4744
|
+
AI r/w | EXE r | LIF r | ORI r/w | SRF r
|
|
4745
|
+
AIFF r | EXIF r/w/c | LNK r | OTF r | SRW r/w
|
|
4746
|
+
APE r | EXR r | LRV r/w | PAC r | SVG r
|
|
4747
|
+
ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SWF r
|
|
4748
|
+
ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | THM r/w
|
|
4749
|
+
ASF r | FFF r/w | MACOS r | PCD r | TIFF r/w
|
|
4750
|
+
AVI r | FITS r | MAX r | PCX r | TORRENT r
|
|
4751
|
+
AVIF r/w | FLA r | MEF r/w | PDB r | TTC r
|
|
4752
|
+
AZW r | FLAC r | MIE r/w/c | PDF r/w | TTF r
|
|
4753
|
+
BMP r | FLIF r/w | MIFF r | PEF r/w | TXT r
|
|
4754
|
+
BPG r | FLV r | MKA r | PFA r | VCF r
|
|
4755
|
+
BTF r | FPF r | MKS r | PFB r | VNT r
|
|
4756
|
+
C2PA r | FPX r | MKV r | PFM r | VRD r/w/c
|
|
4757
|
+
CHM r | GIF r/w | MNG r/w | PGF r | VSD r
|
|
4758
|
+
COS r | GLV r/w | MOBI r | PGM r/w | WAV r
|
|
4759
|
+
CR2 r/w | GPR r/w | MODD r | PLIST r | WDP r/w
|
|
4760
|
+
CR3 r/w | GZ r | MOI r | PICT r | WEBP r/w
|
|
4761
|
+
CRM r/w | HDP r/w | MOS r/w | PMP r | WEBM r
|
|
4762
|
+
CRW r/w | HDR r | MOV r/w | PNG r/w | WMA r
|
|
4763
|
+
CS1 r/w | HEIC r/w | MP3 r | PPM r/w | WMV r
|
|
4764
|
+
CSV r | HEIF r/w | MP4 r/w | PPT r | WPG r
|
|
4765
|
+
CUR r | HTML r | MPC r | PPTX r | WTV r
|
|
4766
|
+
CZI r | ICC r/w/c | MPG r | PS r/w | WV r
|
|
4767
|
+
DCM r | ICO r | MPO r/w | PSB r/w | X3F r/w
|
|
4768
|
+
DCP r/w | ICS r | MQV r/w | PSD r/w | XCF r
|
|
4769
|
+
DCR r | IDML r | MRC r | PSP r | XISF r
|
|
4770
|
+
DFONT r | IIQ r/w | MRW r/w | QTIF r/w | XLS r
|
|
4771
|
+
DIVX r | IND r/w | MXF r | R3D r | XLSX r
|
|
4772
|
+
DJVU r | INSP r/w | NEF r/w | RA r | XMP r/w/c
|
|
4773
|
+
DLL r | INSV r | NKA r | RAF r/w | ZIP r
|
|
4774
|
+
DNG r/w | INX r | NKSC r/w | RAM r |
|
|
4775
|
+
DOC r | ISO r | NRW r/w | RAR r |
|
|
4766
4776
|
|
|
4767
4777
|
Meta Information
|
|
4768
4778
|
----------------------+----------------------+---------------------
|
|
@@ -5664,7 +5674,7 @@ OPTIONS
|
|
|
5664
5674
|
character, hyphen, underline, colon or number sign). Use $$ to
|
|
5665
5675
|
represent a "$" symbol, and $/ for a newline. When the string
|
|
5666
5676
|
argument is used (ie. *STR*), a newline is added to the end of the
|
|
5667
|
-
string unless -p- is specified.
|
|
5677
|
+
string unless -p- is specified or the -b option is used.
|
|
5668
5678
|
|
|
5669
5679
|
Multiple -p options may be used. Lines beginning with "#[HEAD]" and
|
|
5670
5680
|
"#[TAIL]" are output before the first processed file and after the
|
|
@@ -5691,7 +5701,7 @@ OPTIONS
|
|
|
5691
5701
|
|
|
5692
5702
|
produces output like this:
|
|
5693
5703
|
|
|
5694
|
-
-- Generated by ExifTool 12.
|
|
5704
|
+
-- Generated by ExifTool 12.85 --
|
|
5695
5705
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5696
5706
|
(f/5.6, 1/60s, ISO 100)
|
|
5697
5707
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5932,11 +5942,12 @@ OPTIONS
|
|
|
5932
5942
|
a sequential number to be added to output file names, even if the
|
|
5933
5943
|
names are different. For %C, a copy number of zero is not omitted
|
|
5934
5944
|
as it is with %c. A leading '-' causes the number to be reset at
|
|
5935
|
-
the start of each new directory
|
|
5936
|
-
|
|
5937
|
-
the decimal place gives the
|
|
5938
|
-
|
|
5939
|
-
|
|
5945
|
+
the start of each new directory (in the original directory
|
|
5946
|
+
structure if the files are being moved), and '+' has no effect. The
|
|
5947
|
+
number before the decimal place gives the starting index, the
|
|
5948
|
+
number after the decimal place gives the field width. The following
|
|
5949
|
+
examples show the output filenames when used with the command
|
|
5950
|
+
"exiftool rose.jpg star.jpg jet.jpg ...":
|
|
5940
5951
|
|
|
5941
5952
|
-w %C%f.txt # 0rose.txt, 1star.txt, 2jet.txt
|
|
5942
5953
|
-w %f-%10C.txt # rose-10.txt, star-11.txt, jet-12.txt
|
|
@@ -6911,6 +6922,19 @@ OPTIONS
|
|
|
6911
6922
|
|
|
6912
6923
|
exiftool -tagsfromfile @ -keywords -api nodups a.jpg
|
|
6913
6924
|
|
|
6925
|
+
"SetTags"
|
|
6926
|
+
|
|
6927
|
+
Used to set tags in extracted images. With no arguments, copies all tags
|
|
6928
|
+
from the source file to the embedded image:
|
|
6929
|
+
|
|
6930
|
+
exiftool -p '${previewimage;SetTags}' -b a.arw > preview.jpg
|
|
6931
|
+
|
|
6932
|
+
Arguments may be added to copy or set specific tags. Arguments take
|
|
6933
|
+
exactly the same form as those on the command line when copying or
|
|
6934
|
+
writing tags, but without the leading dash. For example:
|
|
6935
|
+
|
|
6936
|
+
exiftool -p '${previewimage;SetTags("comment=test","title<filename")}' ...
|
|
6937
|
+
|
|
6914
6938
|
WINDOWS UNICODE FILE NAMES
|
|
6915
6939
|
In Windows, command-line arguments are specified using the current code
|
|
6916
6940
|
page and are recoded automatically to the system code page. This
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
# 2018/01/04 - PH Added IF to be sure position exists
|
|
12
12
|
# 2018/01/06 - PH Use DateFmt function instead of -d option
|
|
13
13
|
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
|
14
|
+
# 2024/04/11 - PH Use %f feature in GPSDateTime formatting
|
|
14
15
|
#
|
|
15
16
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
|
16
17
|
# 2) The -ee3 option is to extract the full track from video files.
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
#[IF] $gpslatitude $gpslongitude
|
|
33
34
|
#[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
|
|
34
35
|
#[BODY] <ele>$gpsaltitude#</ele>
|
|
35
|
-
#[BODY] <time>${gpsdatetime#;
|
|
36
|
+
#[BODY] <time>${gpsdatetime#;DateFmt("%Y-%m-%dT%H:%M:%S%fZ")}</time>
|
|
36
37
|
#[BODY]</trkpt>
|
|
37
38
|
#[TAIL]</trkseg>
|
|
38
39
|
#[TAIL]</trk>
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# 2018/01/04 - PH Added IF to be sure position exists
|
|
13
13
|
# 2018/01/06 - PH Use DateFmt function instead of -d option
|
|
14
14
|
# 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
|
|
15
|
+
# 2024/04/11 - PH Use %f feature in GPSDateTime formatting
|
|
15
16
|
#
|
|
16
17
|
# Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
|
|
17
18
|
# 2) The -ee3 option is to extract the full track from video files.
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
#[IF] $gpslatitude $gpslongitude
|
|
31
32
|
#[BODY]<wpt lat="$gpslatitude#" lon="$gpslongitude#">
|
|
32
33
|
#[BODY] <ele>$gpsaltitude#</ele>
|
|
33
|
-
#[BODY] <time>${gpsdatetime#;
|
|
34
|
+
#[BODY] <time>${gpsdatetime#;DateFmt("%Y-%m-%dT%H:%M:%S%fZ")}</time>
|
|
34
35
|
#[BODY] <name>$filename</name>
|
|
35
36
|
#[BODY] <link href="$directory/$filename"/>
|
|
36
37
|
#[BODY] <sym>Scenic Area</sym>
|
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
|
16
16
|
use Image::ExifTool::Exif;
|
|
17
17
|
use Image::ExifTool::PLIST;
|
|
18
18
|
|
|
19
|
-
$VERSION = '1.
|
|
19
|
+
$VERSION = '1.12';
|
|
20
20
|
|
|
21
21
|
sub ConvertPLIST($$);
|
|
22
22
|
|
|
@@ -128,6 +128,8 @@ sub ConvertPLIST($$);
|
|
|
128
128
|
1 => 'ProRAW',
|
|
129
129
|
2 => 'Portrait',
|
|
130
130
|
10 => 'Photo',
|
|
131
|
+
11 => 'Manual Focus', #forum16044
|
|
132
|
+
12 => 'Scene', #forum16044
|
|
131
133
|
},
|
|
132
134
|
},
|
|
133
135
|
0x0015 => { # (ImageGroupIdentifier, ref 2)
|
|
@@ -154,12 +156,17 @@ sub ConvertPLIST($$);
|
|
|
154
156
|
},
|
|
155
157
|
# 0x001b - (PhotosRenderEffect, ref 2)
|
|
156
158
|
# 0x001c - (BracketedCaptureSequenceNumber, ref 2)
|
|
159
|
+
# 0x001c - Flash, 2="On" (ref PH)
|
|
157
160
|
0x001d => { #2
|
|
158
161
|
Name => 'LuminanceNoiseAmplitude',
|
|
159
162
|
Writable => 'rational64s',
|
|
160
163
|
},
|
|
161
164
|
# 0x001e - (OriginatingAppID, ref 2)
|
|
162
|
-
|
|
165
|
+
0x001f => {
|
|
166
|
+
Name => 'PhotosAppFeatureFlags', #2
|
|
167
|
+
Notes => 'set if person or pet detected in image', #PH
|
|
168
|
+
Writable => 'int32s',
|
|
169
|
+
},
|
|
163
170
|
0x0020 => { # (ImageCaptureRequestIdentifier, ref 2)
|
|
164
171
|
Name => 'ImageCaptureRequestID',
|
|
165
172
|
Writable => 'string',
|
|
@@ -170,6 +177,17 @@ sub ConvertPLIST($$);
|
|
|
170
177
|
Writable => 'rational64s',
|
|
171
178
|
},
|
|
172
179
|
# 0x0022 - (ARKitPhoto, ref 2)
|
|
180
|
+
0x0023 => {
|
|
181
|
+
Name => 'AFPerformance', #2
|
|
182
|
+
Writable => 'int32s',
|
|
183
|
+
Count => 2,
|
|
184
|
+
Notes => q{
|
|
185
|
+
first number maybe related to focus distance, last number maybe related to
|
|
186
|
+
focus accuracy
|
|
187
|
+
},
|
|
188
|
+
PrintConv => 'my @a=split " ",$val; sprintf("%d %d %d",$a[0],$a[1]>>28,$a[1]&0xfffffff)',
|
|
189
|
+
PrintConvInv => 'my @a=split " ",$val; sprintf("%d %d",$a[0],($a[1]<<28)+$a[2])',
|
|
190
|
+
},
|
|
173
191
|
# 0x0023 - int32s[2] (AFPerformance, ref 2)
|
|
174
192
|
# 0x0024 - (AFExternalOffset, ref 2)
|
|
175
193
|
0x0025 => { # (StillImageSceneFlags, ref 2)
|
|
@@ -196,7 +214,21 @@ sub ConvertPLIST($$);
|
|
|
196
214
|
},
|
|
197
215
|
# 0x002C - (SpatialOverCaptureImageType, ref 2)
|
|
198
216
|
# 0x002D - (CCT, ref 2)
|
|
217
|
+
0x002d => { #PH
|
|
218
|
+
Name => 'ColorTemperature',
|
|
219
|
+
Writable => 'int32s',
|
|
220
|
+
},
|
|
199
221
|
# 0x002E - (ApsMode, ref 2)
|
|
222
|
+
0x002e => { #PH
|
|
223
|
+
Name => 'CameraType',
|
|
224
|
+
Writable => 'int32s',
|
|
225
|
+
PrintConv => {
|
|
226
|
+
0 => 'Back Wide Angle',
|
|
227
|
+
1 => 'Back Normal',
|
|
228
|
+
6 => 'Front',
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
# 0x002e - set to 0 for 0.5x (crop?) (ref PH)
|
|
200
232
|
0x002F => { #2
|
|
201
233
|
Name => 'FocusPosition',
|
|
202
234
|
Writable => 'int32s',
|
|
@@ -209,7 +241,9 @@ sub ConvertPLIST($$);
|
|
|
209
241
|
# 0x0032 - (IntelligentDistortionCorrection, ref 2)
|
|
210
242
|
# 0x0033 - (NRFStatus, ref 2)
|
|
211
243
|
# 0x0034 - (NRFInputBracketCount, ref 2)
|
|
244
|
+
# 0x0034 - 1 for flash on, otherwise doesn't exist (ref PH)
|
|
212
245
|
# 0x0035 - (NRFRegisteredBracketCount, ref 2)
|
|
246
|
+
# 0x0035 - 0 for flash on, otherwise doesn't exist (ref PH)
|
|
213
247
|
# 0x0036 - (LuxLevel, ref 2)
|
|
214
248
|
# 0x0037 - (LastFocusingMethod, ref 2)
|
|
215
249
|
0x0038 => { # (TimeOfFlightAssistedAutoFocusEstimatorMeasuredDepth, ref 2)
|
|
@@ -219,8 +253,10 @@ sub ConvertPLIST($$);
|
|
|
219
253
|
},
|
|
220
254
|
# 0x0039 - (TimeOfFlightAssistedAutoFocusEstimatorROIType, ref 2)
|
|
221
255
|
# 0x003A - (NRFSRLStatus, ref 2)
|
|
256
|
+
# 0x003a - non-zero if a person was in the image? (ref PH)
|
|
222
257
|
# 0x003B - (SystemPressureLevel, ref 2)
|
|
223
258
|
# 0x003C - (CameraControlsStatisticsMaster, ref 2)
|
|
259
|
+
# 0x003c - 4=rear cam, 1=front cam? (ref PH)
|
|
224
260
|
0x003D => { # (TimeOfFlightAssistedAutoFocusEstimatorSensorConfidence, ref 2)
|
|
225
261
|
Name => 'AFConfidence',
|
|
226
262
|
Writable => 'int32s',
|
|
@@ -237,6 +273,7 @@ sub ConvertPLIST($$);
|
|
|
237
273
|
},
|
|
238
274
|
0x0040 => { #2
|
|
239
275
|
Name => 'SemanticStyle',
|
|
276
|
+
Notes => '_1=Tone, _2=Warm, _3=1.Std,2.Vibrant,3.Rich Contrast,4.Warm,5.Cool', #PH
|
|
240
277
|
ValueConv => \&ConvertPLIST,
|
|
241
278
|
},
|
|
242
279
|
0x0041 => { # (SemanticStyleKey_RenderingVersion, ref 2)
|
|
@@ -249,20 +286,28 @@ sub ConvertPLIST($$);
|
|
|
249
286
|
},
|
|
250
287
|
# 0x0043 - (SemanticStyleKey_ToneBias, ref 2)
|
|
251
288
|
# 0x0044 - (SemanticStyleKey_WarmthBias, ref 2)
|
|
252
|
-
0x0045
|
|
253
|
-
Name => 'FrontFacingCamera',
|
|
254
|
-
Writable => 'int32s',
|
|
255
|
-
PrintConv => { 0 => 'No', 1 => 'Yes' }, #PH (NC)
|
|
256
|
-
},
|
|
289
|
+
# 0x0045 - (FrontFacing, ref 2) (not for iPhone15, ref PH)
|
|
257
290
|
# 0x0046 - (TimeOfFlightAssistedAutoFocusEstimatorContainsBlindSpot, ref 2)
|
|
258
291
|
# 0x0047 - (LeaderFollowerAutoFocusLeaderDepth, ref 2)
|
|
259
292
|
# 0x0048 - (LeaderFollowerAutoFocusLeaderFocusMethod, ref 2)
|
|
260
293
|
# 0x0049 - (LeaderFollowerAutoFocusLeaderConfidence, ref 2)
|
|
261
294
|
# 0x004A - (LeaderFollowerAutoFocusLeaderROIType, ref 2)
|
|
295
|
+
# 0x004a - 2=back normal, 4=back wide angle, 5=front (ref PH)
|
|
262
296
|
# 0x004B - (ZeroShutterLagFailureReason, ref 2)
|
|
263
297
|
# 0x004C - (TimeOfFlightAssistedAutoFocusEstimatorMSPMeasuredDepth, ref 2)
|
|
264
298
|
# 0x004D - (TimeOfFlightAssistedAutoFocusEstimatorMSPSensorConfidence, ref 2)
|
|
265
299
|
# 0x004E - (Camera, ref 2)
|
|
300
|
+
0x004e => {
|
|
301
|
+
Name => 'Apple_0x004e',
|
|
302
|
+
Unknown => 1,
|
|
303
|
+
# first number is 0 for front cam, 1 for either back cam (ref PH)
|
|
304
|
+
ValueConv => \&ConvertPLIST,
|
|
305
|
+
},
|
|
306
|
+
0x004f => {
|
|
307
|
+
Name => 'Apple_0x004f',
|
|
308
|
+
Unknown => 1,
|
|
309
|
+
ValueConv => \&ConvertPLIST,
|
|
310
|
+
}
|
|
266
311
|
);
|
|
267
312
|
|
|
268
313
|
# PLIST-format CMTime structure (ref PH)
|
|
@@ -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.56';
|
|
39
39
|
@ISA = qw(Exporter);
|
|
40
40
|
|
|
41
41
|
sub NumbersFirst($$);
|
|
@@ -672,7 +672,10 @@ Camero.
|
|
|
672
672
|
|
|
673
673
|
Use the API L<PrintCSV|../ExifTool.html#PrintCSV> option to output all timed
|
|
674
674
|
PDR data in CSV format at greatly increased speed and with much lower memory
|
|
675
|
-
usage.
|
|
675
|
+
usage. This option prints the numerical values for each channel in CSV
|
|
676
|
+
format, suitable for import into RaceRender. In this output, the gear
|
|
677
|
+
numbers for Neutral and Reverse are changed to -1 and -100 respectively for
|
|
678
|
+
compatibility with RaceRender.
|
|
676
679
|
},
|
|
677
680
|
PodTrailer => q{
|
|
678
681
|
~head1 NOTES
|
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '4.
|
|
91
|
+
$VERSION = '4.75';
|
|
92
92
|
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
|
@@ -2590,6 +2590,13 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
2590
2590
|
},
|
|
2591
2591
|
# 47 - related to aspect ratio: 100=4:3,70=1:1/16:9,90=3:2,60=4:5 (PH G12)
|
|
2592
2592
|
# (roughly image area in percent - 4:3=100%,1:1/16:9=75%,3:2=89%,4:5=60%)
|
|
2593
|
+
51 => { #forum16036 (EOS R models)
|
|
2594
|
+
Name => 'Clarity',
|
|
2595
|
+
PrintConv => {
|
|
2596
|
+
OTHER => sub { shift },
|
|
2597
|
+
0x7fff => 'n/a',
|
|
2598
|
+
},
|
|
2599
|
+
},
|
|
2593
2600
|
);
|
|
2594
2601
|
|
|
2595
2602
|
# focal length information (MakerNotes tag 0x02)
|
|
@@ -7031,7 +7038,7 @@ my %ciMaxFocal = (
|
|
|
7031
7038
|
},
|
|
7032
7039
|
},
|
|
7033
7040
|
2 => { #12
|
|
7034
|
-
Name => 'Sharpness',
|
|
7041
|
+
Name => 'Sharpness', # (unsharp mask strength for the EOS R5)
|
|
7035
7042
|
Notes => 'all models except the 20D and 350D',
|
|
7036
7043
|
Condition => '$$self{Model} !~ /\b(20D|350D|REBEL XT|Kiss Digital N)\b/',
|
|
7037
7044
|
Priority => 0, # (maybe not as reliable as other sharpness values)
|
|
@@ -7077,6 +7084,8 @@ my %ciMaxFocal = (
|
|
|
7077
7084
|
Name => 'WBShiftGM',
|
|
7078
7085
|
Notes => 'positive is a shift toward green',
|
|
7079
7086
|
},
|
|
7087
|
+
14 => 'UnsharpMaskFineness', #forum16036
|
|
7088
|
+
15 => 'UnsharpMaskThreshold', #forum16036
|
|
7080
7089
|
);
|
|
7081
7090
|
|
|
7082
7091
|
# Color balance information (MakerNotes tag 0xa9) (ref PH)
|
|
@@ -23,7 +23,7 @@ use vars qw($VERSION);
|
|
|
23
23
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
24
24
|
use Image::ExifTool::Canon;
|
|
25
25
|
|
|
26
|
-
$VERSION = '1.
|
|
26
|
+
$VERSION = '1.41';
|
|
27
27
|
|
|
28
28
|
sub ProcessCanonVRD($$;$);
|
|
29
29
|
sub WriteCanonVRD($$;$);
|
|
@@ -1020,6 +1020,18 @@ my $blankFooter = "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
|
|
|
1020
1020
|
# 0x10018 - fmt=8: 0
|
|
1021
1021
|
# 0x10020 - fmt=2: ''
|
|
1022
1022
|
0x10021 => 'CustomPictureStyle', # (string)
|
|
1023
|
+
0x10100 => { #forum15965
|
|
1024
|
+
Name => 'Rating',
|
|
1025
|
+
PrintConv => {
|
|
1026
|
+
0 => 'Unrated',
|
|
1027
|
+
1 => 1,
|
|
1028
|
+
2 => 2,
|
|
1029
|
+
3 => 3,
|
|
1030
|
+
4 => 4,
|
|
1031
|
+
5 => 5,
|
|
1032
|
+
4294967295 => 'Rejected',
|
|
1033
|
+
},
|
|
1034
|
+
},
|
|
1023
1035
|
0x10101 => {
|
|
1024
1036
|
Name => 'CheckMark',
|
|
1025
1037
|
PrintConv => {
|
|
@@ -1427,15 +1439,16 @@ my $blankFooter = "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
|
|
|
1427
1439
|
4 => 'CropY',
|
|
1428
1440
|
5 => 'CropWidth',
|
|
1429
1441
|
6 => 'CropHeight',
|
|
1442
|
+
7 => 'CropRotation',
|
|
1430
1443
|
8 => {
|
|
1431
|
-
Name => '
|
|
1444
|
+
Name => 'CropAngle',
|
|
1432
1445
|
Format => 'double',
|
|
1433
1446
|
PrintConv => 'sprintf("%.7g",$val)',
|
|
1434
1447
|
PrintConvInv => '$val',
|
|
1435
1448
|
},
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
#
|
|
1449
|
+
10 => 'CropOriginalWidth',
|
|
1450
|
+
11 => 'CropOriginalHeight',
|
|
1451
|
+
# 12 double - value: 100
|
|
1439
1452
|
);
|
|
1440
1453
|
|
|
1441
1454
|
# DR4 Stamp Tool tags (ref PH)
|
|
@@ -19,6 +19,7 @@ use Image::ExifTool::GPS;
|
|
|
19
19
|
$VERSION = '1.09';
|
|
20
20
|
|
|
21
21
|
sub ProcessDJIInfo($$$);
|
|
22
|
+
sub Process_djmd($$$);
|
|
22
23
|
|
|
23
24
|
my %convFloat2 = (
|
|
24
25
|
PrintConv => 'sprintf("%+.2f", $val)',
|
|
@@ -186,6 +187,34 @@ my %convFloat2 = (
|
|
|
186
187
|
},
|
|
187
188
|
);
|
|
188
189
|
|
|
190
|
+
# TODO - eventually add ability to decode this?
|
|
191
|
+
%Image::ExifTool::DJI::djmd = (
|
|
192
|
+
PROCESS_PROC => \&Process_djmd,
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
#------------------------------------------------------------------------------
|
|
196
|
+
# Process DJI djmd timed data from Action4 videos (ref PH)
|
|
197
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
|
198
|
+
# Returns: 1 on success
|
|
199
|
+
# TODO: work in progress
|
|
200
|
+
sub Process_djmd($$$)
|
|
201
|
+
{
|
|
202
|
+
my ($et, $dirInfo, $tagTbl) = @_;
|
|
203
|
+
my $dataPt = $$dirInfo{DataPt};
|
|
204
|
+
my ($pos, $bit, $val) = (6, 0, 0);
|
|
205
|
+
for (;;) {
|
|
206
|
+
my $v = Get8u($dataPt, $pos);
|
|
207
|
+
$val += ($v & 0x7f) << $bit;
|
|
208
|
+
last unless $v & 0x80;
|
|
209
|
+
++$pos;
|
|
210
|
+
$bit += 7;
|
|
211
|
+
}
|
|
212
|
+
$pos += 49;
|
|
213
|
+
my @a = unpack("x${pos}fxfxfxfx3fxfxf", $$dataPt);
|
|
214
|
+
print "$val @a\n";
|
|
215
|
+
return 1;
|
|
216
|
+
}
|
|
217
|
+
|
|
189
218
|
#------------------------------------------------------------------------------
|
|
190
219
|
# Process DJI info (ref PH)
|
|
191
220
|
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
|
@@ -15,7 +15,7 @@ use strict;
|
|
|
15
15
|
use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
17
17
|
|
|
18
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.07';
|
|
19
19
|
|
|
20
20
|
# DPX tags
|
|
21
21
|
%Image::ExifTool::DPX::Main = (
|
|
@@ -97,7 +97,7 @@ $VERSION = '1.06';
|
|
|
97
97
|
3 => 'Logarithmic',
|
|
98
98
|
4 => 'Unspecified video',
|
|
99
99
|
5 => 'SMPTE 274M',
|
|
100
|
-
6 => 'ITU-R
|
|
100
|
+
6 => 'ITU-R 709-4',
|
|
101
101
|
7 => 'ITU-R 601-5 system B or G (625)',
|
|
102
102
|
8 => 'ITU-R 601-5 system M (525)',
|
|
103
103
|
9 => 'Composite video (NTSC)',
|
|
@@ -124,7 +124,7 @@ $VERSION = '1.06';
|
|
|
124
124
|
1 => 'Printing density',
|
|
125
125
|
4 => 'Unspecified video',
|
|
126
126
|
5 => 'SMPTE 274M',
|
|
127
|
-
6 => 'ITU-R
|
|
127
|
+
6 => 'ITU-R 709-4',
|
|
128
128
|
7 => 'ITU-R 601-5 system B or G (625)',
|
|
129
129
|
8 => 'ITU-R 601-5 system M (525)',
|
|
130
130
|
9 => 'Composite video (NTSC)',
|
|
@@ -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.52';
|
|
61
61
|
|
|
62
62
|
sub ProcessExif($$$);
|
|
63
63
|
sub WriteExif($$$);
|
|
@@ -4342,7 +4342,7 @@ my %opcodeInfo = (
|
|
|
4342
4342
|
Count => -1,
|
|
4343
4343
|
Protected => 1,
|
|
4344
4344
|
},
|
|
4345
|
-
|
|
4345
|
+
0xcd3f => { # DNG 1.6
|
|
4346
4346
|
Name => 'RGBTables',
|
|
4347
4347
|
Writable => 'undef',
|
|
4348
4348
|
WriteGroup => 'IFD0',
|
|
@@ -4404,6 +4404,23 @@ my %opcodeInfo = (
|
|
|
4404
4404
|
WriteGroup => 'IFD0',
|
|
4405
4405
|
Protected => 1,
|
|
4406
4406
|
},
|
|
4407
|
+
0xcd49 => { # DNG 1.7.1
|
|
4408
|
+
Name => 'JXLDistance',
|
|
4409
|
+
Writable => 'float',
|
|
4410
|
+
WriteGroup => 'IFD0',
|
|
4411
|
+
},
|
|
4412
|
+
0xcd4a => { # DNG 1.7.1
|
|
4413
|
+
Name => 'JXLEffort',
|
|
4414
|
+
Notes => 'values range from 1=low to 9=high',
|
|
4415
|
+
Writable => 'int32u',
|
|
4416
|
+
WriteGroup => 'IFD0',
|
|
4417
|
+
},
|
|
4418
|
+
0xcd4b => { # DNG 1.7.1
|
|
4419
|
+
Name => 'JXLDecodeSpeed',
|
|
4420
|
+
Notes => 'values range from 1=slow to 4=fast',
|
|
4421
|
+
Writable => 'int32u',
|
|
4422
|
+
WriteGroup => 'IFD0',
|
|
4423
|
+
},
|
|
4407
4424
|
0xea1c => { #13
|
|
4408
4425
|
Name => 'Padding',
|
|
4409
4426
|
Binary => 1,
|