exiftool-vendored.exe 12.84.0 → 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 +25 -3
- package/bin/exiftool_files/README +46 -46
- package/bin/exiftool_files/build_geolocation +91 -18
- package/bin/exiftool_files/exiftool.pl +53 -51
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +11 -2
- package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +12 -8
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +28 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +19 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +64 -13
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +23 -9
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +3547 -3539
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +38 -9
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +1 -2
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +2 -0
- package/bin/exiftool_files/lib/Image/ExifTool.pm +15 -5
- package/bin/exiftool_files/lib/Image/ExifTool.pod +65 -57
- package/package.json +2 -2
|
@@ -7,12 +7,34 @@ RSS feed: https://exiftool.org/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 12.76. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
|
9
9
|
|
|
10
|
+
May 21, 2024 - Version 12.85
|
|
11
|
+
|
|
12
|
+
- Added GeolocationFeatureType tag
|
|
13
|
+
- Added read support for Nikon NKA and NXD adjustment files
|
|
14
|
+
- Added a new Apple:ImageCaptureType value, and changed another one
|
|
15
|
+
- Decode a few new Pentax tags
|
|
16
|
+
- Decode a few new Canon tags
|
|
17
|
+
- Decode some Ricoh Exif metadata from MOV videos
|
|
18
|
+
- Extract ID3 UserDefinedText and UserDefinedURL tags by name
|
|
19
|
+
- Make $advFmtSelf available for user-defined helper functions
|
|
20
|
+
- Documented API GeoDir pseudo option feature
|
|
21
|
+
- Tolerate pad byte at end of HIF file when writing
|
|
22
|
+
- Raised priority of FileName, BaseName, Directory and FileType tags so they
|
|
23
|
+
don't get hidden by other tags in the file which may have these names
|
|
24
|
+
- Changed decoding of QuickTime Rotation (irot) to correspond with
|
|
25
|
+
EXIF:Orientation (previously this was oddly reported as degrees of
|
|
26
|
+
counterclockwise rotation)
|
|
27
|
+
- Fixed a typo in the print conversion value for a couple of DPX tags
|
|
28
|
+
- Fixed problem writing some QuickTime tags with very large (> 16 MB) values
|
|
29
|
+
- Fixed bug in build_geolocation utility that resulted in incorrect population
|
|
30
|
+
numbers when run under ActivePerl
|
|
31
|
+
|
|
10
32
|
Apr. 23, 2024 - Version 12.84
|
|
11
33
|
|
|
12
34
|
- Added ability to read speed and accuracy_horizontal when geotagging from
|
|
13
35
|
OpenTracks GPX files
|
|
14
36
|
- Decode a few more Apple tags and a new CanonVRD tag
|
|
15
|
-
- Enhanced Geolocation
|
|
37
|
+
- Enhanced Geolocation feature with the ability to return any number of nearby
|
|
16
38
|
cities
|
|
17
39
|
- Fixed long-standing bug in Windows version that didn't properly handle dates
|
|
18
40
|
older than 50 years when writing FileModifyDate or FileCreateDate
|
|
@@ -21,8 +43,8 @@ Apr. 23, 2024 - Version 12.84
|
|
|
21
43
|
which have print conversions
|
|
22
44
|
- Fixed problem where a new subregion couldn't be added through a user-defined
|
|
23
45
|
Geolocation database entry
|
|
24
|
-
- Fixed problem where GeolocFeature option didn't work for some
|
|
25
|
-
user-generated custom database was used
|
|
46
|
+
- Fixed problem where the API GeolocFeature option didn't work for some
|
|
47
|
+
features if a user-generated custom database was used
|
|
26
48
|
|
|
27
49
|
Apr. 18, 2024 - Version 12.83
|
|
28
50
|
|
|
@@ -14,50 +14,50 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
|
14
14
|
|
|
15
15
|
File Types
|
|
16
16
|
------------+-------------+-------------+-------------+------------
|
|
17
|
-
360 r/w | DOCX r | ITC r |
|
|
18
|
-
3FR r | DPX r | J2C r |
|
|
19
|
-
3G2 r/w | DR4 r/w/c | JNG r/w |
|
|
20
|
-
3GP r/w | DSS r | JP2 r/w |
|
|
21
|
-
7Z r | DV r | JPEG r/w |
|
|
22
|
-
A r | DVB r/w | JSON r |
|
|
23
|
-
AA r | DVR-MS r | JXL r/w |
|
|
24
|
-
AAC r | DYLIB r | K25 r |
|
|
25
|
-
AAE r | EIP r | KDC r |
|
|
26
|
-
AAX r/w | EPS r/w | KEY r |
|
|
27
|
-
ACR r | EPUB r | LA r |
|
|
28
|
-
AFM r | ERF r/w | LFP r |
|
|
29
|
-
AI r/w | EXE r | LIF r |
|
|
30
|
-
AIFF r | EXIF r/w/c | LNK r |
|
|
31
|
-
APE r | EXR r | LRV r/w |
|
|
32
|
-
ARQ r/w | EXV r/w/c | M2TS r |
|
|
33
|
-
ARW r/w | F4A/V r/w | M4A/V r/w |
|
|
34
|
-
ASF r | FFF r/w | MACOS r |
|
|
35
|
-
AVI r | FITS r | MAX r |
|
|
36
|
-
AVIF r/w | FLA r | MEF r/w |
|
|
37
|
-
AZW r | FLAC r | MIE r/w/c |
|
|
38
|
-
BMP r | FLIF r/w | MIFF r |
|
|
39
|
-
BPG r | FLV r | MKA r |
|
|
40
|
-
BTF r | FPF r | MKS r |
|
|
41
|
-
C2PA r | FPX r | MKV r |
|
|
42
|
-
CHM r | GIF r/w | MNG r/w |
|
|
43
|
-
COS r | GLV r/w | MOBI r |
|
|
44
|
-
CR2 r/w | GPR r/w | MODD r |
|
|
45
|
-
CR3 r/w | GZ r | MOI r |
|
|
46
|
-
CRM r/w | HDP r/w | MOS r/w |
|
|
47
|
-
CRW r/w | HDR r | MOV r/w |
|
|
48
|
-
CS1 r/w | HEIC r/w | MP3 r |
|
|
49
|
-
CSV r | HEIF r/w | MP4 r/w |
|
|
50
|
-
CUR r | HTML r | MPC r |
|
|
51
|
-
CZI r | ICC r/w/c | MPG r |
|
|
52
|
-
DCM r | ICO r | MPO r/w |
|
|
53
|
-
DCP r/w | ICS r | MQV r/w |
|
|
54
|
-
DCR r | IDML r | MRC r |
|
|
55
|
-
DFONT r | IIQ r/w | MRW r/w |
|
|
56
|
-
DIVX r | IND r/w | MXF r |
|
|
57
|
-
DJVU r | INSP r/w | NEF r/w |
|
|
58
|
-
DLL r | INSV r |
|
|
59
|
-
DNG r/w | INX r |
|
|
60
|
-
DOC r | ISO r |
|
|
17
|
+
360 r/w | DOCX r | ITC r | NUMBERS r | RAW r/w
|
|
18
|
+
3FR r | DPX r | J2C r | NXD r | RIFF r
|
|
19
|
+
3G2 r/w | DR4 r/w/c | JNG r/w | O r | RSRC r
|
|
20
|
+
3GP r/w | DSS r | JP2 r/w | ODP r | RTF r
|
|
21
|
+
7Z r | DV r | JPEG r/w | ODS r | RW2 r/w
|
|
22
|
+
A r | DVB r/w | JSON r | ODT r | RWL r/w
|
|
23
|
+
AA r | DVR-MS r | JXL r/w | OFR r | RWZ r
|
|
24
|
+
AAC r | DYLIB r | K25 r | OGG r | RM r
|
|
25
|
+
AAE r | EIP r | KDC r | OGV r | SEQ r
|
|
26
|
+
AAX r/w | EPS r/w | KEY r | ONP r | SKETCH r
|
|
27
|
+
ACR r | EPUB r | LA r | OPUS r | SO r
|
|
28
|
+
AFM r | ERF r/w | LFP r | ORF r/w | SR2 r/w
|
|
29
|
+
AI r/w | EXE r | LIF r | ORI r/w | SRF r
|
|
30
|
+
AIFF r | EXIF r/w/c | LNK r | OTF r | SRW r/w
|
|
31
|
+
APE r | EXR r | LRV r/w | PAC r | SVG r
|
|
32
|
+
ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SWF r
|
|
33
|
+
ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | THM r/w
|
|
34
|
+
ASF r | FFF r/w | MACOS r | PCD r | TIFF r/w
|
|
35
|
+
AVI r | FITS r | MAX r | PCX r | TORRENT r
|
|
36
|
+
AVIF r/w | FLA r | MEF r/w | PDB r | TTC r
|
|
37
|
+
AZW r | FLAC r | MIE r/w/c | PDF r/w | TTF r
|
|
38
|
+
BMP r | FLIF r/w | MIFF r | PEF r/w | TXT r
|
|
39
|
+
BPG r | FLV r | MKA r | PFA r | VCF r
|
|
40
|
+
BTF r | FPF r | MKS r | PFB r | VNT r
|
|
41
|
+
C2PA r | FPX r | MKV r | PFM r | VRD r/w/c
|
|
42
|
+
CHM r | GIF r/w | MNG r/w | PGF r | VSD r
|
|
43
|
+
COS r | GLV r/w | MOBI r | PGM r/w | WAV r
|
|
44
|
+
CR2 r/w | GPR r/w | MODD r | PLIST r | WDP r/w
|
|
45
|
+
CR3 r/w | GZ r | MOI r | PICT r | WEBP r/w
|
|
46
|
+
CRM r/w | HDP r/w | MOS r/w | PMP r | WEBM r
|
|
47
|
+
CRW r/w | HDR r | MOV r/w | PNG r/w | WMA r
|
|
48
|
+
CS1 r/w | HEIC r/w | MP3 r | PPM r/w | WMV r
|
|
49
|
+
CSV r | HEIF r/w | MP4 r/w | PPT r | WPG r
|
|
50
|
+
CUR r | HTML r | MPC r | PPTX r | WTV r
|
|
51
|
+
CZI r | ICC r/w/c | MPG r | PS r/w | WV r
|
|
52
|
+
DCM r | ICO r | MPO r/w | PSB r/w | X3F r/w
|
|
53
|
+
DCP r/w | ICS r | MQV r/w | PSD r/w | XCF r
|
|
54
|
+
DCR r | IDML r | MRC r | PSP r | XISF r
|
|
55
|
+
DFONT r | IIQ r/w | MRW r/w | QTIF r/w | XLS r
|
|
56
|
+
DIVX r | IND r/w | MXF r | R3D r | XLSX r
|
|
57
|
+
DJVU r | INSP r/w | NEF r/w | RA r | XMP r/w/c
|
|
58
|
+
DLL r | INSV r | NKA r | RAF r/w | ZIP r
|
|
59
|
+
DNG r/w | INX r | NKSC r/w | RAM r |
|
|
60
|
+
DOC r | ISO r | NRW r/w | RAR r |
|
|
61
61
|
|
|
62
62
|
Meta Information
|
|
63
63
|
----------------------+----------------------+---------------------
|
|
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
|
|
|
109
109
|
terminal window to extract and run ExifTool:
|
|
110
110
|
|
|
111
111
|
cd ~/Desktop
|
|
112
|
-
gzip -dc Image-ExifTool-12.
|
|
113
|
-
cd Image-ExifTool-12.
|
|
112
|
+
gzip -dc Image-ExifTool-12.85.tar.gz | tar -xf -
|
|
113
|
+
cd Image-ExifTool-12.85
|
|
114
114
|
./exiftool t/images/ExifTool.jpg
|
|
115
115
|
|
|
116
116
|
Note: These commands extract meta information from one of the test images.
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
# 2024-04-15 - PH Clean up and add options for public release
|
|
13
13
|
# 2024-04-22 - PH Increased number of possible feature codes from
|
|
14
14
|
# 32 to 64. Convert backslashes in directory names
|
|
15
|
+
# 2024-04-24 - PH Fixed problem with population exponent when run
|
|
16
|
+
# under ActivePerl
|
|
17
|
+
# 2024-04-29 - PH Added feature types and default to db v1.03
|
|
15
18
|
#
|
|
16
19
|
# Notes: Requires these files from https://download.geonames.org/export/
|
|
17
20
|
#
|
|
@@ -19,6 +22,7 @@
|
|
|
19
22
|
# countryInfo.txt
|
|
20
23
|
# admin1CodesASCII.txt
|
|
21
24
|
# admin2Codes.txt
|
|
25
|
+
# featureCodes_XX.txt (optional)
|
|
22
26
|
# alternateNamesV2.txt (optional)
|
|
23
27
|
#
|
|
24
28
|
# Output datbase format (Geolocation.dat):
|
|
@@ -54,7 +58,7 @@
|
|
|
54
58
|
# 1. Time zone name, terminated by newline
|
|
55
59
|
# "\0\0\0\0\x05" (feature codes added in v1.03)
|
|
56
60
|
# Feature codes:
|
|
57
|
-
# 1. Feature code,
|
|
61
|
+
# 1. Feature code, optional space-followed-by-feature-name, then newline
|
|
58
62
|
# "\0\0\0\0\0"
|
|
59
63
|
#
|
|
60
64
|
# Feature Codes v1.02: (see http://www.geonames.org/export/codes.html#P for descriptions)
|
|
@@ -68,12 +72,12 @@
|
|
|
68
72
|
|
|
69
73
|
use strict;
|
|
70
74
|
|
|
71
|
-
my $dbVer = '1.
|
|
72
|
-
|
|
75
|
+
my $dbVer = '1.03'; # default output database version
|
|
73
76
|
my $dbFile = 'allCountries.txt'; # default database file
|
|
74
77
|
my $countryFile = 'countryInfo.txt'; # mandatory country names file
|
|
75
78
|
my $regionFile = 'admin1CodesASCII.txt'; # mandatory region names file
|
|
76
79
|
my $admin2File = 'admin2Codes.txt'; # mandatory subregion names file
|
|
80
|
+
my $featureFile = 'featureCodes_en.txt'; # optional feature names file
|
|
77
81
|
my $altNamesFile = 'alternateNamesV2.txt'; # optional alternate names file
|
|
78
82
|
my $outFile = 'Geolocation.dat'; # output ExifTool database file
|
|
79
83
|
my $outAltNames = 'AltNames.dat'; # output alternate names file
|
|
@@ -103,6 +107,7 @@ my @fc103 = qw(
|
|
|
103
107
|
my $i = 0;
|
|
104
108
|
my @featureCodes = $dbVer eq '1.02' ? @fc102 : @fc103;
|
|
105
109
|
my %featureCodes = map { $_ => $i++ } @featureCodes;
|
|
110
|
+
my %featureNames;
|
|
106
111
|
|
|
107
112
|
my ($dbfile, @dbfiles, $outDir, $verbose, $noLang, %needRgn);
|
|
108
113
|
my %optArgs = ( p => 1, c => 1, cp => 1, l => 1, o => 1, ver => 1 );
|
|
@@ -240,12 +245,13 @@ Options:
|
|
|
240
245
|
-h - Show this help.
|
|
241
246
|
|
|
242
247
|
Input files (download from https://download.geonames.org/export/dump/):
|
|
243
|
-
|
|
248
|
+
$dbFile - default database file (smaller files with names
|
|
244
249
|
like "cities###.txt" may be specified instead)
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
250
|
+
$countryFile - mandatory country names file
|
|
251
|
+
$regionFile - mandatory region names file
|
|
252
|
+
$admin2File - mandatory subregion names file
|
|
253
|
+
$featureFile - optional feature codes file
|
|
254
|
+
$altNamesFile - optional alternate names file (must exist to
|
|
249
255
|
to generate $outAltNames and $geoLang files)
|
|
250
256
|
|
|
251
257
|
Output files:
|
|
@@ -374,7 +380,7 @@ my @supportedLangs = qw(cs de en-ca en-gb es fi fr it ja ko nl pl ru sk sv tr zh
|
|
|
374
380
|
|
|
375
381
|
# supported country-specific languages
|
|
376
382
|
my %ccLang = ( TW => 'zh', CN => 'zh', CA => 'en', GB => 'en' );
|
|
377
|
-
my (%lang, %haveCountry, %cityFlags, %rgnFlags, %subFlags, %ccFlags, %flags);
|
|
383
|
+
my (%lang, %featureLang, %haveCountry, %cityFlags, %rgnFlags, %subFlags, %ccFlags, %flags);
|
|
378
384
|
my (%haveRegion, %haveSubRgn, $filesize, $percent);
|
|
379
385
|
|
|
380
386
|
sub GetFileSize($)
|
|
@@ -386,7 +392,8 @@ sub GetFileSize($)
|
|
|
386
392
|
return $size;
|
|
387
393
|
}
|
|
388
394
|
|
|
389
|
-
# pre-scan database to determine which countries, regions
|
|
395
|
+
# pre-scan database to determine which countries, regions subregions and
|
|
396
|
+
# feature codes we will be using
|
|
390
397
|
foreach $dbfile (@dbfiles) {
|
|
391
398
|
my $database = $$dbfile{file};
|
|
392
399
|
my $upgraded;
|
|
@@ -422,7 +429,7 @@ foreach $dbfile (@dbfiles) {
|
|
|
422
429
|
}
|
|
423
430
|
# keep regardless of population
|
|
424
431
|
if ($needRgn{$cc} and $$dbfile{keep}{"$cc$rgn"}) {
|
|
425
|
-
$keep = $$dbfile{keep}{"$cc$rgn"}{$code}
|
|
432
|
+
$keep = $$dbfile{keep}{"$cc$rgn"}{$code};
|
|
426
433
|
} elsif ($$dbfile{keep}{$cc}) {
|
|
427
434
|
$keep = $$dbfile{keep}{$cc}{$code};
|
|
428
435
|
} else {
|
|
@@ -462,9 +469,27 @@ foreach $dbfile (@dbfiles) {
|
|
|
462
469
|
warn "Some feature codes not supported by version 1.02, writing as 1.03 instead.\n" if $upgraded;
|
|
463
470
|
}
|
|
464
471
|
|
|
472
|
+
# read feature names
|
|
473
|
+
if (open INFILE, '<', "$dbdir/$featureFile") {
|
|
474
|
+
print "Reading $dbdir/$featureFile\n";
|
|
475
|
+
while (<INFILE>) {
|
|
476
|
+
my @items = split /\t/;
|
|
477
|
+
$items[0] =~ s/^.\.//; # remove feature group and "." separator
|
|
478
|
+
next unless $featureCodes{$items[0]};
|
|
479
|
+
my $name = ucfirst $items[1];
|
|
480
|
+
$name =~ s/ ([a-z])/ \U$1/g;
|
|
481
|
+
$featureNames{$items[0]} = $name;
|
|
482
|
+
}
|
|
483
|
+
close INFILE;
|
|
484
|
+
} else {
|
|
485
|
+
print "Not found: $dbdir/$featureFile\n";
|
|
486
|
+
print "--> Not storing feature type names\n";
|
|
487
|
+
}
|
|
488
|
+
|
|
465
489
|
# read country names
|
|
466
490
|
$i = 0;
|
|
467
491
|
open INFILE, '<', "$dbdir/$countryFile" or die "Error opening $dbdir/$countryFile\n";
|
|
492
|
+
print "Reading $dbdir/$countryFile\n";
|
|
468
493
|
while (<INFILE>) {
|
|
469
494
|
next if /^#/;
|
|
470
495
|
my @items = split /\t/;
|
|
@@ -479,6 +504,7 @@ die "Too many countries!\n" if $i > 0x100; # (no default 0 entry)
|
|
|
479
504
|
# read region (admin1) names
|
|
480
505
|
$i = 0;
|
|
481
506
|
open REGION, '<', "$dbdir/$regionFile" or die "Error opening $dbdir/$regionFile\n";
|
|
507
|
+
print "Reading $dbdir/$regionFile\n";
|
|
482
508
|
while (<REGION>) {
|
|
483
509
|
chomp;
|
|
484
510
|
my @items = split /\t/;
|
|
@@ -494,6 +520,7 @@ die "Too many regions!\n" if $i > 0x0fff; # (account for default 0 entry)
|
|
|
494
520
|
# read subregion (admin2) names
|
|
495
521
|
$i = 0;
|
|
496
522
|
open ADMIN2, '<', "$dbdir/$admin2File" or die "Error opening $dbdir/$admin2File\n";
|
|
523
|
+
print "Reading $dbdir/$admin2File\n";
|
|
497
524
|
while (<ADMIN2>) {
|
|
498
525
|
chomp;
|
|
499
526
|
my @items = split /\t/;
|
|
@@ -544,8 +571,35 @@ if (not $noLang and open INFILE, '<', "$dbdir/$altNamesFile") {
|
|
|
544
571
|
}
|
|
545
572
|
print "\b\b\b\bDone.\n";
|
|
546
573
|
close INFILE;
|
|
574
|
+
# read alternate feature names
|
|
575
|
+
if (%featureNames) {
|
|
576
|
+
my $lng;
|
|
577
|
+
foreach $lng (@languages) {
|
|
578
|
+
next if $lng eq 'en' or not $languages{$lng};
|
|
579
|
+
my $file = "$dbdir/$featureFile";
|
|
580
|
+
$file =~ s/_en\./_$lng./ or next;
|
|
581
|
+
next unless open INFILE, '<', $file;
|
|
582
|
+
print "Reading $file\n";
|
|
583
|
+
while (<INFILE>) {
|
|
584
|
+
my @items = split /\t/;
|
|
585
|
+
$items[0] =~ s/^.\.//; # remove feature group and "." separator
|
|
586
|
+
next unless $featureNames{$items[0]};
|
|
587
|
+
utf8::decode($items[1]);
|
|
588
|
+
my $name = ucfirst $items[1];
|
|
589
|
+
$name =~ s/ (.)/ \U$1/g;
|
|
590
|
+
# change $name back to byte string
|
|
591
|
+
if ($] >= 5.006 and (eval { require Encode; Encode::is_utf8($name) } or $@)) {
|
|
592
|
+
$name = $@ ? pack('C*',unpack($] < 5.010000 ? 'U0C*' : 'C0C*',$name)) : Encode::encode('utf8',$name);
|
|
593
|
+
}
|
|
594
|
+
next if $name eq $featureNames{$items[0]};
|
|
595
|
+
$featureLang{$lng}{$items[0]} = $name;
|
|
596
|
+
}
|
|
597
|
+
close INFILE;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
547
600
|
} else {
|
|
548
|
-
print "Not
|
|
601
|
+
print "Not found: $dbdir/$altNamesFile\n--> " unless $noLang;
|
|
602
|
+
print "Not writing alternate languages\n";
|
|
549
603
|
$noLang = 1;
|
|
550
604
|
}
|
|
551
605
|
|
|
@@ -554,7 +608,7 @@ my (%coords, %langLookups);
|
|
|
554
608
|
foreach $dbfile (@dbfiles) {
|
|
555
609
|
my $database = $$dbfile{file};
|
|
556
610
|
|
|
557
|
-
print "Processing
|
|
611
|
+
print "Processing database entries... 0%";
|
|
558
612
|
my $i = 0;
|
|
559
613
|
my $num = scalar @{$$dbfile{kept}};
|
|
560
614
|
|
|
@@ -623,6 +677,7 @@ foreach (sort { $a cmp $b } keys %coords) {
|
|
|
623
677
|
my $items = $coords{$_};
|
|
624
678
|
# @$items=(0.lat,1.lon,2.city,3.cc,4.rgn,5.admin2,6.population,7.timezone,8.feature code,9.alt names)
|
|
625
679
|
my $iCC = $orderCC{$$items[3]};
|
|
680
|
+
defined $iCC or warn("Unknown country code $$items[3]\n"), next;
|
|
626
681
|
my $iRgn = $orderRgn{"$$items[3]$$items[4]"} || 0;
|
|
627
682
|
my $iSub = $orderSub{"$$items[3]$$items[4].$$items[5]"} || 0;
|
|
628
683
|
my $tn = $tz{$$items[7]};
|
|
@@ -631,9 +686,12 @@ foreach (sort { $a cmp $b } keys %coords) {
|
|
|
631
686
|
$tn = $tz{$$items[7]} = $tzNum++;
|
|
632
687
|
}
|
|
633
688
|
# convert population to our binary format
|
|
634
|
-
|
|
689
|
+
# Note: format in ActivePerl is "3.1e+004", but "3.1+04" in other Perls,
|
|
690
|
+
# but other Perls will round 34500 to "3.4e+04", so add 1 to get "3.5e+04"
|
|
691
|
+
$$items[6] += 1 if $$items[6] > 100 and not $$items[6] % 10;
|
|
692
|
+
my $pop = sprintf('%.1e',$$items[6]);
|
|
635
693
|
# pack CC, population and region index into a 32-bit integer
|
|
636
|
-
my $code = ($iCC << 24) | (substr($pop,
|
|
694
|
+
my $code = ($iCC << 24) | (substr($pop,-1,1)<<20) | (substr($pop,0,1)<<16) | (substr($pop,2,1)<<12) | $iRgn;
|
|
637
695
|
$fcodes{$$items[8]} = ($fcodes{$$items[8]} || 0) + 1;
|
|
638
696
|
my $fc = $featureCodes{$$items[8]} || 0;
|
|
639
697
|
# store high bit of timezone index
|
|
@@ -761,8 +819,12 @@ print OUTFILE $_,"\n" foreach @tz;
|
|
|
761
819
|
|
|
762
820
|
print OUTFILE "\0\0\0\0\x05\n"; # section terminator
|
|
763
821
|
|
|
764
|
-
# write feature codes
|
|
765
|
-
|
|
822
|
+
# write feature codes and optional names
|
|
823
|
+
foreach (@featureCodes) {
|
|
824
|
+
print OUTFILE $_;
|
|
825
|
+
print OUTFILE ' ', $featureNames{$_} if $featureNames{$_};
|
|
826
|
+
print OUTFILE "\n";
|
|
827
|
+
}
|
|
766
828
|
|
|
767
829
|
# write terminator and close Geolocation.dat
|
|
768
830
|
print OUTFILE "\0\0\0\0\0\n"; # file terminator
|
|
@@ -774,7 +836,9 @@ my $langSize = 0;
|
|
|
774
836
|
my $langDir = "$outDir/$geoLang";
|
|
775
837
|
# delete existing languages
|
|
776
838
|
unlink <"$langDir/*.pm">;
|
|
777
|
-
|
|
839
|
+
if ($noLang) {
|
|
840
|
+
rmdir $langDir;
|
|
841
|
+
} else {
|
|
778
842
|
my $n = scalar(keys %langLookups);
|
|
779
843
|
print "Writing $n language files to $outDir/$geoLang...\n";
|
|
780
844
|
mkdir $langDir, 0777;
|
|
@@ -785,6 +849,7 @@ unless ($noLang) {
|
|
|
785
849
|
my $lkup = $langLookups{$lng};
|
|
786
850
|
my $file = "$myLng.pm";
|
|
787
851
|
open OUT, ">$langDir/$file" or die "Error creating $file\n";
|
|
852
|
+
binmode OUT;
|
|
788
853
|
print OUT "# Geolocation language translations for $myLng\n";
|
|
789
854
|
print OUT "#\n# Based on Creative Commons database from geonames.org\n\n";
|
|
790
855
|
print OUT "%Image::ExifTool::GeoLang::${myLng}::Translate = (\n";
|
|
@@ -842,6 +907,14 @@ unless ($noLang) {
|
|
|
842
907
|
}
|
|
843
908
|
}
|
|
844
909
|
}
|
|
910
|
+
if ($featureLang{$lng}) {
|
|
911
|
+
print OUT "\n\t# feature types\n";
|
|
912
|
+
foreach (sort keys %{$featureLang{$lng}}) {
|
|
913
|
+
my $ftype = $featureLang{$lng}{$_};
|
|
914
|
+
$ftype =~ s/'/\\'/g;
|
|
915
|
+
print OUT "\t$_ => '$ftype',\n"
|
|
916
|
+
}
|
|
917
|
+
}
|
|
845
918
|
print OUT ");\n\n1; #end\n";
|
|
846
919
|
$langSize += tell OUT;
|
|
847
920
|
close OUT;
|
|
@@ -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;
|
|
@@ -4728,50 +4729,50 @@ DESCRIPTION
|
|
|
4728
4729
|
|
|
4729
4730
|
File Types
|
|
4730
4731
|
------------+-------------+-------------+-------------+------------
|
|
4731
|
-
360 r/w | DOCX r | ITC r |
|
|
4732
|
-
3FR r | DPX r | J2C r |
|
|
4733
|
-
3G2 r/w | DR4 r/w/c | JNG r/w |
|
|
4734
|
-
3GP r/w | DSS r | JP2 r/w |
|
|
4735
|
-
7Z r | DV r | JPEG r/w |
|
|
4736
|
-
A r | DVB r/w | JSON r |
|
|
4737
|
-
AA r | DVR-MS r | JXL r/w |
|
|
4738
|
-
AAC r | DYLIB r | K25 r |
|
|
4739
|
-
AAE r | EIP r | KDC r |
|
|
4740
|
-
AAX r/w | EPS r/w | KEY r |
|
|
4741
|
-
ACR r | EPUB r | LA r |
|
|
4742
|
-
AFM r | ERF r/w | LFP r |
|
|
4743
|
-
AI r/w | EXE r | LIF r |
|
|
4744
|
-
AIFF r | EXIF r/w/c | LNK r |
|
|
4745
|
-
APE r | EXR r | LRV r/w |
|
|
4746
|
-
ARQ r/w | EXV r/w/c | M2TS r |
|
|
4747
|
-
ARW r/w | F4A/V r/w | M4A/V r/w |
|
|
4748
|
-
ASF r | FFF r/w | MACOS r |
|
|
4749
|
-
AVI r | FITS r | MAX r |
|
|
4750
|
-
AVIF r/w | FLA r | MEF r/w |
|
|
4751
|
-
AZW r | FLAC r | MIE r/w/c |
|
|
4752
|
-
BMP r | FLIF r/w | MIFF r |
|
|
4753
|
-
BPG r | FLV r | MKA r |
|
|
4754
|
-
BTF r | FPF r | MKS r |
|
|
4755
|
-
C2PA r | FPX r | MKV r |
|
|
4756
|
-
CHM r | GIF r/w | MNG r/w |
|
|
4757
|
-
COS r | GLV r/w | MOBI r |
|
|
4758
|
-
CR2 r/w | GPR r/w | MODD r |
|
|
4759
|
-
CR3 r/w | GZ r | MOI r |
|
|
4760
|
-
CRM r/w | HDP r/w | MOS r/w |
|
|
4761
|
-
CRW r/w | HDR r | MOV r/w |
|
|
4762
|
-
CS1 r/w | HEIC r/w | MP3 r |
|
|
4763
|
-
CSV r | HEIF r/w | MP4 r/w |
|
|
4764
|
-
CUR r | HTML r | MPC r |
|
|
4765
|
-
CZI r | ICC r/w/c | MPG r |
|
|
4766
|
-
DCM r | ICO r | MPO r/w |
|
|
4767
|
-
DCP r/w | ICS r | MQV r/w |
|
|
4768
|
-
DCR r | IDML r | MRC r |
|
|
4769
|
-
DFONT r | IIQ r/w | MRW r/w |
|
|
4770
|
-
DIVX r | IND r/w | MXF r |
|
|
4771
|
-
DJVU r | INSP r/w | NEF r/w |
|
|
4772
|
-
DLL r | INSV r |
|
|
4773
|
-
DNG r/w | INX r |
|
|
4774
|
-
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 |
|
|
4775
4776
|
|
|
4776
4777
|
Meta Information
|
|
4777
4778
|
----------------------+----------------------+---------------------
|
|
@@ -5700,7 +5701,7 @@ OPTIONS
|
|
|
5700
5701
|
|
|
5701
5702
|
produces output like this:
|
|
5702
5703
|
|
|
5703
|
-
-- Generated by ExifTool 12.
|
|
5704
|
+
-- Generated by ExifTool 12.85 --
|
|
5704
5705
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5705
5706
|
(f/5.6, 1/60s, ISO 100)
|
|
5706
5707
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5941,11 +5942,12 @@ OPTIONS
|
|
|
5941
5942
|
a sequential number to be added to output file names, even if the
|
|
5942
5943
|
names are different. For %C, a copy number of zero is not omitted
|
|
5943
5944
|
as it is with %c. A leading '-' causes the number to be reset at
|
|
5944
|
-
the start of each new directory
|
|
5945
|
-
|
|
5946
|
-
the decimal place gives the
|
|
5947
|
-
|
|
5948
|
-
|
|
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 ...":
|
|
5949
5951
|
|
|
5950
5952
|
-w %C%f.txt # 0rose.txt, 1star.txt, 2jet.txt
|
|
5951
5953
|
-w %f-%10C.txt # rose-10.txt, star-11.txt, jet-12.txt
|
|
@@ -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)
|
|
@@ -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)',
|
|
Binary file
|