exiftool_vendored 13.02.0 → 13.04.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +40 -3
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +76 -43
- data/bin/lib/Image/ExifTool/Apple.pm +2 -2
- data/bin/lib/Image/ExifTool/Canon.pm +7 -1
- data/bin/lib/Image/ExifTool/Exif.pm +15 -4
- data/bin/lib/Image/ExifTool/GIF.pm +143 -92
- data/bin/lib/Image/ExifTool/GPS.pm +33 -29
- data/bin/lib/Image/ExifTool/Geotag.pm +43 -9
- data/bin/lib/Image/ExifTool/GoPro.pm +118 -6
- data/bin/lib/Image/ExifTool/JPEG.pm +9 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +10 -2
- data/bin/lib/Image/ExifTool/OOXML.pm +7 -7
- data/bin/lib/Image/ExifTool/PDF.pm +29 -2
- data/bin/lib/Image/ExifTool/PNG.pm +14 -3
- data/bin/lib/Image/ExifTool/PPM.pm +11 -2
- data/bin/lib/Image/ExifTool/Photoshop.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +6 -1
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/RIFF.pm +7 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5598 -5583
- data/bin/lib/Image/ExifTool/TagNames.pod +64 -6
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +13 -4
- data/bin/lib/Image/ExifTool/Writer.pl +16 -11
- data/bin/lib/Image/ExifTool/XMP.pm +7 -2
- data/bin/lib/Image/ExifTool/XMP2.pl +64 -0
- data/bin/lib/Image/ExifTool.pm +101 -72
- data/bin/lib/Image/ExifTool.pod +16 -3
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 374e7e5a3d68eeca0ec6cb6a40919d056e0731958606daa8bed45a7c4c70daba
|
4
|
+
data.tar.gz: 1263e0b2b35852265b4d5352eae7f35d12cffe0277f916799a8498c75482a9be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b5d47b1383f939d76af17239fb4f1e1a486ae619b0d728a010bde7e8ed044de0bfc93d755f8c0a22dfa098ddf997d84f1d7a3f562f07153d1486eee68744929
|
7
|
+
data.tar.gz: b8ba0c1b6c02546df4e54c6d5c4fe072cbb98bc4b6c5b1d0f1ac323ded4ca43e06ff5bcaaaf879005d37533df86f53262cba0dd87d1a09684f360a50a6d4834c
|
data/bin/Changes
CHANGED
@@ -7,6 +7,42 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 13.00. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Nov. 26, 2024 - Version 13.04
|
11
|
+
|
12
|
+
- Added the ability to write GPSDOP and GPSMeasureMode from the -geotag option
|
13
|
+
if hdop or pdop information exists in the input track file
|
14
|
+
- Added a few new Canon RFLensTypes (thanks Norbert Wasser)
|
15
|
+
- Decode timed GPS from GoPro Hero 13 videos
|
16
|
+
- Improved writing of GPSDestLatitudeRef and GPSDestLongitudeRef tags to allow
|
17
|
+
signed numbers to be written in the same way as GPSLatitudeRef and
|
18
|
+
GPSLongitudeRef
|
19
|
+
- Warn if using an Image::ExifTool library that doesn't match the application
|
20
|
+
version
|
21
|
+
- Renamed an Unknown Photoshop tag
|
22
|
+
- Convert GoPro GPSSpeed and GPSSpeed3D from m/s to km/h
|
23
|
+
- Patched to tolerate XML header in DOCX xml files
|
24
|
+
- Fixed -htmldump output to show the same names for unknown EXIF tags as with
|
25
|
+
the -u option
|
26
|
+
|
27
|
+
Nov. 12, 2024 - Version 13.03
|
28
|
+
|
29
|
+
- Added ability to include or exclude tags from CSV and JSON imports
|
30
|
+
(-csv=CSVFILE and -json=JSONFILE) by adding -TAG or --TAG options
|
31
|
+
- Added read/delete support for SEAL metadata in JPG, TIFF, XMP, PNG, WEBP,
|
32
|
+
HEIC, PPM, MOV and MP4 files, and read support in PDF, MKV and WAV files
|
33
|
+
- Added support for user-defined application extensions in GIF images
|
34
|
+
- Added print conversion for QuickTime VideoFullRangeFlag
|
35
|
+
- Apply API LimitLongValues option to hex field in -j output
|
36
|
+
- Avoid extracting some large AES-encrypted data from PDF files for
|
37
|
+
performance reasons unless the -m option is used (current limits are 100 kB
|
38
|
+
for XMP and 10 kB for everything else)
|
39
|
+
- Fixed WindowsLongPath option to support wide characters (thanks Frank B)
|
40
|
+
- Fixed problem writing ICC_Profile to a GIF image which already had one
|
41
|
+
- Fixed problem writing Apple:FocusDistanceRange
|
42
|
+
- API Changes:
|
43
|
+
- Enchanced GlobalTimeShift option to allow the base tag to be specified,
|
44
|
+
otherwise use the first specified source date/time tag when copying tags
|
45
|
+
|
10
46
|
Nov. 5, 2024 - Version 13.02
|
11
47
|
|
12
48
|
- Enhanced -j -l output to add optional "fmt" and "hex" fields
|
@@ -20,11 +56,12 @@ Nov. 5, 2024 - Version 13.02
|
|
20
56
|
- Patched to avoid using Encode module in Windows because it can hang if run
|
21
57
|
from a working directory with a long path name
|
22
58
|
- Patched to use -csv output if -j also used
|
23
|
-
- Fixed
|
24
|
-
|
59
|
+
- Fixed a few problems with the new WindowsLongPath option
|
60
|
+
- Fixed problem setting FileCreateDate with Xcode 16 command line tools if the
|
61
|
+
date/time contains a time zone
|
25
62
|
- Fixed problem in -csv output when combined with -g
|
26
63
|
- API Changes:
|
27
|
-
- Added
|
64
|
+
- Added SaveBin option
|
28
65
|
|
29
66
|
Nov. 1, 2024 - Version 13.01
|
30
67
|
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -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-13.
|
113
|
-
cd Image-ExifTool-13.
|
112
|
+
gzip -dc Image-ExifTool-13.04.tar.gz | tar -xf -
|
113
|
+
cd Image-ExifTool-13.04
|
114
114
|
./exiftool t/images/ExifTool.jpg
|
115
115
|
|
116
116
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '13.
|
14
|
+
my $version = '13.04';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -597,6 +597,10 @@ if (@Image::ExifTool::UserDefined::Arguments) {
|
|
597
597
|
unshift @ARGV, @Image::ExifTool::UserDefined::Arguments;
|
598
598
|
}
|
599
599
|
|
600
|
+
if ($version ne $Image::ExifTool::VERSION) {
|
601
|
+
Warn "Application version $version does not match Image::ExifTool library version $Image::ExifTool::VERSION\n";
|
602
|
+
}
|
603
|
+
|
600
604
|
# parse command-line options in 2 passes...
|
601
605
|
# pass 1: set all of our ExifTool options
|
602
606
|
# pass 2: print all of our help and informational output (-list, -ver, etc)
|
@@ -1777,7 +1781,7 @@ if ($isWriting) {
|
|
1777
1781
|
if (defined $diff) {
|
1778
1782
|
Error "Can't use -diff option when writing tags\n";
|
1779
1783
|
next;
|
1780
|
-
} elsif (@tags and not $outOpt) {
|
1784
|
+
} elsif (@tags and not $outOpt and not $csv) {
|
1781
1785
|
my ($tg, $s) = @tags > 1 ? ("$tags[0] ...", 's') : ($tags[0], '');
|
1782
1786
|
Warn "Ignored superfluous tag name$s or invalid option$s: -$tg\n";
|
1783
1787
|
}
|
@@ -2852,8 +2856,16 @@ TAG: foreach $tag (@foundTags) {
|
|
2852
2856
|
$$val{num} = $num if defined $num and not IsEqual($num, $$val{val});
|
2853
2857
|
}
|
2854
2858
|
my $ex = $$et{TAG_EXTRA}{$tag};
|
2855
|
-
$$val{'hex'} = join ' ', unpack '(H2)*', $$ex{BinVal} if defined $$ex{BinVal};
|
2856
2859
|
$$val{'fmt'} = $$ex{G6} if defined $$ex{G6};
|
2860
|
+
if (defined $$ex{BinVal}) {
|
2861
|
+
my $max = ($$et{OPTIONS}{LimitLongValues} - 5) / 3;
|
2862
|
+
if ($max >= 0 and length($$ex{BinVal}) > int($max)) {
|
2863
|
+
$max = int $max;
|
2864
|
+
$$val{'hex'} = join ' ', unpack("(H2)$max", $$ex{BinVal}), '[...]';
|
2865
|
+
} else {
|
2866
|
+
$$val{'hex'} = join ' ', unpack '(H2)*', $$ex{BinVal};
|
2867
|
+
}
|
2868
|
+
}
|
2857
2869
|
}
|
2858
2870
|
}
|
2859
2871
|
FormatJSON($fp, $val, $ind, $quote);
|
@@ -3148,9 +3160,15 @@ sub SetImageInfo($$$)
|
|
3148
3160
|
next unless defined $absPath and $csvInfo = $database{$absPath};
|
3149
3161
|
}
|
3150
3162
|
$found = 1;
|
3151
|
-
$verbose
|
3163
|
+
if ($verbose) {
|
3164
|
+
print $vout "Setting new values from $csv database\n";
|
3165
|
+
print $vout 'Including tags: ',join(' ',@tags),"\n" if @tags;
|
3166
|
+
print $vout 'Excluding tags: ',join(' ',@exclude),"\n" if @exclude;
|
3167
|
+
}
|
3152
3168
|
foreach $tag (OrderedKeys($csvInfo)) {
|
3153
3169
|
next if $tag =~ /\b(SourceFile|Directory|FileName)$/i; # don't write these
|
3170
|
+
next if @tags and not grep /^\Q$tag\E$/i, @tags;
|
3171
|
+
next if @exclude and grep /^\Q$tag\E$/i, @exclude;
|
3154
3172
|
my ($rtn, $wrn) = $et->SetNewValue($tag, $$csvInfo{$tag},
|
3155
3173
|
Protected => 1, AddValue => $csvAdd,
|
3156
3174
|
ProtectSaved => $csvSaveCount);
|
@@ -5143,7 +5161,7 @@ information. Use the B<-s> option to see the tag names instead.
|
|
5143
5161
|
=item B<-->I<TAG>
|
5144
5162
|
|
5145
5163
|
Exclude specified tag from extracted information. Same as the B<-x> option.
|
5146
|
-
Group names and wildcards are permitted as described above for B
|
5164
|
+
Group names and wildcards are permitted as described above for B<->I<TAG>.
|
5147
5165
|
Once excluded from the output, a tag may not be re-included by a subsequent
|
5148
5166
|
option. May also be used following a B<-tagsFromFile> option to exclude
|
5149
5167
|
tags from being copied (when redirecting to another tag, it is the source
|
@@ -5574,7 +5592,9 @@ deleted). Also, FileName and Directory columns are ignored if they exist
|
|
5574
5592
|
all other columns are imported. To force a tag to be deleted, use the B<-f>
|
5575
5593
|
option and set the value to "-" in the CSV file (or to the MissingTagValue
|
5576
5594
|
if this API option was used). Multiple databases may be imported in a
|
5577
|
-
single command.
|
5595
|
+
single command. Specific tags may be imported from the database by adding
|
5596
|
+
B<->I<TAG> options to the command, or excluded with B<-->I<TAG> options.
|
5597
|
+
If no tags are specified, then all except FileName and Directory are used.
|
5578
5598
|
|
5579
5599
|
When exporting a CSV file, the B<-g> or B<-G> option adds group names to the
|
5580
5600
|
tag headings. If the B<-a> option is used to allow duplicate tag names, the
|
@@ -5710,19 +5730,28 @@ preserved with the B<-struct> option (this also causes all list-type XMP
|
|
5710
5730
|
tags to be output as JSON arrays, otherwise single-item lists would be
|
5711
5731
|
output as simple strings). The B<-a> option is implied when B<-json> is
|
5712
5732
|
used, but entries with identical JSON names are suppressed in the output.
|
5713
|
-
(B<-G4> may be used to ensure that all tags have unique JSON names.)
|
5714
|
-
|
5715
|
-
|
5716
|
-
|
5717
|
-
|
5718
|
-
|
5719
|
-
|
5720
|
-
|
5721
|
-
|
5722
|
-
|
5723
|
-
|
5724
|
-
|
5725
|
-
|
5733
|
+
(B<-G4> may be used to ensure that all tags have unique JSON names.)
|
5734
|
+
|
5735
|
+
Adding the B<-D> or B<-H> option changes tag values to JSON objects with
|
5736
|
+
"val" and "id" fields. Adding B<-l> adds a "desc" field, and a "num" field
|
5737
|
+
if the numerical value is different from the converted "val", and "fmt" and
|
5738
|
+
"hex" fields for EXIF metadata if the API SaveFormat and SaveBin options are
|
5739
|
+
set respectively, and the length of the "hex" output is limited by the API
|
5740
|
+
LimitLongValues setting. The B<-b> option may be added to output binary
|
5741
|
+
data, encoded in base64 if necessary (indicated by ASCII "base64:" as the
|
5742
|
+
first 7 bytes of the value), and B<-t> may be added to include tag table
|
5743
|
+
information (see B<-t> for details). The JSON output is UTF-8 regardless of
|
5744
|
+
any B<-L> or B<-charset> option setting, but the UTF-8 validation is
|
5745
|
+
disabled if a character set other than UTF-8 is specified.
|
5746
|
+
|
5747
|
+
Note that ExifTool quotes JSON values only if they don't look like numbers
|
5748
|
+
(regardless of the original storage format or the relevant metadata
|
5749
|
+
specification). This may be a problem when reading the JSON via a strongly
|
5750
|
+
typed language. However, the API StructFormat option may be set to "JSONQ"
|
5751
|
+
to force quoting of numbers. As well, the B<-sep> option may be used to
|
5752
|
+
convert arrays into strings. For example:
|
5753
|
+
|
5754
|
+
exiftool -j -api structformat=jsonq -sep ", " ...
|
5726
5755
|
|
5727
5756
|
If I<JSONFILE> is specified, the file is imported and the tag definitions
|
5728
5757
|
from the file are used to set tag values on a per-file basis. The special
|
@@ -5735,7 +5764,9 @@ that options exporting JSON objects instead of simple values are not
|
|
5735
5764
|
compatible with the import file format (ie. export with B<-D>, B<-H>, B<-l>,
|
5736
5765
|
or B<-T> is not compatible, and use B<-G> instead of B<-g>). Additionally,
|
5737
5766
|
tag names in the input JSON file may be suffixed with a C<#> to disable
|
5738
|
-
print conversion.
|
5767
|
+
print conversion. Specific tags may be imported from the database by adding
|
5768
|
+
B<->I<TAG> options to the command, or excluded with B<-->I<TAG> options.
|
5769
|
+
If no tags are specified, then all except FileName and Directory are used.
|
5739
5770
|
|
5740
5771
|
Unlike CSV import, empty values are not ignored, and will cause an empty
|
5741
5772
|
value to be written if supported by the specific metadata type. Tags are
|
@@ -5876,7 +5907,7 @@ with this command:
|
|
5876
5907
|
|
5877
5908
|
produces output like this:
|
5878
5909
|
|
5879
|
-
-- Generated by ExifTool 13.
|
5910
|
+
-- Generated by ExifTool 13.04 --
|
5880
5911
|
File: a.jpg - 2003:10:31 15:44:19
|
5881
5912
|
(f/5.6, 1/60s, ISO 100)
|
5882
5913
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5892,8 +5923,9 @@ name, a value of 1 is returned if any tag exists in the specified group, or
|
|
5892
5923
|
0 otherwise (unless the C<All> group is also specified, in which case the
|
5893
5924
|
values of all matching tags are joined).
|
5894
5925
|
|
5895
|
-
|
5896
|
-
|
5926
|
+
The B<-p> output iterates through the family 3 group names, with each
|
5927
|
+
sub-document producing additional output. This feature is most useful when
|
5928
|
+
used in combination with the B<-ee> option to extract embedded documents.
|
5897
5929
|
|
5898
5930
|
If a specified tag does not exist, a minor warning is issued and the line
|
5899
5931
|
with the missing tag is not printed. However, the B<-f> option may be used
|
@@ -6305,7 +6337,8 @@ ExifTool will not scan to the end of a JPEG image to check for an AFCP or
|
|
6305
6337
|
PreviewImage trailer, or past the first comment in GIF images or the
|
6306
6338
|
audio/video data in WAV/AVI files to search for additional metadata. These
|
6307
6339
|
speed benefits are small when reading images directly from disk, but can be
|
6308
|
-
substantial if piping images through a network connection.
|
6340
|
+
substantial if piping images through a network connection. Also bypasses
|
6341
|
+
CRC validation when writing PNG images which can be very slow. For more
|
6309
6342
|
substantial speed benefits, B<-fast2> also causes exiftool to avoid
|
6310
6343
|
extracting any EXIF MakerNote information, and to stop processing at the
|
6311
6344
|
IDAT chunk of PNG images and the mdat atom of QuickTime-format files (but
|
@@ -6716,8 +6749,9 @@ names, even if they begin with a dash (C<->).
|
|
6716
6749
|
Compare metadata in I<FILE> with I<FILE2>. The I<FILE2> name may include
|
6717
6750
|
filename formatting codes (see the B<-w> option). All extracted tags from
|
6718
6751
|
the files are compared, but the extracted tags may be controlled by adding
|
6719
|
-
B
|
6720
|
-
the same-named files in two different directories, ignoring the
|
6752
|
+
B<->I<TAG> or B<-->I<TAG> options. For example, below is a command to
|
6753
|
+
compare all the same-named files in two different directories, ignoring the
|
6754
|
+
System tags:
|
6721
6755
|
|
6722
6756
|
exiftool DIR1 -diff DIR2/%f.%e --system:all
|
6723
6757
|
|
@@ -6741,23 +6775,22 @@ the following two commands are equivalent:
|
|
6741
6775
|
exiftool -geotag trk.log image.jpg
|
6742
6776
|
exiftool -geotag trk.log "-Geotime<DateTimeOriginal#" image.jpg
|
6743
6777
|
|
6744
|
-
|
6745
|
-
|
6746
|
-
|
6747
|
-
|
6748
|
-
|
6749
|
-
|
6750
|
-
|
6751
|
-
|
6752
|
-
|
6753
|
-
|
6754
|
-
|
6755
|
-
|
6756
|
-
|
6757
|
-
|
6758
|
-
|
6759
|
-
|
6760
|
-
order to be written.
|
6778
|
+
If the C<Geotime> value does not contain a time zone then the local system
|
6779
|
+
timezone is assumed. Writing C<Geotime> causes the following tags to be
|
6780
|
+
written (provided they can be calculated from the track log, and they are
|
6781
|
+
supported by the destination metadata format): GPSLatitude, GPSLatitudeRef,
|
6782
|
+
GPSLongitude, GPSLongitudeRef, GPSAltitude, GPSAltitudeRef, GPSDateStamp,
|
6783
|
+
GPSTimeStamp, GPSDateTime, GPSTrack, GPSTrackRef, GPSSpeed, GPSSpeedRef,
|
6784
|
+
GPSImgDirection, GPSImgDirectionRef, GPSPitch, GPSRoll, GPSCoordinates,
|
6785
|
+
AmbientTemperature and CameraElevationAngle. By default, in image files
|
6786
|
+
tags are created in EXIF, and updated in XMP only if they already exist. In
|
6787
|
+
QuickTime-format files GPSCoordinates is created in the preferred location
|
6788
|
+
(ItemList by default) as well as in XMP. However, C<EXIF:Geotime>,
|
6789
|
+
C<XMP:Geotime> or C<QuickTime:Geotime> may be specified to write to write
|
6790
|
+
only to one group. Also, C<ItemList:Geotime>, C<Keys:Geotime> or
|
6791
|
+
C<UserData:Geotime> may be used to write to a specific location in
|
6792
|
+
QuickTime-format files. Note that GPSPitch and GPSRoll are non-standard,
|
6793
|
+
and require user-defined tags in order to be written.
|
6761
6794
|
|
6762
6795
|
The C<Geosync> tag may be used to specify a time correction which is applied
|
6763
6796
|
to each C<Geotime> value for synchronization with GPS time. For example,
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
use Image::ExifTool::PLIST;
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.13';
|
20
20
|
|
21
21
|
sub ConvertPLIST($$);
|
22
22
|
|
@@ -99,7 +99,7 @@ sub ConvertPLIST($$);
|
|
99
99
|
my @a = split ' ', $val;
|
100
100
|
sprintf('%.2f - %.2f m', $a[0] <= $a[1] ? @a : reverse @a);
|
101
101
|
},
|
102
|
-
PrintConvInv => '$val =~ s/ -
|
102
|
+
PrintConvInv => '$val =~ s/ - / /; $val =~ s/ ?m$//; $val',
|
103
103
|
},
|
104
104
|
# 0x000d - int32s: 0,1,6,20,24,32,40 (SphereHealthAverageCurrent, ref 2)
|
105
105
|
# 0x000e - int32s: 0,1,4,12 (Orientation? 0=landscape? 4=portrait? ref 1) (SphereMotionDataStatus, ref 2)
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.85';
|
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)
|
@@ -631,6 +631,9 @@ $VERSION = '4.84';
|
|
631
631
|
'61182.54' => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
|
632
632
|
'61182.55' => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
|
633
633
|
'61182.56' => 'Canon RF 35mm F1.4 L VCM', #42
|
634
|
+
'61182.57' => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
|
635
|
+
'61182.58' => 'Canon RF 50mm F1.4 L VCM', #42
|
636
|
+
'61182.59' => 'Canon RF 24mm F1.4 L VCM', #42
|
634
637
|
65535 => 'n/a',
|
635
638
|
);
|
636
639
|
|
@@ -7001,6 +7004,9 @@ my %ciMaxFocal = (
|
|
7001
7004
|
316 => 'Canon RF 35mm F1.4 L VCM', #42
|
7002
7005
|
317 => 'Canon RF-S 3.9mm F3.5 STM DUAL FISHEYE', #42
|
7003
7006
|
318 => 'Canon RF 28-70mm F2.8 IS STM', #42
|
7007
|
+
319 => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
|
7008
|
+
325 => 'Canon RF 50mm F1.4 L VCM', #42
|
7009
|
+
326 => 'Canon RF 24mm F1.4 L VCM', #42
|
7004
7010
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
7005
7011
|
},
|
7006
7012
|
},
|
@@ -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.55';
|
61
61
|
|
62
62
|
sub ProcessExif($$$);
|
63
63
|
sub WriteExif($$$);
|
@@ -4421,6 +4421,13 @@ my %opcodeInfo = (
|
|
4421
4421
|
Writable => 'int32u',
|
4422
4422
|
WriteGroup => 'IFD0',
|
4423
4423
|
},
|
4424
|
+
0xcea1 => {
|
4425
|
+
Name => 'SEAL', # (writable directory!)
|
4426
|
+
Writable => 'string',
|
4427
|
+
WriteGroup => 'IFD0',
|
4428
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
4429
|
+
WriteCheck => 'return "Can only delete"', # (don't allow writing)
|
4430
|
+
},
|
4424
4431
|
0xea1c => { #13
|
4425
4432
|
Name => 'Padding',
|
4426
4433
|
Binary => 1,
|
@@ -6690,8 +6697,9 @@ sub ProcessExif($$$)
|
|
6690
6697
|
"Format: $fstr\nSize: $size bytes\n";
|
6691
6698
|
if ($size > 4) {
|
6692
6699
|
my $offPt = Get32u($dataPt,$entry+8);
|
6693
|
-
# (test this with ../pics/{CanonEOS-1D_XMarkIII.hif,PanasonicDC-G9.rw2})
|
6694
|
-
my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0) +
|
6700
|
+
# (test this with ../pics/{CanonEOS-1D_XMarkIII.hif,PanasonicDC-G9.rw2,*.raf})
|
6701
|
+
my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0) +
|
6702
|
+
($$et{BASE_FUDGE} || $$et{BASE} || 0);
|
6695
6703
|
$tip .= sprintf("Value offset: 0x%.4x\n", $offPt);
|
6696
6704
|
# highlight tag name (red for bad size)
|
6697
6705
|
my $style = ($bad or not defined $tval) ? 'V' : 'H';
|
@@ -6722,12 +6730,15 @@ sub ProcessExif($$$)
|
|
6722
6730
|
} elsif ($tagInfo and Image::ExifTool::IsInt($tval)) {
|
6723
6731
|
if ($$tagInfo{IsOffset} or $$tagInfo{SubIFD}) {
|
6724
6732
|
$tval = sprintf('0x%.4x', $tval);
|
6725
|
-
my $actPt = $val + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || 0);
|
6733
|
+
my $actPt = $val + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || $$et{BASE} || 0);
|
6726
6734
|
if ($actPt != $val) {
|
6727
6735
|
$tval .= sprintf("\nActual offset: 0x%.4x", $actPt);
|
6728
6736
|
my $sign = $actPt < $val ? '-' : '';
|
6729
6737
|
$tval .= sprintf("\nOffset base: ${sign}0x%.4x", abs($actPt - $val));
|
6730
6738
|
}
|
6739
|
+
if ($$et{EXIF_POS} and not $$et{BASE_FUDGE}) {
|
6740
|
+
$tip .= sprintf("File offset: 0x%.4x\n", $actPt + $$et{EXIF_POS})
|
6741
|
+
}
|
6731
6742
|
} elsif ($$tagInfo{PrintHex}) {
|
6732
6743
|
$tval = sprintf('0x%x', $tval);
|
6733
6744
|
}
|