exiftool-vendored.exe 12.56.0 → 12.62.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 +115 -5
- package/bin/exiftool_files/LICENSE +674 -0
- package/bin/exiftool_files/README +45 -44
- package/bin/exiftool_files/config_files/example.config +1 -0
- package/bin/exiftool_files/config_files/rotate_regions.config +1 -1
- package/bin/exiftool_files/exiftool.pl +262 -160
- package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +0 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +23 -19
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +26 -6
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +5 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +28 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +77 -19
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +33 -10
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +7 -3
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +7 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +30 -7
- package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +14 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +36 -11
- package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +10 -2
- package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +5 -4
- package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +6 -7
- package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +1005 -909
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +88 -6
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +17 -8
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +10 -2
- package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +27 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +8 -5
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +14 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +38 -7
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +48 -14
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +91 -27
- package/bin/exiftool_files/lib/Image/ExifTool/README +19 -2
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +34 -13
- package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +5 -4
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +9 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +39 -10
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4687 -4628
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +338 -117
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +5 -5
- package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +296 -0
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +42 -0
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +7 -8
- package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +162 -40
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +35 -8
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +159 -41
- package/bin/exiftool_files/lib/Image/ExifTool.pm +286 -65
- package/bin/exiftool_files/lib/Image/ExifTool.pod +95 -51
- package/package.json +2 -2
|
@@ -16,7 +16,7 @@ use strict;
|
|
|
16
16
|
use vars qw($VERSION);
|
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
18
18
|
|
|
19
|
-
$VERSION = '1.
|
|
19
|
+
$VERSION = '1.34';
|
|
20
20
|
|
|
21
21
|
sub ProcessJpeg2000Box($$$);
|
|
22
22
|
sub ProcessJUMD($$$);
|
|
@@ -34,6 +34,9 @@ my %resolutionUnit = (
|
|
|
34
34
|
6 => 'um',
|
|
35
35
|
);
|
|
36
36
|
|
|
37
|
+
# top-level boxes containing image data
|
|
38
|
+
my %isImageData = ( jp2c=>1, jbrd=>1, jxlp=>1, jxlc=>1 );
|
|
39
|
+
|
|
37
40
|
# map of where information is written in JPEG2000 image
|
|
38
41
|
my %jp2Map = (
|
|
39
42
|
IPTC => 'UUID-IPTC',
|
|
@@ -59,7 +62,7 @@ my %jp2Map = (
|
|
|
59
62
|
# map of where information is written in a JXL image
|
|
60
63
|
my %jxlMap = (
|
|
61
64
|
IFD0 => 'Exif',
|
|
62
|
-
XMP => '
|
|
65
|
+
XMP => 'xml ',
|
|
63
66
|
'Exif' => 'JP2',
|
|
64
67
|
IFD1 => 'IFD0',
|
|
65
68
|
EXIF => 'IFD0', # to write EXIF as a block
|
|
@@ -428,6 +431,7 @@ my %j2cMarker = (
|
|
|
428
431
|
# stuff seen in JPEG XL images:
|
|
429
432
|
#
|
|
430
433
|
# jbrd - JPEG Bitstream Reconstruction Data (allows lossless conversion back to original JPG)
|
|
434
|
+
# jxlp - partial JXL codestream
|
|
431
435
|
jxlc => {
|
|
432
436
|
Name => 'JXLCodestream',
|
|
433
437
|
Format => 'undef',
|
|
@@ -827,8 +831,8 @@ sub CreateNewBoxes($$)
|
|
|
827
831
|
# add UUID boxes (and/or JXL Exif/XML boxes)
|
|
828
832
|
foreach $dirName (sort keys %$addDirs) {
|
|
829
833
|
# handle JPEG XL XMP and EXIF
|
|
830
|
-
if ($dirName eq '
|
|
831
|
-
my ($tag, $dir) = $dirName eq '
|
|
834
|
+
if ($dirName eq 'xml ' or $dirName eq 'Exif') {
|
|
835
|
+
my ($tag, $dir) = $dirName eq 'xml ' ? ('xml ', 'XMP') : ('Exif', 'EXIF');
|
|
832
836
|
my $tagInfo = $Image::ExifTool::Jpeg2000::Main{$tag};
|
|
833
837
|
$tagInfo = $$tagInfo[1] if ref $tagInfo eq 'ARRAY'; # (hack for stupid JXL XMP)
|
|
834
838
|
my $subdir = $$tagInfo{SubDirectory};
|
|
@@ -930,7 +934,7 @@ sub ProcessJpeg2000Box($$$)
|
|
|
930
934
|
my $raf = $$dirInfo{RAF};
|
|
931
935
|
my $outfile = $$dirInfo{OutFile};
|
|
932
936
|
my $dirEnd = $dirStart + $dirLen;
|
|
933
|
-
my ($err, $outBuff, $verbose, $doColour);
|
|
937
|
+
my ($err, $outBuff, $verbose, $doColour, $md5);
|
|
934
938
|
|
|
935
939
|
if ($outfile) {
|
|
936
940
|
unless ($raf) {
|
|
@@ -948,6 +952,8 @@ sub ProcessJpeg2000Box($$$)
|
|
|
948
952
|
# (must not set verbose flag when writing!)
|
|
949
953
|
$verbose = $$et{OPTIONS}{Verbose};
|
|
950
954
|
$et->VerboseDir($$dirInfo{DirName}) if $verbose;
|
|
955
|
+
# do MD5 if requested, but only for top-level image data
|
|
956
|
+
$md5 = $$et{ImageDataMD5} if $raf;
|
|
951
957
|
}
|
|
952
958
|
# loop through all contained boxes
|
|
953
959
|
my ($pos, $boxLen, $lastBox);
|
|
@@ -971,6 +977,11 @@ sub ProcessJpeg2000Box($$$)
|
|
|
971
977
|
}
|
|
972
978
|
$boxLen = unpack("x$pos N",$$dataPt); # (length includes header and data)
|
|
973
979
|
$boxID = substr($$dataPt, $pos+4, 4);
|
|
980
|
+
# (ftbl box contains flst boxes with absolute file offsets, not currently handled)
|
|
981
|
+
if ($outfile and $boxID eq 'ftbl') {
|
|
982
|
+
$et->Error("Can't yet handle fragmented JPX files");
|
|
983
|
+
return -1;
|
|
984
|
+
}
|
|
974
985
|
# remove old colr boxes if necessary
|
|
975
986
|
if ($doColour and $boxID eq 'colr') {
|
|
976
987
|
if ($doColour == 1) { # did we successfully write the new colr box?
|
|
@@ -1007,9 +1018,14 @@ sub ProcessJpeg2000Box($$$)
|
|
|
1007
1018
|
while ($raf->Read($buff, 65536)) {
|
|
1008
1019
|
Write($outfile, $buff) or $err = 1;
|
|
1009
1020
|
}
|
|
1010
|
-
}
|
|
1011
|
-
|
|
1012
|
-
|
|
1021
|
+
} else {
|
|
1022
|
+
if ($verbose) {
|
|
1023
|
+
my $msg = sprintf("offset 0x%.4x to end of file", $dataPos + $base + $pos);
|
|
1024
|
+
$et->VPrint(0, "$$et{INDENT}- Tag '${boxID}' ($msg)\n");
|
|
1025
|
+
}
|
|
1026
|
+
if ($md5 and $isImageData{$boxID}) {
|
|
1027
|
+
$et->ImageDataMD5($raf, undef, $boxID);
|
|
1028
|
+
}
|
|
1013
1029
|
}
|
|
1014
1030
|
last; # (ignore the rest of the file when reading)
|
|
1015
1031
|
}
|
|
@@ -1026,6 +1042,8 @@ sub ProcessJpeg2000Box($$$)
|
|
|
1026
1042
|
Write($outfile, $$dataPt) or $err = 1;
|
|
1027
1043
|
$raf->Read($buff,$boxLen) == $boxLen or $err = '', last;
|
|
1028
1044
|
Write($outfile, $buff) or $err = 1;
|
|
1045
|
+
} elsif ($md5 and $isImageData{$boxID}) {
|
|
1046
|
+
$et->ImageDataMD5($raf, $boxLen, $boxID);
|
|
1029
1047
|
} else {
|
|
1030
1048
|
$raf->Seek($boxLen, 1) or $err = 'Seek error', last;
|
|
1031
1049
|
}
|
|
@@ -1038,6 +1056,10 @@ sub ProcessJpeg2000Box($$$)
|
|
|
1038
1056
|
# read the box data
|
|
1039
1057
|
$dataPos = $raf->Tell() - $base;
|
|
1040
1058
|
$raf->Read($buff,$boxLen) == $boxLen or $err = '', last;
|
|
1059
|
+
if ($md5 and $isImageData{$boxID}) {
|
|
1060
|
+
$md5->add($buff);
|
|
1061
|
+
$et->VPrint(0, "$$et{INDENT}(ImageDataMD5: $boxLen bytes of $boxID data)\n");
|
|
1062
|
+
}
|
|
1041
1063
|
$valuePtr = 0;
|
|
1042
1064
|
$dataLen = $boxLen;
|
|
1043
1065
|
} elsif ($pos + $boxLen > $dirEnd) {
|
|
@@ -1123,8 +1145,8 @@ sub ProcessJpeg2000Box($$$)
|
|
|
1123
1145
|
my $subTable = GetTagTable($$subdir{TagTable}) || $tagTablePtr;
|
|
1124
1146
|
if ($outfile) {
|
|
1125
1147
|
# remove this directory from our create list
|
|
1126
|
-
delete $$et{AddJp2Dirs}{$$tagInfo{Name}}; # (eg. 'EXIF')
|
|
1127
|
-
delete $$et{AddJp2Dirs}{$boxID}; # (eg. 'Exif')
|
|
1148
|
+
delete $$et{AddJp2Dirs}{$$tagInfo{Name}}; # (eg. 'EXIF' or 'XMP')
|
|
1149
|
+
delete $$et{AddJp2Dirs}{$boxID}; # (eg. 'Exif' or 'xml ')
|
|
1128
1150
|
my $newdir;
|
|
1129
1151
|
# only edit writable UUID, Exif and jp2h boxes
|
|
1130
1152
|
if ($uuid or $boxID eq 'Exif' or ($boxID eq 'xml ' and $$et{IsJXL}) or
|
|
@@ -1311,7 +1333,7 @@ sub ProcessJP2($$)
|
|
|
1311
1333
|
}
|
|
1312
1334
|
|
|
1313
1335
|
#------------------------------------------------------------------------------
|
|
1314
|
-
# Read meta information
|
|
1336
|
+
# Read/write meta information in a JPEG XL image
|
|
1315
1337
|
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
|
1316
1338
|
# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file, -1 on write error
|
|
1317
1339
|
sub ProcessJXL($$)
|
|
@@ -1340,6 +1362,9 @@ sub ProcessJXL($$)
|
|
|
1340
1362
|
$$dirInfo{RAF} = new File::RandomAccess(\$buff);
|
|
1341
1363
|
} else {
|
|
1342
1364
|
$et->SetFileType('JXL Codestream','image/jxl', 'jxl');
|
|
1365
|
+
if ($$et{ImageDataMD5} and $raf->Seek(0,0)) {
|
|
1366
|
+
$et->ImageDataMD5($raf, undef, 'JXL');
|
|
1367
|
+
}
|
|
1343
1368
|
return ProcessJXLCodestream($et, \$hdr);
|
|
1344
1369
|
}
|
|
1345
1370
|
} else {
|
|
@@ -13,7 +13,7 @@ use vars qw($VERSION);
|
|
|
13
13
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
14
14
|
use Image::ExifTool::XMP;
|
|
15
15
|
|
|
16
|
-
$VERSION = '1.
|
|
16
|
+
$VERSION = '1.01';
|
|
17
17
|
|
|
18
18
|
%Image::ExifTool::LIF::Main = (
|
|
19
19
|
GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Image' },
|
|
@@ -30,7 +30,15 @@ $VERSION = '1.00';
|
|
|
30
30
|
my $unixTimeZero = 134774 * 24 * 3600;
|
|
31
31
|
my @vals = split ' ', $val;
|
|
32
32
|
foreach (@vals) {
|
|
33
|
-
|
|
33
|
+
if (/[^0-9a-f]/i) {
|
|
34
|
+
$_ = '0000:00:00 00:00:00';
|
|
35
|
+
} elsif (length $_ > 8) {
|
|
36
|
+
my $lo = hex substr($_, -8);
|
|
37
|
+
my $hi = hex substr($_, 0, -8);
|
|
38
|
+
$_ = 1e-7 * ($hi * 4294967296 + $lo);
|
|
39
|
+
} else {
|
|
40
|
+
$_ = 1e-7 * hex($_);
|
|
41
|
+
}
|
|
34
42
|
# shift from Jan 1, 1601 to Jan 1, 1970
|
|
35
43
|
$_ = Image::ExifTool::ConvertUnixTime($_ - $unixTimeZero);
|
|
36
44
|
}
|
|
@@ -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.09';
|
|
19
19
|
|
|
20
20
|
sub ProcessItemID($$$);
|
|
21
21
|
sub ProcessLinkInfo($$$);
|
|
@@ -507,7 +507,7 @@ sub ProcessLinkInfo($$$)
|
|
|
507
507
|
if ($lif & 0x01) {
|
|
508
508
|
# read Volume ID
|
|
509
509
|
$off = Get32u($dataPt, 0x0c);
|
|
510
|
-
if ($off + 0x20 <= $dataLen) {
|
|
510
|
+
if ($off and $off + 0x20 <= $dataLen) {
|
|
511
511
|
# my $len = Get32u($dataPt, $off);
|
|
512
512
|
$et->HandleTag($tagTablePtr, 'DriveType', undef, %opts, Start=>$off+4);
|
|
513
513
|
$et->HandleTag($tagTablePtr, 'DriveSerialNumber', undef, %opts, Start=>$off+8);
|
|
@@ -545,6 +545,7 @@ sub ProcessLinkInfo($$$)
|
|
|
545
545
|
$off = Get32u($dataPt, 0x14);
|
|
546
546
|
if ($off and $off + 0x14 <= $dataLen) {
|
|
547
547
|
my $siz = Get32u($dataPt, $off);
|
|
548
|
+
return 0 if $off + $siz > $dataLen;
|
|
548
549
|
$pos = Get32u($dataPt, $off + 0x08);
|
|
549
550
|
if ($pos > 0x14 and $siz >= 0x18) {
|
|
550
551
|
$pos = Get32u($dataPt, $off + 0x14);
|
|
@@ -552,7 +553,7 @@ sub ProcessLinkInfo($$$)
|
|
|
552
553
|
} else {
|
|
553
554
|
undef $unicode;
|
|
554
555
|
}
|
|
555
|
-
$val = GetString($dataPt, $pos, $unicode);
|
|
556
|
+
$val = GetString($dataPt, $off + $pos, $unicode);
|
|
556
557
|
if (defined $val) {
|
|
557
558
|
$size = length $val;
|
|
558
559
|
$val = $et->Decode($val, 'UCS2') if $unicode;
|
|
@@ -567,7 +568,7 @@ sub ProcessLinkInfo($$$)
|
|
|
567
568
|
} else {
|
|
568
569
|
undef $unicode;
|
|
569
570
|
}
|
|
570
|
-
$val = GetString($dataPt, $pos, $unicode);
|
|
571
|
+
$val = GetString($dataPt, $off + $pos, $unicode);
|
|
571
572
|
if (defined $val) {
|
|
572
573
|
$size = length $val;
|
|
573
574
|
$val = $et->Decode($val, 'UCS2') if $unicode;
|
|
@@ -14,7 +14,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
14
14
|
use Image::ExifTool::Exif;
|
|
15
15
|
use Image::ExifTool::GPS;
|
|
16
16
|
|
|
17
|
-
$VERSION = '1.
|
|
17
|
+
$VERSION = '1.51';
|
|
18
18
|
|
|
19
19
|
sub ProcessMIE($$);
|
|
20
20
|
sub ProcessMIEGroup($$$);
|
|
@@ -391,7 +391,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
391
391
|
-30", "-40.5", "40 30 0.00 S"
|
|
392
392
|
},
|
|
393
393
|
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
|
394
|
-
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val,
|
|
394
|
+
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 3)',
|
|
395
395
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
|
396
396
|
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
|
|
397
397
|
},
|
|
@@ -404,7 +404,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
404
404
|
negative, but may be entered as positive numbers with a trailing 'W'
|
|
405
405
|
},
|
|
406
406
|
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
|
407
|
-
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val,
|
|
407
|
+
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 3)',
|
|
408
408
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
|
409
409
|
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
|
|
410
410
|
},
|
|
@@ -18,7 +18,7 @@ use strict;
|
|
|
18
18
|
use vars qw($VERSION);
|
|
19
19
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
20
20
|
|
|
21
|
-
$VERSION = '1.
|
|
21
|
+
$VERSION = '1.17';
|
|
22
22
|
|
|
23
23
|
%Image::ExifTool::MPEG::Audio = (
|
|
24
24
|
GROUPS => { 2 => 'Audio' },
|
|
@@ -599,7 +599,7 @@ sub ProcessMPEGVideo($$)
|
|
|
599
599
|
return 0;
|
|
600
600
|
}
|
|
601
601
|
# set file type if not done already
|
|
602
|
-
$et->SetFileType('MPEG') unless $$et{
|
|
602
|
+
$et->SetFileType('MPEG') unless $$et{FileType};
|
|
603
603
|
|
|
604
604
|
my $tagTablePtr = GetTagTable('Image::ExifTool::MPEG::Video');
|
|
605
605
|
ProcessFrameHeader($et, $tagTablePtr, $w1, $w2);
|
|
@@ -21,7 +21,7 @@ sub ProcessKodakPatch($$$);
|
|
|
21
21
|
sub WriteUnknownOrPreview($$$);
|
|
22
22
|
sub FixLeicaBase($$;$);
|
|
23
23
|
|
|
24
|
-
$VERSION = '2.
|
|
24
|
+
$VERSION = '2.14';
|
|
25
25
|
|
|
26
26
|
my $debug; # set to 1 to enable debugging code
|
|
27
27
|
|
|
@@ -92,11 +92,12 @@ my $debug; # set to 1 to enable debugging code
|
|
|
92
92
|
{
|
|
93
93
|
Name => 'MakerNoteDJIInfo',
|
|
94
94
|
Condition => '$$valPt =~ /^\[ae_dbg_info:/',
|
|
95
|
+
NotIFD => 1,
|
|
95
96
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::Info' },
|
|
96
97
|
},
|
|
97
98
|
{
|
|
98
99
|
Name => 'MakerNoteDJI',
|
|
99
|
-
Condition => '$$self{Make} eq "DJI" and $$valPt !~
|
|
100
|
+
Condition => '$$self{Make} eq "DJI" and $$valPt !~ /^(...\@AMBA|DJI)/s',
|
|
100
101
|
SubDirectory => {
|
|
101
102
|
TagTable => 'Image::ExifTool::DJI::Main',
|
|
102
103
|
Start => '$valuePtr',
|
|
@@ -49,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
|
|
|
49
49
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
50
50
|
use Image::ExifTool::Exif;
|
|
51
51
|
|
|
52
|
-
$VERSION = '2.
|
|
52
|
+
$VERSION = '2.88';
|
|
53
53
|
|
|
54
54
|
# Full list of product codes for Sony-compatible Minolta lenses
|
|
55
55
|
# (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
|
|
@@ -179,12 +179,9 @@ $VERSION = '2.87';
|
|
|
179
179
|
# ("New" and "II" appear in brackets if original version also has this LensType)
|
|
180
180
|
%minoltaLensTypes = (
|
|
181
181
|
Notes => q{
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
brackets if the original version of the lens has the same LensType. Special
|
|
186
|
-
logic is employed to identify the attached lens when a Metabones Canon EF
|
|
187
|
-
adapter is used.
|
|
182
|
+
"New" or "II" appear in brackets if the original version of the lens has the
|
|
183
|
+
same LensType. Special logic is employed to identify the attached lens when
|
|
184
|
+
a Metabones Canon EF adapter is used.
|
|
188
185
|
},
|
|
189
186
|
OTHER => sub {
|
|
190
187
|
my ($val, $inv) = @_;
|
|
@@ -898,6 +895,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
898
895
|
SeparateTable => 1,
|
|
899
896
|
ValueConvInv => 'int($val)', # (must truncate decimal part)
|
|
900
897
|
PrintConv => \%minoltaLensTypes,
|
|
898
|
+
PrintInt => 1,
|
|
901
899
|
},
|
|
902
900
|
# 0x010e - WhiteBalance according to ref #10
|
|
903
901
|
0x0111 => { #20
|
|
@@ -2708,6 +2706,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
2708
2706
|
SeparateTable => 1,
|
|
2709
2707
|
ValueConvInv => 'int($val)', # (must truncate decimal part)
|
|
2710
2708
|
PrintConv => \%minoltaLensTypes,
|
|
2709
|
+
PrintInt => 1,
|
|
2711
2710
|
},
|
|
2712
2711
|
0x49c0 => {
|
|
2713
2712
|
Name => 'ExposureCompensation', # (in exposure bracketing, this is the actual value used)
|
|
@@ -17,7 +17,7 @@ use vars qw($VERSION);
|
|
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
18
18
|
use Image::ExifTool::Minolta;
|
|
19
19
|
|
|
20
|
-
$VERSION = '1.
|
|
20
|
+
$VERSION = '1.18';
|
|
21
21
|
|
|
22
22
|
sub ProcessMRW($$;$);
|
|
23
23
|
sub WriteMRW($$;$);
|
|
@@ -489,6 +489,7 @@ sub ProcessMRW($$;$)
|
|
|
489
489
|
$err and $et->Error("MRW format error", $$et{TIFF_TYPE} eq 'ARW');
|
|
490
490
|
} else {
|
|
491
491
|
$err and $et->Warn("MRW format error");
|
|
492
|
+
$et->ImageDataMD5($raf, undef, 'raw') unless $$et{A100DataOffset};
|
|
492
493
|
}
|
|
493
494
|
return $rtnVal;
|
|
494
495
|
}
|