exiftool-vendored.exe 12.99.0 → 13.0.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/exiftool.pl +17 -8
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +4 -3
- package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +69 -7
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +11 -8
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +33 -18
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +11 -1
- package/bin/exiftool_files/lib/Image/ExifTool.pm +4 -4
- package/bin/exiftool_files/readme_windows.txt +8 -13
- package/bin/exiftool_files/windows_exiftool.txt +9 -5
- package/package.json +6 -6
|
@@ -11,7 +11,7 @@ use strict;
|
|
|
11
11
|
use warnings;
|
|
12
12
|
require 5.004;
|
|
13
13
|
|
|
14
|
-
my $version = '
|
|
14
|
+
my $version = '13.00';
|
|
15
15
|
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
17
17
|
my $exePath;
|
|
@@ -2375,7 +2375,7 @@ sub GetImageInfo($$)
|
|
|
2375
2375
|
$done2{$t2} = 1;
|
|
2376
2376
|
}
|
|
2377
2377
|
my $str = '';
|
|
2378
|
-
|
|
2378
|
+
$v and ($same or $v > 1) and $str = " ($same same tag" . ($same==1 ? '' : 's') . ')';
|
|
2379
2379
|
if (not $allGroup) {
|
|
2380
2380
|
print $fp "---- $g2 ----$str\n" if $g2 and ($str or @diffs);
|
|
2381
2381
|
} elsif ($str and $g2) {
|
|
@@ -2415,12 +2415,12 @@ sub GetImageInfo($$)
|
|
|
2415
2415
|
$grp .= ' ' x (15 - length($grp)) if length($grp) < 15 and $outFormat < 2;
|
|
2416
2416
|
push @diffs, sprintf "< %s %s%s: %s\n", $grp, $name, $pad, Printable($val);
|
|
2417
2417
|
if (defined $val2) {
|
|
2418
|
-
$
|
|
2418
|
+
$grp = ' ' x length($grp), $name = ' ' x $len if $v < 3;
|
|
2419
2419
|
push @diffs, sprintf "> %s %s%s: %s\n", $grp, $name, $pad, Printable($val2);
|
|
2420
2420
|
}
|
|
2421
2421
|
} else {
|
|
2422
2422
|
push @diffs, sprintf "< %s%s: %s\n", $name, $pad, Printable($val);
|
|
2423
|
-
$
|
|
2423
|
+
$name = ' ' x $len if $v < 3;
|
|
2424
2424
|
push @diffs, sprintf "> %s%s %s\n", $name, $pad, Printable($val2) if defined $val2;
|
|
2425
2425
|
}
|
|
2426
2426
|
}
|
|
@@ -3635,7 +3635,7 @@ sub FormatJSON($$$;$)
|
|
|
3635
3635
|
print $fp $bra;
|
|
3636
3636
|
foreach (@$val) {
|
|
3637
3637
|
print $fp ',' if $comma;
|
|
3638
|
-
FormatJSON($fp, $_, $ind);
|
|
3638
|
+
FormatJSON($fp, $_, $ind, $quote);
|
|
3639
3639
|
$comma = 1,
|
|
3640
3640
|
}
|
|
3641
3641
|
print $fp $ket,
|
|
@@ -3651,7 +3651,7 @@ sub FormatJSON($$$;$)
|
|
|
3651
3651
|
if ($showTagID and $_ eq 'id' and $showTagID eq 'H' and $$val{$_} =~ /^\d+\.\d+$/) {
|
|
3652
3652
|
print $fp qq{"$$val{$_}"};
|
|
3653
3653
|
} else {
|
|
3654
|
-
FormatJSON($fp, $$val{$_}, "$ind ");
|
|
3654
|
+
FormatJSON($fp, $$val{$_}, "$ind ", $quote);
|
|
3655
3655
|
}
|
|
3656
3656
|
$comma = 1,
|
|
3657
3657
|
}
|
|
@@ -3817,7 +3817,14 @@ sub Printable($)
|
|
|
3817
3817
|
$val = '(Binary data '.length($$val).' bytes)';
|
|
3818
3818
|
}
|
|
3819
3819
|
}
|
|
3820
|
-
$
|
|
3820
|
+
if ($escapeC) {
|
|
3821
|
+
$val =~ s/([\0-\x1f\\\x7f])/$escC{$1} || sprintf('\x%.2x', ord $1)/eg;
|
|
3822
|
+
} else {
|
|
3823
|
+
# translate unprintable chars in value and remove trailing spaces
|
|
3824
|
+
$val =~ tr/\x01-\x1f\x7f/./;
|
|
3825
|
+
$val =~ s/\x00//g;
|
|
3826
|
+
$val =~ s/\s+$//;
|
|
3827
|
+
}
|
|
3821
3828
|
return $val;
|
|
3822
3829
|
}
|
|
3823
3830
|
|
|
@@ -4819,7 +4826,9 @@ sub Help()
|
|
|
4819
4826
|
my $docFile = "$Image::ExifTool::exeDir/exiftool_files/windows_exiftool.txt";
|
|
4820
4827
|
# try backslashes first if it seems we may be running in cmd.exe
|
|
4821
4828
|
$docFile =~ tr/\//\\/ if $ENV{ComSpec} or $docFile =~ /\\/;
|
|
4822
|
-
|
|
4829
|
+
# trap warnings and run in eval to avoid Perl bug which gives "Can't spawn" warning on ^C
|
|
4830
|
+
local $SIG{'__WARN__'} = sub { $evalWarning = $_[0] };
|
|
4831
|
+
eval { system(qq{more < "$docFile"}) };
|
|
4823
4832
|
}
|
|
4824
4833
|
|
|
4825
4834
|
# end
|
|
@@ -2931,7 +2931,7 @@ my %opcodeInfo = (
|
|
|
2931
2931
|
0xa433 => { Name => 'LensMake', Writable => 'string' }, #24
|
|
2932
2932
|
0xa434 => { Name => 'LensModel', Writable => 'string' }, #24
|
|
2933
2933
|
0xa435 => { Name => 'LensSerialNumber', Writable => 'string' }, #24
|
|
2934
|
-
0xa436 => { Name => '
|
|
2934
|
+
0xa436 => { Name => 'ImageTitle', Writable => 'string' }, #33
|
|
2935
2935
|
0xa437 => { Name => 'Photographer', Writable => 'string' }, #33
|
|
2936
2936
|
0xa438 => { Name => 'ImageEditor', Writable => 'string' }, #33
|
|
2937
2937
|
0xa439 => { Name => 'CameraFirmware', Writable => 'string' }, #33
|
|
Binary file
|
|
@@ -31,7 +31,7 @@ use vars qw($VERSION);
|
|
|
31
31
|
use Image::ExifTool qw(:Public);
|
|
32
32
|
use Image::ExifTool::GPS;
|
|
33
33
|
|
|
34
|
-
$VERSION = '1.
|
|
34
|
+
$VERSION = '1.79';
|
|
35
35
|
|
|
36
36
|
sub JITTER() { return 2 } # maximum time jitter
|
|
37
37
|
|
|
@@ -1127,8 +1127,9 @@ sub SetGeoValues($$;$)
|
|
|
1127
1127
|
$iExt = $i1;
|
|
1128
1128
|
}
|
|
1129
1129
|
if (abs($time - $tn) > $geoMaxExtSecs) {
|
|
1130
|
-
$err or $err = 'Time is too far from nearest GPS fix'
|
|
1131
|
-
$et->VPrint(2, ' Nearest fix: ', PrintFixTime($tn),
|
|
1130
|
+
$err or $err = 'Time is too far from nearest GPS fix';
|
|
1131
|
+
$et->VPrint(2, ' Nearest fix: ', PrintFixTime($tn), ' (',
|
|
1132
|
+
int(abs $time-$tn), " sec away)\n") if $verbose > 2;
|
|
1132
1133
|
$fix = { } if $$geotag{DateTimeOnly};
|
|
1133
1134
|
} else {
|
|
1134
1135
|
$fix = $$points{$tn};
|
|
@@ -32,7 +32,7 @@ use strict;
|
|
|
32
32
|
use vars qw($VERSION);
|
|
33
33
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
34
34
|
|
|
35
|
-
$VERSION = '1.
|
|
35
|
+
$VERSION = '1.26';
|
|
36
36
|
|
|
37
37
|
# program map table "stream_type" lookup (ref 6/1/9)
|
|
38
38
|
my %streamType = (
|
|
@@ -82,7 +82,7 @@ my %streamType = (
|
|
|
82
82
|
0x86 => 'DTS-HD Audio',
|
|
83
83
|
0x87 => 'E-AC-3 Audio',
|
|
84
84
|
0x8a => 'DTS Audio',
|
|
85
|
-
0x90 => '
|
|
85
|
+
0x90 => 'Presentation Graphic Stream (subtitle)', #https://en.wikipedia.org/wiki/Program-specific_information
|
|
86
86
|
0x91 => 'A52b/AC-3 Audio',
|
|
87
87
|
0x92 => 'DVD_SPU vls Subtitle',
|
|
88
88
|
0x94 => 'SDDS Audio',
|
|
@@ -15,7 +15,7 @@ use vars qw($VERSION);
|
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
16
16
|
use Image::ExifTool::Exif;
|
|
17
17
|
|
|
18
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.11';
|
|
19
19
|
|
|
20
20
|
sub WritePhaseOne($$$);
|
|
21
21
|
sub ProcessPhaseOne($$$);
|
|
@@ -71,6 +71,7 @@ my @formatName = ( undef, 'string', 'int16s', undef, 'int32s' );
|
|
|
71
71
|
# >2 = compressed
|
|
72
72
|
# 5 = non-linear
|
|
73
73
|
PrintConv => { #PH
|
|
74
|
+
0 => 'Uncompressed', #https://github.com/darktable-org/darktable/issues/7308
|
|
74
75
|
1 => 'RAW 1', #? (encrypted)
|
|
75
76
|
2 => 'RAW 2', #? (encrypted)
|
|
76
77
|
3 => 'IIQ L', # (now "L14", ref IB)
|
|
@@ -591,8 +591,8 @@ my %insvLimit = (
|
|
|
591
591
|
GROUPS => { 2 => 'Location' },
|
|
592
592
|
FIRST_ENTRY => 0,
|
|
593
593
|
NOTES => q{
|
|
594
|
-
Tags extracted from the tx3g sbtl timed metadata of Yuneec drones,
|
|
595
|
-
subtitle text in some other videos.
|
|
594
|
+
Tags extracted from the tx3g sbtl timed metadata of Yuneec and Autel drones,
|
|
595
|
+
and subtitle text in some other videos.
|
|
596
596
|
},
|
|
597
597
|
Lat => {
|
|
598
598
|
Name => 'GPSLatitude',
|
|
@@ -619,6 +619,32 @@ my %insvLimit = (
|
|
|
619
619
|
PrintConv => '$self->ConvertDateTime($val)',
|
|
620
620
|
},
|
|
621
621
|
Text => { Groups => { 2 => 'Other' } },
|
|
622
|
+
# the following tags are extracted from Autel Evo II drone videos
|
|
623
|
+
GPSDateTime => {
|
|
624
|
+
Groups => { 2 => 'Time' },
|
|
625
|
+
Description => 'GPS Date/Time',
|
|
626
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
|
627
|
+
},
|
|
628
|
+
HomeLat => {
|
|
629
|
+
Name => 'GPSHomeLatitude',
|
|
630
|
+
RawConv => '$$self{FoundGPSLatitude} = 1; $val',
|
|
631
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
|
632
|
+
},
|
|
633
|
+
HomeLon => {
|
|
634
|
+
Name => 'GPSHomeLongitude',
|
|
635
|
+
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
|
636
|
+
},
|
|
637
|
+
ISO => { },
|
|
638
|
+
SHUTTER => {
|
|
639
|
+
Name => 'ExposureTime',
|
|
640
|
+
ValueConv => '1 / $val',
|
|
641
|
+
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
|
642
|
+
},
|
|
643
|
+
'F-NUM' => {
|
|
644
|
+
Name => 'FNumber',
|
|
645
|
+
PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
|
|
646
|
+
},
|
|
647
|
+
EV => 'ExposureCompensation',
|
|
622
648
|
);
|
|
623
649
|
|
|
624
650
|
%Image::ExifTool::QuickTime::INSV_MakerNotes = (
|
|
@@ -2361,7 +2387,7 @@ sub ParseTag($$$)
|
|
|
2361
2387
|
}
|
|
2362
2388
|
|
|
2363
2389
|
#------------------------------------------------------------------------------
|
|
2364
|
-
# Process Yuneec 'tx3g' sbtl metadata (ref PH)
|
|
2390
|
+
# Process Yuneec 'tx3g' and Autel sbtl metadata (ref PH)
|
|
2365
2391
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
|
2366
2392
|
# Returns: 1 on success
|
|
2367
2393
|
sub Process_tx3g($$$)
|
|
@@ -2369,13 +2395,49 @@ sub Process_tx3g($$$)
|
|
|
2369
2395
|
my ($et, $dirInfo, $tagTablePtr) = @_;
|
|
2370
2396
|
my $dataPt = $$dirInfo{DataPt};
|
|
2371
2397
|
return 0 if length $$dataPt < 2;
|
|
2372
|
-
pos($$dataPt) = 2; # skip 2-byte length word
|
|
2373
2398
|
$et->VerboseDir('tx3g', undef, length($$dataPt)-2);
|
|
2374
|
-
$
|
|
2375
|
-
|
|
2399
|
+
my $text = substr($$dataPt, 2); # remove 2-byte length word
|
|
2400
|
+
$et->HandleTag($tagTablePtr, 'Text', $text);
|
|
2401
|
+
if ($text =~ /^HOME\(/) {
|
|
2402
|
+
# --- sample text from Autel Evo II drone ---
|
|
2403
|
+
# HOME(W: 109.318642, N: 40.769371) 2023-09-12 10:28:07
|
|
2404
|
+
# GPS(W: 109.339287, N: 40.768574, 2371.76m)
|
|
2405
|
+
# HDR ISO:100 SHUTTER:1000 EV:-0.7 F-NUM:1.8
|
|
2406
|
+
# F.PRY (1.0\xc2\xb0, -3.7\xc2\xb0, -59.0\xc2\xb0), G.PRY (-51.1\xc2\xb0, 0.0\xc2\xb0, -58.9\xc2\xb0)
|
|
2407
|
+
my $line;
|
|
2408
|
+
foreach $line (split /\x0a/, $text) {
|
|
2409
|
+
if ($line =~ /^HOME\(([EW]):\s*(\d+\.\d+),\s*([NS]):\s*(\d+\.\d+)\)\s*(.*)/) {
|
|
2410
|
+
my ($lon, $lat, $time) = ($2, $4, $5);
|
|
2411
|
+
$lon = -$lon if $1 eq 'W';
|
|
2412
|
+
$lat = -$lat if $3 eq 'S';
|
|
2413
|
+
$time =~ tr/-/:/; # (likely local time zone, but not confirmed)
|
|
2414
|
+
$et->HandleTag($tagTablePtr, GPSDateTime => $time);
|
|
2415
|
+
$et->HandleTag($tagTablePtr, HomeLat => $lat);
|
|
2416
|
+
$et->HandleTag($tagTablePtr, HomeLon => $lon);
|
|
2417
|
+
} elsif ($line =~ /^GPS\(([EW]):\s*(\d+\.\d+),\s*([NS]):\s*(\d+\.\d+),\s*(.*)m/) {
|
|
2418
|
+
my ($lon, $lat, $alt) = ($2, $4, $5);
|
|
2419
|
+
$lon = -$lon if $1 eq 'W';
|
|
2420
|
+
$lat = -$lat if $3 eq 'S';
|
|
2421
|
+
$et->HandleTag($tagTablePtr, Lat => $lat);
|
|
2422
|
+
$et->HandleTag($tagTablePtr, Lon => $lon);
|
|
2423
|
+
$et->HandleTag($tagTablePtr, Alt => $alt);
|
|
2424
|
+
} elsif ($line =~ /^F\.PRY\s*\((-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0/) {
|
|
2425
|
+
$et->HandleTag($tagTablePtr, Yaw => $1);
|
|
2426
|
+
$et->HandleTag($tagTablePtr, Pitch => $2);
|
|
2427
|
+
$et->HandleTag($tagTablePtr, Roll => $3);
|
|
2428
|
+
if ($line =~ /G\.PRY\s*\((-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0/) {
|
|
2429
|
+
$et->HandleTag($tagTablePtr, GimYaw => $1);
|
|
2430
|
+
$et->HandleTag($tagTablePtr, GimPitch => $2);
|
|
2431
|
+
$et->HandleTag($tagTablePtr, GimRoll => $3);
|
|
2432
|
+
}
|
|
2433
|
+
} else {
|
|
2434
|
+
$et->HandleTag($tagTablePtr, $1, $2) while $line =~ /([-\w]+):([^:]*[^:\s])(\s|$)/sg;
|
|
2435
|
+
}
|
|
2436
|
+
}
|
|
2437
|
+
} elsif ($text =~ /^\w{3} (\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) ?([-+])(\d{2}):?(\d{2})$/s) {
|
|
2376
2438
|
$et->HandleTag($tagTablePtr, 'DateTime', "$1:$2:$3 $4$5$6:$7");
|
|
2377
2439
|
} else {
|
|
2378
|
-
$et->HandleTag($tagTablePtr, $1, $2) while
|
|
2440
|
+
$et->HandleTag($tagTablePtr, $1, $2) while $text =~ /(\w+):([^:]*[^:\s])(\s|$)/sg;
|
|
2379
2441
|
}
|
|
2380
2442
|
return 1;
|
|
2381
2443
|
}
|
|
@@ -1349,7 +1349,7 @@ my %tagLookup = (
|
|
|
1349
1349
|
'camerae-mountversion' => { 490 => 0xb },
|
|
1350
1350
|
'cameraelevationangle' => { 124 => 0x9405, 524 => 'CameraElevationAngle' },
|
|
1351
1351
|
'camerafilename' => { 507 => 'CameraFilename' },
|
|
1352
|
-
'camerafirmware' => { 124 => 0xa439 },
|
|
1352
|
+
'camerafirmware' => { 124 => 0xa439, 524 => 'CameraFirmware' },
|
|
1353
1353
|
'cameraid' => { 333 => 0x209, 413 => 'cmid', 429 => 0x209 },
|
|
1354
1354
|
'cameraidentifier' => { 407 => 'camera.identifier' },
|
|
1355
1355
|
'cameraimage' => { 495 => [\'Cameras','CamerasCameraImage'] },
|
|
@@ -3728,8 +3728,8 @@ my %tagLookup = (
|
|
|
3728
3728
|
'imagedustoff' => { 300 => 0xfe443a45 },
|
|
3729
3729
|
'imageeditcount' => { 388 => 0x41 },
|
|
3730
3730
|
'imageediting' => { 388 => 0x32 },
|
|
3731
|
-
'imageeditingsoftware' => { 124 => 0xa43b },
|
|
3732
|
-
'imageeditor' => { 124 => 0xa438 },
|
|
3731
|
+
'imageeditingsoftware' => { 124 => 0xa43b, 524 => 'ImageEditingSoftware' },
|
|
3732
|
+
'imageeditor' => { 124 => 0xa438, 524 => 'ImageEditor' },
|
|
3733
3733
|
'imageeffects' => { 420 => 0x1010 },
|
|
3734
3734
|
'imagefileconstraints' => { 338 => 'ImageFileConstraints' },
|
|
3735
3735
|
'imagefileformatasdelivered' => { 338 => 'ImageFileFormatAsDelivered' },
|
|
@@ -3805,9 +3805,10 @@ my %tagLookup = (
|
|
|
3805
3805
|
'imagesuppliername' => { 338 => [\'ImageSupplier','ImageSupplierImageSupplierName'] },
|
|
3806
3806
|
'imagetemperaturemax' => { 126 => 0x1 },
|
|
3807
3807
|
'imagetemperaturemin' => { 126 => 0x2 },
|
|
3808
|
+
'imagetitle' => { 124 => 0xa436, 524 => 'ImageTitle' },
|
|
3808
3809
|
'imagetone' => { 388 => 0x4f },
|
|
3809
3810
|
'imagetype' => { 136 => 0x82, 338 => 'ImageType' },
|
|
3810
|
-
'imageuniqueid' => { 1 => 0x15, 68 => 0x28, 124 => 0xa420, 522 => 'ImageUniqueID', 523 => 'ImageUniqueID' },
|
|
3811
|
+
'imageuniqueid' => { 1 => 0x15, 68 => 0x28, 124 => 0xa420, 522 => 'ImageUniqueID', 523 => 'ImageUniqueID', 524 => 'ImageUniqueID' },
|
|
3811
3812
|
'imagewidth' => { 124 => 0x100, 193 => 0xe, 397 => 0x10c, 502 => 'ImageWidth', 542 => 'ImageWidth' },
|
|
3812
3813
|
'inclinationangle' => { 491 => 0x900f },
|
|
3813
3814
|
'inclinationcorrection' => { 491 => 0x900e },
|
|
@@ -4796,7 +4797,7 @@ my %tagLookup = (
|
|
|
4796
4797
|
'metadataauthorityidentifier' => { 531 => [\'metadataAuthority','metadataAuthorityIdentifier'] },
|
|
4797
4798
|
'metadataauthorityname' => { 531 => [\'metadataAuthority','metadataAuthorityName'] },
|
|
4798
4799
|
'metadatadate' => { 544 => 'MetadataDate' },
|
|
4799
|
-
'metadataeditingsoftware' => { 124 => 0xa43c },
|
|
4800
|
+
'metadataeditingsoftware' => { 124 => 0xa43c, 524 => 'MetadataEditingSoftware' },
|
|
4800
4801
|
'metadatalastedited' => { 531 => 'metadataLastEdited' },
|
|
4801
4802
|
'metadatalasteditor' => { 531 => 'metadataLastEditor' },
|
|
4802
4803
|
'metadatalasteditoridentifier' => { 531 => [\'metadataLastEditor','metadataLastEditorIdentifier'] },
|
|
@@ -5599,7 +5600,7 @@ my %tagLookup = (
|
|
|
5599
5600
|
'photoeffectsgreen' => { 302 => 0x6 },
|
|
5600
5601
|
'photoeffectsred' => { 302 => 0x4 },
|
|
5601
5602
|
'photoeffectstype' => { 302 => 0x0 },
|
|
5602
|
-
'photographer' => { 124 => 0xa437 },
|
|
5603
|
+
'photographer' => { 124 => 0xa437, 524 => 'Photographer' },
|
|
5603
5604
|
'photographicsensitivity' => { 524 => 'PhotographicSensitivity' },
|
|
5604
5605
|
'photoidentifier' => { 1 => 0x2b },
|
|
5605
5606
|
'photoinfoplayback' => { 307 => '17.6', 316 => '33.6' },
|
|
@@ -5946,7 +5947,7 @@ my %tagLookup = (
|
|
|
5946
5947
|
'rawdevcolorspace' => { 334 => 0x108, 335 => 0x109 },
|
|
5947
5948
|
'rawdevcontrastvalue' => { 334 => 0x106, 335 => 0x105 },
|
|
5948
5949
|
'rawdeveditstatus' => { 334 => 0x10b },
|
|
5949
|
-
'rawdevelopingsoftware' => { 124 => 0xa43a },
|
|
5950
|
+
'rawdevelopingsoftware' => { 124 => 0xa43a, 524 => 'RAWDevelopingSoftware' },
|
|
5950
5951
|
'rawdevelopmentprocess' => { 388 => 0x62 },
|
|
5951
5952
|
'rawdevengine' => { 334 => 0x109, 335 => 0x10b },
|
|
5952
5953
|
'rawdevexposurebiasvalue' => { 334 => 0x100, 335 => 0x100 },
|
|
@@ -6940,7 +6941,7 @@ my %tagLookup = (
|
|
|
6940
6941
|
'timezoneinfo' => { 105 => 0x2 },
|
|
6941
6942
|
'timezoneoffset' => { 124 => 0x882a },
|
|
6942
6943
|
'tint' => { 407 => 'player.movie.visual.tint', 517 => 'Tint', 519 => 'Tint' },
|
|
6943
|
-
'title' => {
|
|
6944
|
+
'title' => { 162 => 'Title', 337 => 'Title', 341 => 'Title', 352 => 0x65, 404 => 'Title', 405 => ['titl',"\xa9nam"], 407 => 'title', 413 => ['titl',"\xa9nam"], 520 => 'title', 533 => 'Title', 544 => 'Title' },
|
|
6944
6945
|
'togglestyleamount' => { 517 => 'ToggleStyleAmount', 519 => 'ToggleStyleAmount' },
|
|
6945
6946
|
'togglestyledigest' => { 517 => 'ToggleStyleDigest', 519 => 'ToggleStyleDigest' },
|
|
6946
6947
|
'tonecomp' => { 241 => 0x81 },
|
|
@@ -9742,6 +9743,8 @@ my %tagExists = (
|
|
|
9742
9743
|
'gpsframingaltitude' => 1,
|
|
9743
9744
|
'gpsframinglatitude' => 1,
|
|
9744
9745
|
'gpsframinglongitude' => 1,
|
|
9746
|
+
'gpshomelatitude' => 1,
|
|
9747
|
+
'gpshomelongitude' => 1,
|
|
9745
9748
|
'gpshorizontalaccuracy' => 1,
|
|
9746
9749
|
'gpsinfo' => 1,
|
|
9747
9750
|
'gpslatitude2' => 1,
|
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
|
12
12
|
=head1 TAG TABLES
|
|
13
13
|
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
|
15
|
-
They contain a total of
|
|
15
|
+
They contain a total of 28165 tags, with 17491 unique tag names.
|
|
16
16
|
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
|
@@ -871,7 +871,7 @@ for the official EXIF 2.32 specification.
|
|
|
871
871
|
0xa433 LensMake ExifIFD string
|
|
872
872
|
0xa434 LensModel ExifIFD string
|
|
873
873
|
0xa435 LensSerialNumber ExifIFD string
|
|
874
|
-
0xa436
|
|
874
|
+
0xa436 ImageTitle ExifIFD string
|
|
875
875
|
0xa437 Photographer ExifIFD string
|
|
876
876
|
0xa438 ImageEditor ExifIFD string
|
|
877
877
|
0xa439 CameraFirmware ExifIFD string
|
|
@@ -4605,7 +4605,7 @@ These tags belong to the ExifTool XMP-exif family 1 group.
|
|
|
4605
4605
|
GPSTrack rational
|
|
4606
4606
|
GPSTrackRef string
|
|
4607
4607
|
GPSVersionID string
|
|
4608
|
-
ImageUniqueID string
|
|
4608
|
+
ImageUniqueID string/
|
|
4609
4609
|
ISO integer+
|
|
4610
4610
|
LightSource string
|
|
4611
4611
|
MakerNote string
|
|
@@ -4686,6 +4686,7 @@ These tags belong to the ExifTool XMP-exifEX family 1 group.
|
|
|
4686
4686
|
Acceleration rational
|
|
4687
4687
|
SerialNumber string
|
|
4688
4688
|
CameraElevationAngle rational
|
|
4689
|
+
CameraFirmware string
|
|
4689
4690
|
OwnerName string
|
|
4690
4691
|
CompositeImage integer
|
|
4691
4692
|
CompositeImageCount integer+
|
|
@@ -4702,6 +4703,10 @@ These tags belong to the ExifTool XMP-exifEX family 1 group.
|
|
|
4702
4703
|
CompImageValues rational_+
|
|
4703
4704
|
Gamma rational
|
|
4704
4705
|
Humidity rational
|
|
4706
|
+
ImageEditingSoftware string
|
|
4707
|
+
ImageEditor string
|
|
4708
|
+
ImageTitle string
|
|
4709
|
+
ImageUniqueID string
|
|
4705
4710
|
InteropIndex string
|
|
4706
4711
|
ISOSpeed integer
|
|
4707
4712
|
ISOSpeedLatitudeyyy integer
|
|
@@ -4710,8 +4715,11 @@ These tags belong to the ExifTool XMP-exifEX family 1 group.
|
|
|
4710
4715
|
LensModel string
|
|
4711
4716
|
LensSerialNumber string
|
|
4712
4717
|
LensInfo rational+
|
|
4718
|
+
MetadataEditingSoftware string
|
|
4719
|
+
Photographer string
|
|
4713
4720
|
PhotographicSensitivity integer
|
|
4714
4721
|
Pressure rational
|
|
4722
|
+
RAWDevelopingSoftware string
|
|
4715
4723
|
RecommendedExposureIndex integer
|
|
4716
4724
|
SensitivityType integer
|
|
4717
4725
|
StandardOutputSensitivity integer
|
|
@@ -30187,22 +30195,29 @@ changed via the config file.
|
|
|
30187
30195
|
|
|
30188
30196
|
=head3 QuickTime tx3g Tags
|
|
30189
30197
|
|
|
30190
|
-
Tags extracted from the tx3g sbtl timed metadata of Yuneec drones,
|
|
30191
|
-
subtitle text in some other videos.
|
|
30198
|
+
Tags extracted from the tx3g sbtl timed metadata of Yuneec and Autel drones,
|
|
30199
|
+
and subtitle text in some other videos.
|
|
30192
30200
|
|
|
30193
|
-
Tag ID
|
|
30194
|
-
------
|
|
30195
|
-
'Alt'
|
|
30196
|
-
'DateTime'
|
|
30197
|
-
'
|
|
30198
|
-
'
|
|
30199
|
-
'
|
|
30200
|
-
'
|
|
30201
|
-
'
|
|
30202
|
-
'
|
|
30203
|
-
'
|
|
30204
|
-
'
|
|
30205
|
-
'
|
|
30201
|
+
Tag ID Tag Name Writable
|
|
30202
|
+
------ -------- --------
|
|
30203
|
+
'Alt' GPSAltitude no
|
|
30204
|
+
'DateTime' DateTime no
|
|
30205
|
+
'EV' ExposureCompensation no
|
|
30206
|
+
'F-NUM' FNumber no
|
|
30207
|
+
'GPSDateTime' GPSDateTime no
|
|
30208
|
+
'GimPitch' GimbalPitch no
|
|
30209
|
+
'GimRoll' GimbalRoll no
|
|
30210
|
+
'GimYaw' GimbalYaw no
|
|
30211
|
+
'HomeLat' GPSHomeLatitude no
|
|
30212
|
+
'HomeLon' GPSHomeLongitude no
|
|
30213
|
+
'ISO' ISO no
|
|
30214
|
+
'Lat' GPSLatitude no
|
|
30215
|
+
'Lon' GPSLongitude no
|
|
30216
|
+
'Pitch' Pitch no
|
|
30217
|
+
'Roll' Roll no
|
|
30218
|
+
'SHUTTER' ExposureTime no
|
|
30219
|
+
'Text' Text no
|
|
30220
|
+
'Yaw' Yaw no
|
|
30206
30221
|
|
|
30207
30222
|
=head3 QuickTime HTCInfo Tags
|
|
30208
30223
|
|
|
@@ -2016,6 +2016,7 @@ my %sPantryItem = (
|
|
|
2016
2016
|
Writable => 'integer',
|
|
2017
2017
|
List => 'Seq',
|
|
2018
2018
|
AutoSplit => 1,
|
|
2019
|
+
Notes => 'deprecated',
|
|
2019
2020
|
},
|
|
2020
2021
|
OECF => {
|
|
2021
2022
|
Name => 'Opto-ElectricConvFactor',
|
|
@@ -2267,7 +2268,7 @@ my %sPantryItem = (
|
|
|
2267
2268
|
3 => 'Distant',
|
|
2268
2269
|
},
|
|
2269
2270
|
},
|
|
2270
|
-
ImageUniqueID => { },
|
|
2271
|
+
ImageUniqueID => { Avoid => 1, Notes => 'moved to exifEX namespace in 2024 spec' },
|
|
2271
2272
|
GPSVersionID => { Groups => { 2 => 'Location' } },
|
|
2272
2273
|
GPSLatitude => { Groups => { 2 => 'Location' }, %latConv },
|
|
2273
2274
|
GPSLongitude => { Groups => { 2 => 'Location' }, %longConv },
|
|
@@ -2509,6 +2510,15 @@ my %sPantryItem = (
|
|
|
2509
2510
|
Values => { List => 'Seq', Writable => 'rational' },
|
|
2510
2511
|
},
|
|
2511
2512
|
},
|
|
2513
|
+
# new in Exif 3.0
|
|
2514
|
+
ImageUniqueID => { },
|
|
2515
|
+
ImageTitle => { },
|
|
2516
|
+
ImageEditor => { },
|
|
2517
|
+
Photographer => { Groups => { 2 => 'Author' } },
|
|
2518
|
+
CameraFirmware => { Groups => { 2 => 'Camera' } },
|
|
2519
|
+
RAWDevelopingSoftware => { },
|
|
2520
|
+
ImageEditingSoftware => { },
|
|
2521
|
+
MetadataEditingSoftware => { },
|
|
2512
2522
|
);
|
|
2513
2523
|
|
|
2514
2524
|
# Auxiliary namespace properties (aux) - not fully documented (ref PH)
|
|
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
|
30
30
|
%static_vars $advFmtSelf);
|
|
31
31
|
|
|
32
|
-
$VERSION = '
|
|
32
|
+
$VERSION = '13.00';
|
|
33
33
|
$RELEASE = '';
|
|
34
34
|
@ISA = qw(Exporter);
|
|
35
35
|
%EXPORT_TAGS = (
|
|
@@ -740,7 +740,7 @@ my %fileDescription = (
|
|
|
740
740
|
OGV => 'video/ogg',
|
|
741
741
|
ONP => 'application/on1',
|
|
742
742
|
ORF => 'image/x-olympus-orf',
|
|
743
|
-
OTF => 'application/
|
|
743
|
+
OTF => 'application/font-otf',
|
|
744
744
|
PAGES=> 'application/x-iwork-pages-sffpages',
|
|
745
745
|
PBM => 'image/x-portable-bitmap',
|
|
746
746
|
PCD => 'image/x-photo-cd',
|
|
@@ -798,8 +798,8 @@ my %fileDescription = (
|
|
|
798
798
|
THMX => 'application/vnd.ms-officetheme',
|
|
799
799
|
TIFF => 'image/tiff',
|
|
800
800
|
Torrent => 'application/x-bittorrent',
|
|
801
|
-
TTC => 'application/
|
|
802
|
-
TTF => 'application/
|
|
801
|
+
TTC => 'application/font-ttf',
|
|
802
|
+
TTF => 'application/font-ttf',
|
|
803
803
|
TXT => 'text/plain',
|
|
804
804
|
VCard=> 'text/vcard',
|
|
805
805
|
VRD => 'application/octet-stream', #PH (NC)
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
This
|
|
1
|
+
This readme is for the Windows ExifTool package by Oliver Betz.
|
|
2
|
+
|
|
3
|
+
This package is intended to avoid problems of the PAR packed original ExifTool for Windows.
|
|
2
4
|
|
|
3
5
|
It consists of:
|
|
4
6
|
|
|
5
7
|
* ExifTool by Phil Harvey https://exiftool.org/ resp. https://github.com/exiftool/exiftool
|
|
6
|
-
* Strawberry Perl
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
Please note that there can be up to three exiftool scripts in the "exiftool_files" directory:
|
|
10
|
-
* exiftool.pl - only this one is called by the launcher
|
|
11
|
-
* exiftool - this is from the original ExifTool distribution
|
|
12
|
-
* windows_exiftool - this is from the original ExifTool distribution
|
|
8
|
+
* Strawberry Perl https://strawberryperl.com/
|
|
9
|
+
* Tiny launcher by Oliver Betz https://oliverbetz.de/pages/Artikel/ExifTool-for-Windows
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
See https://exiftool.org/ and https://strawberryperl.com/ for the license of ExifTool and Strawberry Perl.
|
|
12
|
+
The launcher is licensed under the https://creativecommons.org/publicdomain/zero/1.0/legalcode CC0 license
|
|
16
13
|
|
|
17
14
|
I make no warranties about the package, and disclaim liability for all uses of the package, to the fullest extent permitted by applicable law.
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Oliver Betz
|
|
16
|
+
Oliver Betz
|
|
@@ -312,8 +312,8 @@ OPTIONS
|
|
|
312
312
|
Write a new value for the specified tag (eg. "-comment=wow"), or
|
|
313
313
|
delete the tag if no *VALUE* is given (eg. "-comment="). "+=" and
|
|
314
314
|
"-=" are used to add or remove existing entries from a list, or to
|
|
315
|
-
shift date/time values (see Image::ExifTool::Shift.pl and
|
|
316
|
-
below for more details). "+=" may also be used to increment
|
|
315
|
+
shift date/time values (see Image::ExifTool::Shift.pl and notes 6
|
|
316
|
+
and 7 below for more details). "+=" may also be used to increment
|
|
317
317
|
numerical values (or decrement if *VALUE* is negative), and "-="
|
|
318
318
|
may be used to conditionally delete or replace a tag (see "WRITING
|
|
319
319
|
EXAMPLES" for examples). "^=" is used to write an empty string
|
|
@@ -399,6 +399,10 @@ OPTIONS
|
|
|
399
399
|
copy it to another tag in the same operation, use the
|
|
400
400
|
-globalTimeShift option.
|
|
401
401
|
|
|
402
|
+
7) The "+=" operator may not be used to shift a List-type date/time
|
|
403
|
+
tag (eg. XMP-dc:Date) because "+=" is used to add elements to the
|
|
404
|
+
list. Instead, the -globalTimeShift option should be used.
|
|
405
|
+
|
|
402
406
|
Special feature: Integer values may be specified in hexadecimal
|
|
403
407
|
with a leading "0x", and simple rational values may be specified as
|
|
404
408
|
fractions.
|
|
@@ -1035,7 +1039,7 @@ OPTIONS
|
|
|
1035
1039
|
|
|
1036
1040
|
produces output like this:
|
|
1037
1041
|
|
|
1038
|
-
-- Generated by ExifTool
|
|
1042
|
+
-- Generated by ExifTool 13.00 --
|
|
1039
1043
|
File: a.jpg - 2003:10:31 15:44:19
|
|
1040
1044
|
(f/5.6, 1/60s, ISO 100)
|
|
1041
1045
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -1879,8 +1883,8 @@ OPTIONS
|
|
|
1879
1883
|
specified family of groups, with -G1 being the default. The -a
|
|
1880
1884
|
option is implied. Adding -v includes a count of the number of tags
|
|
1881
1885
|
that are the same in each group. The following text formatting
|
|
1882
|
-
options are valid when -diff is used: -c, -charset, -d, -E, -
|
|
1883
|
-
-lang, -n, -s, -sep, -struct and -w.
|
|
1886
|
+
options are valid when -diff is used: -c, -charset, -d, -E, -ec,
|
|
1887
|
+
-ex, -L, -lang, -n, -s, -sep, -struct and -w.
|
|
1884
1888
|
|
|
1885
1889
|
-geotag *TRKFILE*
|
|
1886
1890
|
Geotag images from the specified GPS track log file. Using the
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exiftool-vendored.exe",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "13.0.0",
|
|
4
4
|
"description": "Vendored win32 ExifTool for Node.js",
|
|
5
5
|
"main": "./index.js",
|
|
6
|
-
"homepage": "https://github.com/
|
|
6
|
+
"homepage": "https://github.com/photostructure/exiftool-vendored.exe#readme",
|
|
7
7
|
"bugs": {
|
|
8
|
-
"url": "https://github.com/
|
|
8
|
+
"url": "https://github.com/photostructure/exiftool-vendored.js/issues"
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "
|
|
12
|
+
"url": "git+ssh://git@github.com/photostructure/exiftool-vendored.exe.git"
|
|
13
13
|
},
|
|
14
14
|
"os": [
|
|
15
15
|
"win32"
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"axios": "^1.7.7",
|
|
46
|
-
"mocha": "^10.
|
|
47
|
-
"npm-check-updates": "^17.1.
|
|
46
|
+
"mocha": "^10.8.0",
|
|
47
|
+
"npm-check-updates": "^17.1.9",
|
|
48
48
|
"prettier": "^3.3.3",
|
|
49
49
|
"release-it": "^17.10.0",
|
|
50
50
|
"unzipper": "^0.12.3",
|