exiftool-vendored.pl 12.76.0 → 12.80.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 +79 -4
- package/bin/MANIFEST +27 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +3 -3
- package/bin/config_files/acdsee.config +37 -57
- package/bin/config_files/example.config +16 -2
- package/bin/exiftool +84 -29
- package/bin/lib/Image/ExifTool/Canon.pm +12 -9
- package/bin/lib/Image/ExifTool/CanonVRD.pm +7 -1
- package/bin/lib/Image/ExifTool/Exif.pm +52 -4
- package/bin/lib/Image/ExifTool/FujiFilm.pm +3 -0
- package/bin/lib/Image/ExifTool/GPS.pm +5 -3
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/Geolocation.pm +775 -0
- package/bin/lib/Image/ExifTool/Geotag.pm +8 -1
- package/bin/lib/Image/ExifTool/HtmlDump.pm +2 -1
- package/bin/lib/Image/ExifTool/Import.pm +5 -2
- package/bin/lib/Image/ExifTool/JSON.pm +15 -10
- package/bin/lib/Image/ExifTool/MWG.pm +1 -0
- package/bin/lib/Image/ExifTool/MacOS.pm +19 -4
- package/bin/lib/Image/ExifTool/Nikon.pm +2 -2
- package/bin/lib/Image/ExifTool/Ogg.pm +3 -2
- package/bin/lib/Image/ExifTool/Olympus.pm +3 -1
- package/bin/lib/Image/ExifTool/OpenEXR.pm +17 -17
- package/bin/lib/Image/ExifTool/PDF.pm +5 -5
- package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +183 -11
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +253 -237
- package/bin/lib/Image/ExifTool/README +6 -5
- package/bin/lib/Image/ExifTool/TagLookup.pm +2624 -2520
- package/bin/lib/Image/ExifTool/TagNames.pod +184 -4
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +15 -1
- package/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- package/bin/lib/Image/ExifTool/Writer.pl +59 -8
- package/bin/lib/Image/ExifTool/XMP.pm +17 -2
- package/bin/lib/Image/ExifTool/XMP2.pl +64 -0
- package/bin/lib/Image/ExifTool.pm +249 -47
- package/bin/lib/Image/ExifTool.pod +57 -25
- package/bin/perl-Image-ExifTool.spec +2 -2
- package/bin/pp_build_exe.args +4 -230
- package/package.json +2 -2
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '4.
|
|
91
|
+
$VERSION = '4.74';
|
|
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)
|
|
@@ -203,7 +203,8 @@ $VERSION = '4.73';
|
|
|
203
203
|
52 => 'Canon EF-S 18-55mm f/3.5-5.6 IS II', #PH
|
|
204
204
|
53 => 'Canon EF-S 18-55mm f/3.5-5.6 III', #Jon Charnas
|
|
205
205
|
54 => 'Canon EF-S 55-250mm f/4-5.6 IS II', #47
|
|
206
|
-
60 => 'Irix 11mm f/4', #50
|
|
206
|
+
60 => 'Irix 11mm f/4 or 15mm f/2.4', #50
|
|
207
|
+
60.1 => 'Irix 15mm f/2.4', #forum15655
|
|
207
208
|
63 => 'Irix 30mm F1.4 Dragonfly', #IB
|
|
208
209
|
80 => 'Canon TS-E 50mm f/2.8L Macro', #42
|
|
209
210
|
81 => 'Canon TS-E 90mm f/2.8L Macro', #42
|
|
@@ -4731,6 +4732,7 @@ my %ciMaxFocal = (
|
|
|
4731
4732
|
NOTES => 'CameraInfo tags for the PowerShot G5 X Mark II.',
|
|
4732
4733
|
0x0293 => {
|
|
4733
4734
|
Name => 'ShutterCount',
|
|
4735
|
+
Condition => '$$self{FileType} eq "JPEG"',
|
|
4734
4736
|
Format => 'int32u',
|
|
4735
4737
|
Notes => 'includes electronic + mechanical shutter',
|
|
4736
4738
|
# - advances by 1 for each photo file, regardless of mechanical or electronic shutter
|
|
@@ -4738,26 +4740,27 @@ my %ciMaxFocal = (
|
|
|
4738
4740
|
# - advances for time lapse video files
|
|
4739
4741
|
# - creating a new directory or resetting the counter from the menu doesn't affect this shutter count
|
|
4740
4742
|
},
|
|
4743
|
+
0x0a95 => {
|
|
4744
|
+
Name => 'ShutterCount',
|
|
4745
|
+
Condition => '$$self{FileType} eq "CR3"',
|
|
4746
|
+
Format => 'int32u',
|
|
4747
|
+
Notes => 'includes electronic + mechanical shutter',
|
|
4748
|
+
},
|
|
4741
4749
|
0x0b21 => {
|
|
4742
4750
|
Name => 'DirectoryIndex',
|
|
4751
|
+
Condition => '$$self{FileType} eq "JPEG"',
|
|
4743
4752
|
Groups => { 2 => 'Image' },
|
|
4744
4753
|
Format => 'int32u',
|
|
4745
4754
|
},
|
|
4746
4755
|
0x0b2d => {
|
|
4747
4756
|
Name => 'FileIndex',
|
|
4757
|
+
Condition => '$$self{FileType} eq "JPEG"',
|
|
4748
4758
|
Format => 'int32u',
|
|
4749
4759
|
Groups => { 2 => 'Image' },
|
|
4750
4760
|
Format => 'int32u',
|
|
4751
4761
|
ValueConv => '$val + 1',
|
|
4752
4762
|
ValueConvInv => '$val - 1',
|
|
4753
4763
|
},
|
|
4754
|
-
#0x0b39 => {
|
|
4755
|
-
# Name => 'DirectoryIndex',
|
|
4756
|
-
# Groups => { 2 => 'Image' },
|
|
4757
|
-
# Format => 'int32u',
|
|
4758
|
-
# ValueConv => '$val - 1',
|
|
4759
|
-
# ValueConvInv => '$val + 1',
|
|
4760
|
-
#},
|
|
4761
4764
|
);
|
|
4762
4765
|
|
|
4763
4766
|
# Canon camera information for 70D (MakerNotes tag 0x0d) (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.38';
|
|
27
27
|
|
|
28
28
|
sub ProcessCanonVRD($$;$);
|
|
29
29
|
sub WriteCanonVRD($$;$);
|
|
@@ -51,6 +51,7 @@ my %vrdFormat = (
|
|
|
51
51
|
8 => 'int32u',
|
|
52
52
|
9 => 'int32s',
|
|
53
53
|
13 => 'double',
|
|
54
|
+
24 => 'int32s', # (rectangle coordinates)
|
|
54
55
|
33 => 'int32u', # (array)
|
|
55
56
|
38 => 'double', # (array)
|
|
56
57
|
# 254 => 'undef', ?
|
|
@@ -1226,6 +1227,11 @@ my $blankFooter = "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
|
|
|
1226
1227
|
# 0x20a08 - (unknown picture style settings)
|
|
1227
1228
|
# 0x20a09 - Custom picture style settings
|
|
1228
1229
|
# 0x20a20 - Fine Detail picture style settings
|
|
1230
|
+
0x20b10 => 'DPRAWMicroadjustBackFront', #forum15660
|
|
1231
|
+
0x20b12 => 'DPRAWMicroadjustStrength', #forum15660
|
|
1232
|
+
0x20b20 => 'DPRAWBokehShift', #forum15660
|
|
1233
|
+
0x20b21 => 'DPRAWBokehShiftArea', #PH
|
|
1234
|
+
0x20b30 => 'DPRAWGhostingReductionArea', #forum15660
|
|
1229
1235
|
0x30101 => {
|
|
1230
1236
|
Name => 'CropAspectRatio',
|
|
1231
1237
|
PrintConv => {
|
|
@@ -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.51';
|
|
61
61
|
|
|
62
62
|
sub ProcessExif($$$);
|
|
63
63
|
sub WriteExif($$$);
|
|
@@ -593,6 +593,14 @@ my %opcodeInfo = (
|
|
|
593
593
|
OffsetPair => 0x117, # point to associated byte counts
|
|
594
594
|
DataTag => 'OtherImage',
|
|
595
595
|
},
|
|
596
|
+
{
|
|
597
|
+
Condition => '$$self{Compression} and $$self{Compression} eq "52546"', # DNG 1.7 Jpeg XL
|
|
598
|
+
Name => 'PreviewJXLStart',
|
|
599
|
+
IsOffset => 1,
|
|
600
|
+
IsImageData => 1,
|
|
601
|
+
OffsetPair => 0x117, # point to associated byte counts
|
|
602
|
+
DataTag => 'PreviewJXL',
|
|
603
|
+
},
|
|
596
604
|
{
|
|
597
605
|
# (APP1 IFD2 is for Leica JPEG preview)
|
|
598
606
|
Condition => q[
|
|
@@ -687,6 +695,12 @@ my %opcodeInfo = (
|
|
|
687
695
|
OffsetPair => 0x111, # point to associated offset
|
|
688
696
|
DataTag => 'OtherImage',
|
|
689
697
|
},
|
|
698
|
+
{
|
|
699
|
+
Condition => '$$self{Compression} and $$self{Compression} eq "52546"', # DNG 1.7 Jpeg XL
|
|
700
|
+
Name => 'PreviewJXLLength',
|
|
701
|
+
OffsetPair => 0x111, # point to associated offset
|
|
702
|
+
DataTag => 'PreviewJXL',
|
|
703
|
+
},
|
|
690
704
|
{
|
|
691
705
|
# (APP1 IFD2 is for Leica JPEG preview)
|
|
692
706
|
Condition => q[
|
|
@@ -2421,7 +2435,7 @@ my %opcodeInfo = (
|
|
|
2421
2435
|
Count => -1, # 2, 3 or 4 values
|
|
2422
2436
|
},
|
|
2423
2437
|
0x9215 => 'ExposureIndex', #12
|
|
2424
|
-
0x9216 => 'TIFF-EPStandardID', #12
|
|
2438
|
+
0x9216 => { Name => 'TIFF-EPStandardID', PrintConv => '$val =~ tr/ /./; $val' }, #12
|
|
2425
2439
|
0x9217 => { #12
|
|
2426
2440
|
Name => 'SensingMethod',
|
|
2427
2441
|
Groups => { 2 => 'Camera' },
|
|
@@ -2711,7 +2725,7 @@ my %opcodeInfo = (
|
|
|
2711
2725
|
Count => 2,
|
|
2712
2726
|
},
|
|
2713
2727
|
0xa215 => { Name => 'ExposureIndex', Writable => 'rational64u' },
|
|
2714
|
-
0xa216 => 'TIFF-EPStandardID',
|
|
2728
|
+
0xa216 => { Name => 'TIFF-EPStandardID', PrintConv => '$val =~ tr/ /./; $val' },
|
|
2715
2729
|
0xa217 => {
|
|
2716
2730
|
Name => 'SensingMethod',
|
|
2717
2731
|
Groups => { 2 => 'Camera' },
|
|
@@ -4971,6 +4985,39 @@ my %subSecConv = (
|
|
|
4971
4985
|
Image::ExifTool::Exif::ExtractImage($self,$val[0],$val[1],"OtherImage");
|
|
4972
4986
|
},
|
|
4973
4987
|
},
|
|
4988
|
+
PreviewJXL => {
|
|
4989
|
+
Groups => { 0 => 'EXIF', 1 => 'SubIFD', 2 => 'Preview' },
|
|
4990
|
+
Require => {
|
|
4991
|
+
0 => 'PreviewJXLStart',
|
|
4992
|
+
1 => 'PreviewJXLLength',
|
|
4993
|
+
},
|
|
4994
|
+
Desire => {
|
|
4995
|
+
2 => 'PreviewJXLStart (1)',
|
|
4996
|
+
3 => 'PreviewJXLLength (1)',
|
|
4997
|
+
},
|
|
4998
|
+
# retrieve all other JXL images
|
|
4999
|
+
RawConv => q{
|
|
5000
|
+
if ($val[2] and $val[3]) {
|
|
5001
|
+
my $i = 1;
|
|
5002
|
+
for (;;) {
|
|
5003
|
+
my %val = ( 0 => $$val{2}, 1 => $$val{3} );
|
|
5004
|
+
$self->FoundTag($tagInfo, \%val);
|
|
5005
|
+
++$i;
|
|
5006
|
+
$$val{2} = "$$val{0} ($i)";
|
|
5007
|
+
last unless defined $$self{VALUE}{$$val{2}};
|
|
5008
|
+
$$val{3} = "$$val{1} ($i)";
|
|
5009
|
+
last unless defined $$self{VALUE}{$$val{3}};
|
|
5010
|
+
}
|
|
5011
|
+
}
|
|
5012
|
+
@grps = $self->GetGroup($$val{0});
|
|
5013
|
+
my $image = $self->ExtractBinary($val[0], $val[1], 'PreviewJXL');
|
|
5014
|
+
unless ($image =~ /^(Binary data|\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl )/s) {
|
|
5015
|
+
$self->Warn("$tag is not a valid JXL image",1);
|
|
5016
|
+
return undef;
|
|
5017
|
+
}
|
|
5018
|
+
return \$image;
|
|
5019
|
+
},
|
|
5020
|
+
},
|
|
4974
5021
|
PreviewImageSize => {
|
|
4975
5022
|
Require => {
|
|
4976
5023
|
0 => 'PreviewImageWidth',
|
|
@@ -5096,7 +5143,8 @@ my %subSecConv = (
|
|
|
5096
5143
|
GPSLongitudeRef => '(defined $val and $val =~ / (-?)/) ? ($1 ? "W" : "E") : undef',
|
|
5097
5144
|
},
|
|
5098
5145
|
PrintConvInv => q{
|
|
5099
|
-
return undef unless $val =~ /(.*? ?[NS]?), ?(.*? ?[EW]?)
|
|
5146
|
+
return undef unless $val =~ /(.*? ?[NS]?), ?(.*? ?[EW]?)$/ or
|
|
5147
|
+
$val =~ /^\s*(-?\d+(?:\.\d+)?)\s*(-?\d+(?:\.\d+)?)\s*$/;
|
|
5100
5148
|
my ($lat, $lon) = ($1, $2);
|
|
5101
5149
|
require Image::ExifTool::GPS;
|
|
5102
5150
|
$lat = Image::ExifTool::GPS::ToDegrees($lat, 1, "lat");
|
|
@@ -528,6 +528,7 @@ my %faceCategories = (
|
|
|
528
528
|
1 => 'Full-frame on GFX', #IB
|
|
529
529
|
2 => 'Sports Finder Mode', # (mechanical shutter)
|
|
530
530
|
4 => 'Electronic Shutter 1.25x Crop', # (continuous high)
|
|
531
|
+
8 => 'Digital Tele-Conv', #forum15784
|
|
531
532
|
},
|
|
532
533
|
},
|
|
533
534
|
0x104e => { #forum10800 (X-Pro3)
|
|
@@ -549,6 +550,8 @@ my %faceCategories = (
|
|
|
549
550
|
3 => 'Electronic Front Curtain', #10
|
|
550
551
|
},
|
|
551
552
|
},
|
|
553
|
+
0x1051 => { Name => 'CropTopLeft', Writable => 'int32u' }, #forum15784
|
|
554
|
+
0x1052 => { Name => 'CropCenter', Writable => 'int32u' }, #forum15784
|
|
552
555
|
# 0x1100 - This may not work well for newer cameras (ref forum12682)
|
|
553
556
|
0x1100 => [{
|
|
554
557
|
Name => 'AutoBracketing',
|
|
@@ -12,7 +12,7 @@ use strict;
|
|
|
12
12
|
use vars qw($VERSION);
|
|
13
13
|
use Image::ExifTool::Exif;
|
|
14
14
|
|
|
15
|
-
$VERSION = '1.
|
|
15
|
+
$VERSION = '1.56';
|
|
16
16
|
|
|
17
17
|
my %coordConv = (
|
|
18
18
|
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val)',
|
|
@@ -491,7 +491,7 @@ sub PrintTimeStamp($)
|
|
|
491
491
|
sub ToDMS($$;$$)
|
|
492
492
|
{
|
|
493
493
|
my ($et, $val, $doPrintConv, $ref) = @_;
|
|
494
|
-
my ($fmt, @fmt, $num, $sign, $rtnVal, $neg);
|
|
494
|
+
my ($fmt, @fmt, $num, $sign, $minus, $rtnVal, $neg);
|
|
495
495
|
|
|
496
496
|
unless (length $val) {
|
|
497
497
|
# don't convert an empty value
|
|
@@ -503,8 +503,10 @@ sub ToDMS($$;$$)
|
|
|
503
503
|
$val = -$val;
|
|
504
504
|
$ref = {N => 'S', E => 'W'}->{$ref};
|
|
505
505
|
$sign = '-';
|
|
506
|
+
$minus = '-';
|
|
506
507
|
} else {
|
|
507
508
|
$sign = '+';
|
|
509
|
+
$minus = '';
|
|
508
510
|
}
|
|
509
511
|
$ref = " $ref" unless $doPrintConv and $doPrintConv eq '2';
|
|
510
512
|
} else {
|
|
@@ -522,7 +524,7 @@ sub ToDMS($$;$$)
|
|
|
522
524
|
$fmt = q{%d deg %d' %.2f"} . $ref;
|
|
523
525
|
} elsif ($ref) {
|
|
524
526
|
# use signed value instead of reference direction if specified
|
|
525
|
-
$fmt =~ s/%\+/$sign%/g or $fmt .= $ref;
|
|
527
|
+
$fmt =~ s/%\+/$sign%/g or $fmt =~ s/%-/$minus%/g or $fmt .= $ref;
|
|
526
528
|
} else {
|
|
527
529
|
$fmt =~ s/%\+/%/g; # don't know sign, so don't print it
|
|
528
530
|
}
|
|
Binary file
|