exiftool_vendored 10.58.0 → 10.65.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.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +100 -1
- data/bin/MANIFEST +2 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +39 -38
- data/bin/arg_files/exif2iptc.args +3 -0
- data/bin/arg_files/iptc2exif.args +3 -0
- data/bin/config_files/example.config +16 -14
- data/bin/config_files/photoshop_paths.config +10 -0
- data/bin/exiftool +71 -65
- data/bin/lib/Image/ExifTool/APE.pm +5 -0
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +31 -15
- data/bin/lib/Image/ExifTool/Canon.pm +18 -4
- data/bin/lib/Image/ExifTool/CanonCustom.pm +3 -0
- data/bin/lib/Image/ExifTool/Charset/DOSLatin1.pm +49 -0
- data/bin/lib/Image/ExifTool/Charset/DOSLatinUS.pm +49 -0
- data/bin/lib/Image/ExifTool/Charset.pm +8 -5
- data/bin/lib/Image/ExifTool/Exif.pm +37 -18
- data/bin/lib/Image/ExifTool/FLAC.pm +47 -37
- data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
- data/bin/lib/Image/ExifTool/FujiFilm.pm +5 -2
- data/bin/lib/Image/ExifTool/GPS.pm +6 -6
- data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +2 -0
- data/bin/lib/Image/ExifTool/ID3.pm +8 -3
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +4 -1
- data/bin/lib/Image/ExifTool/InDesign.pm +11 -7
- data/bin/lib/Image/ExifTool/Kodak.pm +4 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +31 -31
- data/bin/lib/Image/ExifTool/MWG.pm +12 -4
- data/bin/lib/Image/ExifTool/MakerNotes.pm +3 -3
- data/bin/lib/Image/ExifTool/Matroska.pm +2 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +3 -3
- data/bin/lib/Image/ExifTool/Minolta.pm +71 -61
- data/bin/lib/Image/ExifTool/Nikon.pm +286 -43
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1049 -0
- data/bin/lib/Image/ExifTool/Olympus.pm +4 -1
- data/bin/lib/Image/ExifTool/PNG.pm +4 -7
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +24 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +20 -6
- data/bin/lib/Image/ExifTool/Photoshop.pm +24 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +545 -14
- data/bin/lib/Image/ExifTool/README +16 -9
- data/bin/lib/Image/ExifTool/RIFF.pm +8 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +5 -4
- data/bin/lib/Image/ExifTool/Sigma.pm +9 -1
- data/bin/lib/Image/ExifTool/Sony.pm +327 -153
- data/bin/lib/Image/ExifTool/TagLookup.pm +3273 -3220
- data/bin/lib/Image/ExifTool/TagNames.pod +317 -38
- data/bin/lib/Image/ExifTool/Validate.pm +15 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +5 -0
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +23 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +8 -2
- data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -0
- data/bin/lib/Image/ExifTool/Writer.pl +96 -18
- data/bin/lib/Image/ExifTool/XMP.pm +20 -11
- data/bin/lib/Image/ExifTool/XMP2.pl +634 -583
- data/bin/lib/Image/ExifTool.pm +124 -17
- data/bin/lib/Image/ExifTool.pod +86 -82
- data/bin/perl-Image-ExifTool.spec +38 -37
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +4 -2
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -25,9 +25,9 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
25
25
|
$psAPP13hdr $psAPP13old @loadAllTables %UserDefined $evalWarning
|
26
26
|
%noWriteFile %magicNumber @langs $defaultLang %langName %charsetName
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
28
|
-
%jpegMarker %specialTags);
|
28
|
+
%jpegMarker %specialTags %fileTypeLookup);
|
29
29
|
|
30
|
-
$VERSION = '10.
|
30
|
+
$VERSION = '10.65';
|
31
31
|
$RELEASE = '';
|
32
32
|
@ISA = qw(Exporter);
|
33
33
|
%EXPORT_TAGS = (
|
@@ -110,6 +110,7 @@ sub CopyBlock($$$);
|
|
110
110
|
sub CopyFileAttrs($$$);
|
111
111
|
sub TimeNow(;$);
|
112
112
|
sub NewGUID();
|
113
|
+
sub MakeTiffHeader($$$$;$$);
|
113
114
|
|
114
115
|
# other subroutine definitions
|
115
116
|
sub EncodeFileName($$;$);
|
@@ -172,6 +173,8 @@ $defaultLang = 'en'; # default language
|
|
172
173
|
# recognized file types, in the order we test unknown files
|
173
174
|
# Notes: 1) There is no need to test for like types separately here
|
174
175
|
# 2) Put types with weak file signatures at end of list to avoid false matches
|
176
|
+
# 3) PLIST must be in this list for the binary PLIST format, although it may
|
177
|
+
# cause a file to be checked twice for XML
|
175
178
|
@fileTypes = qw(JPEG CRW DR4 TIFF GIF MRW RAF X3F JP2 PNG MIE MIFF PS PDF PSD XMP
|
176
179
|
BMP BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV OGG FLAC APE
|
177
180
|
MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF LFP HTML VRD
|
@@ -189,6 +192,7 @@ my %writeTypes; # lookup for writable file types (hash filled if required)
|
|
189
192
|
TIFF => [ qw(3FR DCR K25 KDC SRF) ],
|
190
193
|
XMP => [ 'SVG' ],
|
191
194
|
JP2 => [ 'J2C', 'JPC' ],
|
195
|
+
MOV => [ 'HEIC', 'HEIF' ],
|
192
196
|
);
|
193
197
|
|
194
198
|
# file types that we can create from scratch
|
@@ -198,7 +202,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
198
202
|
# file type lookup for all recognized file extensions
|
199
203
|
# (if extension may be more than one type, the type is a list where
|
200
204
|
# the writable type should come first if it exists)
|
201
|
-
|
205
|
+
%fileTypeLookup = (
|
202
206
|
'3FR' => ['TIFF', 'Hasselblad RAW format'],
|
203
207
|
'3G2' => ['MOV', '3rd Gen. Partnership Project 2 audio/video'],
|
204
208
|
'3GP' => ['MOV', '3rd Gen. Partnership Project audio/video'],
|
@@ -292,6 +296,8 @@ my %fileTypeLookup = (
|
|
292
296
|
GZIP => ['GZIP', 'GNU ZIP compressed archive'],
|
293
297
|
HDP => ['TIFF', 'Windows HD Photo'],
|
294
298
|
HDR => ['HDR', 'Radiance RGBE High Dynamic Range'],
|
299
|
+
HEIC => ['MOV', 'High Efficiency Image Format still image'],
|
300
|
+
HEIF => ['MOV', 'High Efficiency Image Format'],
|
295
301
|
HTM => 'HTML',
|
296
302
|
HTML => ['HTML', 'HyperText Markup Language'],
|
297
303
|
ICAL => 'ICS',
|
@@ -871,6 +877,8 @@ my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard);
|
|
871
877
|
baltic => 'Baltic', cp1257 => 'Baltic',
|
872
878
|
vietnam => 'Vietnam', cp1258 => 'Vietnam',
|
873
879
|
thai => 'Thai', cp874 => 'Thai',
|
880
|
+
doslatinus => 'DOSLatinUS', cp437 => 'DOSLatinUS',
|
881
|
+
doslatin1 => 'DOSLatin1', cp850 => 'DOSLatin1',
|
874
882
|
macroman => 'MacRoman', cp10000 => 'MacRoman', mac => 'MacRoman', roman => 'MacRoman',
|
875
883
|
maclatin2 => 'MacLatin2', cp10029 => 'MacLatin2',
|
876
884
|
maccyrillic => 'MacCyrillic', cp10007 => 'MacCyrillic',
|
@@ -895,7 +903,8 @@ my %allGroupsExifTool = ( 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'ExifTool' );
|
|
895
903
|
GROUPS FORMAT FIRST_ENTRY TAG_PREFIX PRINT_CONV
|
896
904
|
WRITABLE TABLE_DESC NOTES IS_OFFSET IS_SUBDIR
|
897
905
|
EXTRACT_UNKNOWN NAMESPACE PREFERRED SRC_TABLE PRIORITY
|
898
|
-
WRITE_GROUP
|
906
|
+
AVOID WRITE_GROUP LANG_INFO VARS DATAMEMBER
|
907
|
+
SET_GROUP1
|
899
908
|
);
|
900
909
|
|
901
910
|
# headers for various segment types
|
@@ -1544,6 +1553,19 @@ my %systemTagsNotes = (
|
|
1544
1553
|
return Image::ExifTool::Geotag::ConvertGeosync($self, $val);
|
1545
1554
|
},
|
1546
1555
|
},
|
1556
|
+
ForceWrite => {
|
1557
|
+
Groups => { 0 => '*', 1 => '*', 2 => '*' },
|
1558
|
+
Writable => 1,
|
1559
|
+
WriteOnly => 1,
|
1560
|
+
Notes => q{
|
1561
|
+
write-only tag used to force EXIF, IPTC and/or XMP in a file to be
|
1562
|
+
rewritten. May be set to "EXIF", "IPTC" or "XMP" to force the corresponding
|
1563
|
+
metadata type to be rewritten, "FixBase" to cause EXIF to be rewritten only if
|
1564
|
+
the MakerNotes offset base was fixed, or "All" to rewrite all of these metadata
|
1565
|
+
types. Values are case insensitive, and multiple values may be separated with
|
1566
|
+
commas, eg. C<-ForceWrite=exif,xmp>
|
1567
|
+
},
|
1568
|
+
},
|
1547
1569
|
);
|
1548
1570
|
|
1549
1571
|
# YCbCrSubSampling values (used by JPEG SOF, EXIF and XMP)
|
@@ -1635,14 +1657,66 @@ my %systemTagsNotes = (
|
|
1635
1657
|
RawConv => '$$self{JFIFYResolution} = $val',
|
1636
1658
|
Mandatory => 1,
|
1637
1659
|
},
|
1660
|
+
7 => {
|
1661
|
+
Name => 'ThumbnailWidth',
|
1662
|
+
RawConv => '$val ? $$self{JFIFThumbnailWidth} = $val : undef',
|
1663
|
+
},
|
1664
|
+
8 => {
|
1665
|
+
Name => 'ThumbnailHeight',
|
1666
|
+
RawConv => '$val ? $$self{JFIFThumbnailHeight} = $val : undef',
|
1667
|
+
},
|
1668
|
+
9 => {
|
1669
|
+
Name => 'ThumbnailTIFF',
|
1670
|
+
Groups => { 2 => 'Preview' },
|
1671
|
+
Format => 'undef[3*($val{7}||0)*($val{8}||0)]',
|
1672
|
+
Notes => 'raw RGB thumbnail data, extracted as a TIFF image',
|
1673
|
+
RawConv => 'length($val) ? $val : undef',
|
1674
|
+
ValueConv => sub {
|
1675
|
+
my ($val, $et) = @_;
|
1676
|
+
my $len = length $val;
|
1677
|
+
return \ "Binary data $len bytes" unless $et->Options('Binary');
|
1678
|
+
my $img = MakeTiffHeader($$et{JFIFThumbnailWidth},$$et{JFIFThumbnailHeight},3,8) . $val;
|
1679
|
+
return \$img;
|
1680
|
+
},
|
1681
|
+
},
|
1638
1682
|
);
|
1639
1683
|
%Image::ExifTool::JFIF::Extension = (
|
1640
|
-
GROUPS => { 0 => 'JFIF', 1 => '
|
1684
|
+
GROUPS => { 0 => 'JFIF', 1 => 'JFXX', 2 => 'Image' },
|
1685
|
+
NOTES => 'Thumbnail images extracted from the JFXX segment.',
|
1641
1686
|
0x10 => {
|
1642
1687
|
Name => 'ThumbnailImage',
|
1643
1688
|
Groups => { 2 => 'Preview' },
|
1689
|
+
Notes => 'JPEG-format thumbnail image',
|
1644
1690
|
RawConv => '$self->ValidateImage(\$val,$tag)',
|
1645
1691
|
},
|
1692
|
+
0x11 => { # (untested)
|
1693
|
+
Name => 'ThumbnailTIFF',
|
1694
|
+
Groups => { 2 => 'Preview' },
|
1695
|
+
Notes => 'raw palette-color thumbnail data, extracted as a TIFF image',
|
1696
|
+
RawConv => '(length $val > 770 and $val !~ /^\0\0/) ? $val : undef',
|
1697
|
+
ValueConv => sub {
|
1698
|
+
my ($val, $et) = @_;
|
1699
|
+
my $len = length $val;
|
1700
|
+
return \ "Binary data $len bytes" unless $et->Options('Binary');
|
1701
|
+
my ($w, $h) = unpack('CC', $val);
|
1702
|
+
my $img = MakeTiffHeader($w,$h,1,8,undef,substr($val,2,768)) . substr($val,770);
|
1703
|
+
return \$img;
|
1704
|
+
},
|
1705
|
+
},
|
1706
|
+
0x13 => {
|
1707
|
+
Name => 'ThumbnailTIFF',
|
1708
|
+
Groups => { 2 => 'Preview' },
|
1709
|
+
Notes => 'raw RGB thumbnail data, extracted as a TIFF image',
|
1710
|
+
RawConv => '(length $val > 2 and $val !~ /^\0\0/) ? $val : undef',
|
1711
|
+
ValueConv => sub {
|
1712
|
+
my ($val, $et) = @_;
|
1713
|
+
my $len = length $val;
|
1714
|
+
return \ "Binary data $len bytes" unless $et->Options('Binary');
|
1715
|
+
my ($w, $h) = unpack('CC', $val);
|
1716
|
+
my $img = MakeTiffHeader($w,$h,3,8) . substr($val,2);
|
1717
|
+
return \$img;
|
1718
|
+
},
|
1719
|
+
},
|
1646
1720
|
);
|
1647
1721
|
|
1648
1722
|
# Composite tags (accumulation of all Composite tag tables)
|
@@ -3341,6 +3415,7 @@ sub Init($)
|
|
3341
3415
|
$$self{DUPL_TAG} = { }; # last-used index for duplicate-tag keys
|
3342
3416
|
$$self{WARNED_ONCE}= { }; # WarnOnce() warnings already issued
|
3343
3417
|
$$self{WRITTEN} = { }; # list of tags written (selected tags only)
|
3418
|
+
$$self{FORCE_WRITE}= { }; # ForceWrite lookup (set from ForceWrite tag)
|
3344
3419
|
$$self{PATH} = [ ]; # current subdirectory path in file when reading
|
3345
3420
|
$$self{NUM_FOUND} = 0; # total number of tags found (incl. duplicates)
|
3346
3421
|
$$self{CHANGED} = 0; # number of tags changed (writer only)
|
@@ -3796,7 +3871,7 @@ sub SetFoundTags($)
|
|
3796
3871
|
my $fileOrder = $$self{FILE_ORDER};
|
3797
3872
|
my @groupOptions = sort grep /^Group/, keys %$options;
|
3798
3873
|
my $doDups = $duplicates || $exclude || @groupOptions;
|
3799
|
-
my ($tag, $rtnTags, @byValue, @wildTags);
|
3874
|
+
my ($tag, $rtnTags, @byValue, @wildTags, %byValue, %wildTags, $i);
|
3800
3875
|
|
3801
3876
|
# only return requested tags if specified
|
3802
3877
|
if (@$reqTags) {
|
@@ -3876,10 +3951,14 @@ sub SetFoundTags($)
|
|
3876
3951
|
# bogus file order entry to avoid warning if sorting in file order
|
3877
3952
|
$$self{FILE_ORDER}{$matches[0]} = 9999;
|
3878
3953
|
}
|
3879
|
-
# save
|
3880
|
-
|
3881
|
-
|
3882
|
-
|
3954
|
+
# save tags extracted by value
|
3955
|
+
if ($byValue) {
|
3956
|
+
$byValue{$_} = 1 foreach @matches;
|
3957
|
+
}
|
3958
|
+
# save wildcard tags
|
3959
|
+
if ($allTag) {
|
3960
|
+
$wildTags{$_} = 1 foreach @matches;
|
3961
|
+
}
|
3883
3962
|
push @$rtnTags, @matches;
|
3884
3963
|
}
|
3885
3964
|
} else {
|
@@ -4008,8 +4087,18 @@ GR_TAG: foreach $tag (@$rtnTags) {
|
|
4008
4087
|
}
|
4009
4088
|
$$self{FOUND_TAGS} = $rtnTags; # save found tags
|
4010
4089
|
|
4011
|
-
|
4012
|
-
|
4090
|
+
return $rtnTags unless wantarray;
|
4091
|
+
|
4092
|
+
# generate list of indices of by-value and wildcard tags
|
4093
|
+
if (%byValue or %wildTags) {
|
4094
|
+
for ($i=0; $i<@$rtnTags; ++$i) {
|
4095
|
+
push @byValue, $i if $byValue{$$rtnTags[$i]};
|
4096
|
+
push @wildTags, $i if $wildTags{$$rtnTags[$i]};
|
4097
|
+
}
|
4098
|
+
}
|
4099
|
+
|
4100
|
+
# return reference to found tag keys and list of indices of tags to extract by value
|
4101
|
+
return ($rtnTags, \@byValue, \@wildTags);
|
4013
4102
|
}
|
4014
4103
|
|
4015
4104
|
#------------------------------------------------------------------------------
|
@@ -4319,6 +4408,7 @@ sub ExpandFlags($)
|
|
4319
4408
|
sub SetupTagTable($)
|
4320
4409
|
{
|
4321
4410
|
my $tagTablePtr = shift;
|
4411
|
+
my $avoid = $$tagTablePtr{AVOID};
|
4322
4412
|
my ($tagID, $tagInfo);
|
4323
4413
|
foreach $tagID (TagTableKeys($tagTablePtr)) {
|
4324
4414
|
my @infoArray = GetTagInfoList($tagTablePtr,$tagID);
|
@@ -4328,6 +4418,7 @@ sub SetupTagTable($)
|
|
4328
4418
|
$$tagInfo{TagID} = $tagID;
|
4329
4419
|
$$tagInfo{Name} or $$tagInfo{Name} = MakeTagName($tagID);
|
4330
4420
|
$$tagInfo{Flags} and ExpandFlags($tagInfo);
|
4421
|
+
$$tagInfo{Avoid} = $avoid if defined $avoid;
|
4331
4422
|
}
|
4332
4423
|
next unless @infoArray > 1;
|
4333
4424
|
# add an "Index" member to each tagInfo in a list
|
@@ -5732,10 +5823,11 @@ sub ProcessJPEG($$)
|
|
5732
5823
|
SetByteOrder('MM');
|
5733
5824
|
my $tagTablePtr = GetTagTable('Image::ExifTool::JFIF::Main');
|
5734
5825
|
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
5735
|
-
} elsif ($$segDataPt =~ /^JFXX\0\x10/) {
|
5826
|
+
} elsif ($$segDataPt =~ /^JFXX\0(\x10|\x11|\x13)/) {
|
5827
|
+
my $tag = ord $1;
|
5736
5828
|
$dumpType = 'JFXX';
|
5737
5829
|
my $tagTablePtr = GetTagTable('Image::ExifTool::JFIF::Extension');
|
5738
|
-
my $tagInfo = $self->GetTagInfo($tagTablePtr,
|
5830
|
+
my $tagInfo = $self->GetTagInfo($tagTablePtr, $tag);
|
5739
5831
|
$self->FoundTag($tagInfo, substr($$segDataPt, 6));
|
5740
5832
|
} elsif ($$segDataPt =~ /^(II|MM).{4}HEAPJPGM/s) {
|
5741
5833
|
next if $fast and $fast > 1; # skip processing for very fast
|
@@ -5869,7 +5961,7 @@ sub ProcessJPEG($$)
|
|
5869
5961
|
} else {
|
5870
5962
|
# Hmmm. Could be XMP, let's see
|
5871
5963
|
my $processed;
|
5872
|
-
if ($$segDataPt =~ /^http
|
5964
|
+
if ($$segDataPt =~ /^(http|XMP\0)/ or $$segDataPt =~ /<(exif:|\?xpacket)/) {
|
5873
5965
|
$dumpType = 'XMP';
|
5874
5966
|
# also try to parse XMP with a non-standard header
|
5875
5967
|
# (note: this non-standard XMP is ignored when writing)
|
@@ -7114,7 +7206,17 @@ sub HandleTag($$$$;%)
|
|
7114
7206
|
RAF => $parms{RAF},
|
7115
7207
|
);
|
7116
7208
|
my $oldOrder = GetByteOrder();
|
7117
|
-
|
7209
|
+
if ($$subdir{ByteOrder}) {
|
7210
|
+
if ($$subdir{ByteOrder} eq 'Unknown') {
|
7211
|
+
if ($subdirStart + 2 <= $subdirLen) {
|
7212
|
+
# attempt to determine the byte ordering of an IFD-style subdirectory
|
7213
|
+
my $num = Get16u($dataPt, $subdirStart);
|
7214
|
+
ToggleByteOrder if $num & 0xff00 and ($num>>8) > ($num&0xff);
|
7215
|
+
}
|
7216
|
+
} else {
|
7217
|
+
SetByteOrder($$subdir{ByteOrder});
|
7218
|
+
}
|
7219
|
+
}
|
7118
7220
|
my $subTablePtr = GetTagTable($$subdir{TagTable}) || $tagTablePtr;
|
7119
7221
|
$self->ProcessDirectory(\%dirInfo, $subTablePtr, $$subdir{ProcessProc} || $parms{ProcessProc});
|
7120
7222
|
SetByteOrder($oldOrder);
|
@@ -7136,7 +7238,7 @@ sub HandleTag($$$$;%)
|
|
7136
7238
|
# 2) data value (or reference to require hash if Composite)
|
7137
7239
|
# 3) optional family 0 group, 4) optional family 1 group
|
7138
7240
|
# Returns: tag key or undef if no value
|
7139
|
-
sub FoundTag(
|
7241
|
+
sub FoundTag($$$;@)
|
7140
7242
|
{
|
7141
7243
|
local $_;
|
7142
7244
|
my ($self, $tagInfo, $value, @grps) = @_;
|
@@ -7673,12 +7775,17 @@ sub ProcessBinaryData($$$)
|
|
7673
7775
|
}
|
7674
7776
|
# hook to allow format, etc to be set dynamically
|
7675
7777
|
if (defined $$tagInfo{Hook}) {
|
7778
|
+
my $oldVarSize = $varSize;
|
7676
7779
|
#### eval Hook ($format, $varSize, $size)
|
7677
7780
|
eval $$tagInfo{Hook};
|
7678
7781
|
# save variable size data if required for writing (in case changed by Hook)
|
7679
7782
|
if ($$dirInfo{VarFormatData}) {
|
7680
7783
|
$#{$$dirInfo{VarFormatData}} -= 1 if $wasVar; # remove previous entry for this tag
|
7681
7784
|
push @{$$dirInfo{VarFormatData}}, [ $index, $varSize, $format ];
|
7785
|
+
} elsif ($varSize != $oldVarSize and $verbose > 2) {
|
7786
|
+
my ($tmp, $sign) = ($varSize, '+');
|
7787
|
+
$tmp < 0 and $tmp = -$tmp, $sign = '-';
|
7788
|
+
$self->VPrint(2, sprintf("$$self{INDENT}\[offsets adjusted by ${sign}0x%.4x after 0x%.4x $$tagInfo{Name}]\n", $tmp, $index));
|
7682
7789
|
}
|
7683
7790
|
}
|
7684
7791
|
if ($unknown > 1) {
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -65,42 +65,43 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
65
65
|
|
66
66
|
File Types
|
67
67
|
------------+-------------+-------------+-------------+------------
|
68
|
-
3FR r |
|
69
|
-
3G2 r/w |
|
70
|
-
3GP r/w |
|
71
|
-
A r |
|
72
|
-
AA r |
|
73
|
-
AAX r/w |
|
74
|
-
ACR r |
|
75
|
-
AFM r |
|
76
|
-
AI r/w |
|
77
|
-
AIFF r |
|
78
|
-
APE r |
|
79
|
-
ARW r/w |
|
80
|
-
ASF r |
|
81
|
-
AVI r |
|
82
|
-
AZW r |
|
83
|
-
BMP r |
|
84
|
-
BPG r |
|
85
|
-
BTF r |
|
86
|
-
CHM r |
|
87
|
-
COS r |
|
88
|
-
CR2 r/w |
|
89
|
-
CRW r/w |
|
90
|
-
CS1 r/w |
|
91
|
-
DCM r |
|
92
|
-
DCP r/w |
|
93
|
-
DCR r |
|
94
|
-
DFONT r |
|
95
|
-
DIVX r |
|
96
|
-
DJVU r |
|
97
|
-
DLL r |
|
98
|
-
DNG r/w |
|
99
|
-
DOC r |
|
100
|
-
DOCX r |
|
101
|
-
DPX r |
|
102
|
-
DR4 r/w/c |
|
103
|
-
DSS r |
|
68
|
+
3FR r | DVB r/w | JSON r | OFR r | RTF r
|
69
|
+
3G2 r/w | DYLIB r | K25 r | OGG r | RW2 r/w
|
70
|
+
3GP r/w | EIP r | KDC r | OGV r | RWL r/w
|
71
|
+
A r | EPS r/w | KEY r | OPUS r | RWZ r
|
72
|
+
AA r | EPUB r | LA r | ORF r/w | RM r
|
73
|
+
AAX r/w | ERF r/w | LFP r | OTF r | SEQ r
|
74
|
+
ACR r | EXE r | LNK r | PAC r | SO r
|
75
|
+
AFM r | EXIF r/w/c | M2TS r | PAGES r | SR2 r/w
|
76
|
+
AI r/w | EXR r | M4A/V r/w | PBM r/w | SRF r
|
77
|
+
AIFF r | EXV r/w/c | MAX r | PCD r | SRW r/w
|
78
|
+
APE r | F4A/V r/w | MEF r/w | PDB r | SVG r
|
79
|
+
ARW r/w | FFF r/w | MIE r/w/c | PDF r/w | SWF r
|
80
|
+
ASF r | FLA r | MIFF r | PEF r/w | THM r/w
|
81
|
+
AVI r | FLAC r | MKA r | PFA r | TIFF r/w
|
82
|
+
AZW r | FLIF r/w | MKS r | PFB r | TORRENT r
|
83
|
+
BMP r | FLV r | MKV r | PFM r | TTC r
|
84
|
+
BPG r | FPF r | MNG r/w | PGF r | TTF r
|
85
|
+
BTF r | FPX r | MOBI r | PGM r/w | VCF r
|
86
|
+
CHM r | GIF r/w | MODD r | PLIST r | VRD r/w/c
|
87
|
+
COS r | GZ r | MOI r | PICT r | VSD r
|
88
|
+
CR2 r/w | HDP r/w | MOS r/w | PMP r | WAV r
|
89
|
+
CRW r/w | HDR r | MOV r/w | PNG r/w | WDP r/w
|
90
|
+
CS1 r/w | HEIC r | MP3 r | PPM r/w | WEBP r
|
91
|
+
DCM r | HEIF r | MP4 r/w | PPT r | WEBM r
|
92
|
+
DCP r/w | HTML r | MPC r | PPTX r | WMA r
|
93
|
+
DCR r | ICC r/w/c | MPG r | PS r/w | WMV r
|
94
|
+
DFONT r | ICS r | MPO r/w | PSB r/w | WV r
|
95
|
+
DIVX r | IDML r | MQV r/w | PSD r/w | X3F r/w
|
96
|
+
DJVU r | IIQ r/w | MRW r/w | PSP r | XCF r
|
97
|
+
DLL r | IND r/w | MXF r | QTIF r/w | XLS r
|
98
|
+
DNG r/w | INX r | NEF r/w | RA r | XLSX r
|
99
|
+
DOC r | ISO r | NRW r/w | RAF r/w | XMP r/w/c
|
100
|
+
DOCX r | ITC r | NUMBERS r | RAM r | ZIP r
|
101
|
+
DPX r | J2C r | O r | RAR r |
|
102
|
+
DR4 r/w/c | JNG r/w | ODP r | RAW r/w |
|
103
|
+
DSS r | JP2 r/w | ODS r | RIFF r |
|
104
|
+
DV r | JPEG r/w | ODT r | RSRC r |
|
104
105
|
|
105
106
|
Meta Information
|
106
107
|
----------------------+----------------------+---------------------
|
@@ -458,6 +459,8 @@ below, case is not significant:
|
|
458
459
|
Baltic cp1257 Windows Baltic
|
459
460
|
Vietnam cp1258 Windows Vietnamese
|
460
461
|
Thai cp874 Windows Thai
|
462
|
+
DOSLatinUS cp437 DOS Latin US
|
463
|
+
DOSLatin1 cp850 DOS Latin1
|
461
464
|
MacRoman cp10000, Roman Macintosh Roman
|
462
465
|
MacLatin2 cp10029 Macintosh Latin2 (Central Europe)
|
463
466
|
MacCyrillic cp10007 Macintosh Cyrillic
|
@@ -672,8 +675,8 @@ number of acquired satellites is less than this. Default is undef.
|
|
672
675
|
|
673
676
|
Time shift to apply to all extracted date/time PrintConv values. Does not
|
674
677
|
affect ValueConv values. Value is a date/time shift string (see
|
675
|
-
L<Image::ExifTool::Shift
|
676
|
-
for negative shifts. Default is undef.
|
678
|
+
L<Image::ExifTool::Shift(3pm)|Image::ExifTool::Shift.pl>), with a leading
|
679
|
+
'-' for negative shifts. Default is undef.
|
677
680
|
|
678
681
|
=item Group#
|
679
682
|
|
@@ -797,12 +800,13 @@ print conversion for writing. Default is 1.
|
|
797
800
|
=item QuickTimeUTC
|
798
801
|
|
799
802
|
Flag set to assume that QuickTime date/time values are stored as UTC,
|
800
|
-
causing conversion to local time when they are extracted
|
801
|
-
QuickTime specification date/time values
|
802
|
-
cameras store local time instead (presumably
|
803
|
-
time zone), so the default is undef. This
|
804
|
-
autodetection of incorrect time-zero offsets in
|
805
|
-
and enforces a time zero of 1904 as per the
|
803
|
+
causing conversion to local time when they are extracted and from local time
|
804
|
+
when written. According to the QuickTime specification date/time values
|
805
|
+
should be UTC, but many digital cameras store local time instead (presumably
|
806
|
+
because they don't know the time zone), so the default is undef. This
|
807
|
+
option also disables the autodetection of incorrect time-zero offsets in
|
808
|
+
QuickTime date/time values, and enforces a time zero of 1904 as per the
|
809
|
+
QuickTime specification.
|
806
810
|
|
807
811
|
=item RequestAll
|
808
812
|
|
@@ -1471,7 +1475,7 @@ tags with numerical values may be shifted. Undefined for no shift, 1 for a
|
|
1471
1475
|
positive shift, or -1 for a negative shift. A value of 0 causes a positive
|
1472
1476
|
shift to be applied if the tag is shiftable and AddValue is set, or a
|
1473
1477
|
negative shift for date/time tags only if DelValue is set. Default is undef.
|
1474
|
-
See L<Image::ExifTool::Shift
|
1478
|
+
See L<Image::ExifTool::Shift(3pm)|Image::ExifTool::Shift.pl> for more
|
1475
1479
|
information.
|
1476
1480
|
|
1477
1481
|
=item Type
|
@@ -2157,40 +2161,40 @@ SigmaRaw, Stim, Theora, Torrent, VCard, Vorbis, XML, XMP, ZIP
|
|
2157
2161
|
=item Family 1 (Specific Location):
|
2158
2162
|
|
2159
2163
|
AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple, Audible,
|
2160
|
-
CIFF, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Chapter#,
|
2161
|
-
DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF,
|
2162
|
-
ExifTool, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation,
|
2163
|
-
FujiIFD, GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD, GraphConv,
|
2164
|
-
HTC, HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96,
|
2165
|
-
ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-view,
|
2166
|
-
ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4,
|
2167
|
-
IPTC, IPTC#, ISO, ITC, InteropIFD, JFIF, JPEG, JPEG-HDR,
|
2168
|
-
KDC_IFD, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
|
2169
|
-
Leaf, LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio,
|
2170
|
-
MIE-
|
2171
|
-
MIE-
|
2172
|
-
MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG,
|
2173
|
-
MPImage, MXF, MacOS, MakerNotes, MakerUnknown,
|
2174
|
-
MetaIFD, Microsoft, Minolta, MinoltaRaw, Motorola,
|
2175
|
-
NikonCapture, NikonCustom, NikonScan, Nintendo, Ocad, Ogg,
|
2176
|
-
Opus, PDF, PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic,
|
2177
|
-
PhaseOne, PhotoCD, PhotoMechanic, Photoshop,
|
2178
|
-
PreviewIFD, PrintIM, ProfileIFD, Qualcomm,
|
2179
|
-
|
2180
|
-
Real-
|
2181
|
-
|
2182
|
-
|
2183
|
-
|
2184
|
-
XMP-
|
2185
|
-
XMP-
|
2186
|
-
XMP-
|
2187
|
-
XMP-
|
2188
|
-
XMP-
|
2189
|
-
XMP-
|
2190
|
-
XMP-
|
2191
|
-
XMP-
|
2192
|
-
XMP-
|
2193
|
-
ZIP
|
2164
|
+
CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Chapter#,
|
2165
|
+
Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF,
|
2166
|
+
ExifIFD, ExifTool, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation,
|
2167
|
+
FujiFilm, FujiIFD, GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD, GraphConv,
|
2168
|
+
H264, HP, HTC, HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96,
|
2169
|
+
HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-view,
|
2170
|
+
ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4,
|
2171
|
+
IFD0, IFD1, IPTC, IPTC#, ISO, ITC, InteropIFD, JFIF, JFXX, JPEG, JPEG-HDR,
|
2172
|
+
JVC, Jpeg2000, KDC_IFD, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
|
2173
|
+
KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio,
|
2174
|
+
MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo,
|
2175
|
+
MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient,
|
2176
|
+
MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG,
|
2177
|
+
MOBI, MOI, MPC, MPEG, MPF0, MPImage, MXF, MacOS, MakerNotes, MakerUnknown,
|
2178
|
+
Matroska, MediaJukebox, MetaIFD, Microsoft, Minolta, MinoltaRaw, Motorola,
|
2179
|
+
NITF, Nikon, NikonCapture, NikonCustom, NikonScan, Nintendo, Ocad, Ogg,
|
2180
|
+
Olympus, OpenEXR, Opus, PDF, PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic,
|
2181
|
+
PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic, Photoshop,
|
2182
|
+
PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, Qualcomm,
|
2183
|
+
QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, Real,
|
2184
|
+
Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD,
|
2185
|
+
Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung,
|
2186
|
+
Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System,
|
2187
|
+
Theora, Torrent, Track#, VCalendar, VCard, Version0, Vorbis, XML, XMP,
|
2188
|
+
XMP-DICOM, XMP-GAudio, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-MP,
|
2189
|
+
XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album, XMP-apple-fi,
|
2190
|
+
XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex,
|
2191
|
+
XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-exif, XMP-exifEX,
|
2192
|
+
XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-ics,
|
2193
|
+
XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft,
|
2194
|
+
XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, XMP-photomech,
|
2195
|
+
XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, XMP-prm, XMP-pur,
|
2196
|
+
XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM,
|
2197
|
+
XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP
|
2194
2198
|
|
2195
2199
|
=item Family 2 (Category):
|
2196
2200
|
|
@@ -2385,8 +2389,8 @@ Win32API::File is available.
|
|
2385
2389
|
|
2386
2390
|
The encodings used to store strings in the various metadata formats. These
|
2387
2391
|
encodings may be changed for certain types of metadata via the
|
2388
|
-
L</CharsetEXIF>, L</CharsetID3>, L</CharsetIPTC>, L</CharsetPhotoshop
|
2389
|
-
L</CharsetQuickTime> options.
|
2392
|
+
L</CharsetEXIF>, L</CharsetID3>, L</CharsetIPTC>, L</CharsetPhotoshop>,
|
2393
|
+
L</CharsetQuickTime> and L</CharsetRIFF> options.
|
2390
2394
|
|
2391
2395
|
=back
|
2392
2396
|
|
@@ -2582,7 +2586,7 @@ people who have contributed to this project.
|
|
2582
2586
|
L<exiftool(1)|exiftool>,
|
2583
2587
|
L<Image::ExifTool::TagNames(3pm)|Image::ExifTool::TagNames>,
|
2584
2588
|
L<Image::ExifTool::Shortcuts(3pm)|Image::ExifTool::Shortcuts>,
|
2585
|
-
L<Image::ExifTool::Shift
|
2589
|
+
L<Image::ExifTool::Shift(3pm)|Image::ExifTool::Shift.pl>,
|
2586
2590
|
L<Image::Info(3pm)|Image::Info>,
|
2587
2591
|
L<Image::MetaData::JPEG(3pm)|Image::MetaData::JPEG>
|
2588
2592
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Summary: perl module for image data extraction
|
2
2
|
Name: perl-Image-ExifTool
|
3
|
-
Version: 10.
|
3
|
+
Version: 10.65
|
4
4
|
Release: 1
|
5
5
|
License: Artistic/GPL
|
6
6
|
Group: Development/Libraries/Perl
|
@@ -22,42 +22,43 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
22
22
|
|
23
23
|
File Types
|
24
24
|
------------+-------------+-------------+-------------+------------
|
25
|
-
3FR r |
|
26
|
-
3G2 r/w |
|
27
|
-
3GP r/w |
|
28
|
-
A r |
|
29
|
-
AA r |
|
30
|
-
AAX r/w |
|
31
|
-
ACR r |
|
32
|
-
AFM r |
|
33
|
-
AI r/w |
|
34
|
-
AIFF r |
|
35
|
-
APE r |
|
36
|
-
ARW r/w |
|
37
|
-
ASF r |
|
38
|
-
AVI r |
|
39
|
-
AZW r |
|
40
|
-
BMP r |
|
41
|
-
BPG r |
|
42
|
-
BTF r |
|
43
|
-
CHM r |
|
44
|
-
COS r |
|
45
|
-
CR2 r/w |
|
46
|
-
CRW r/w |
|
47
|
-
CS1 r/w |
|
48
|
-
DCM r |
|
49
|
-
DCP r/w |
|
50
|
-
DCR r |
|
51
|
-
DFONT r |
|
52
|
-
DIVX r |
|
53
|
-
DJVU r |
|
54
|
-
DLL r |
|
55
|
-
DNG r/w |
|
56
|
-
DOC r |
|
57
|
-
DOCX r |
|
58
|
-
DPX r |
|
59
|
-
DR4 r/w/c |
|
60
|
-
DSS r |
|
25
|
+
3FR r | DVB r/w | JSON r | OFR r | RTF r
|
26
|
+
3G2 r/w | DYLIB r | K25 r | OGG r | RW2 r/w
|
27
|
+
3GP r/w | EIP r | KDC r | OGV r | RWL r/w
|
28
|
+
A r | EPS r/w | KEY r | OPUS r | RWZ r
|
29
|
+
AA r | EPUB r | LA r | ORF r/w | RM r
|
30
|
+
AAX r/w | ERF r/w | LFP r | OTF r | SEQ r
|
31
|
+
ACR r | EXE r | LNK r | PAC r | SO r
|
32
|
+
AFM r | EXIF r/w/c | M2TS r | PAGES r | SR2 r/w
|
33
|
+
AI r/w | EXR r | M4A/V r/w | PBM r/w | SRF r
|
34
|
+
AIFF r | EXV r/w/c | MAX r | PCD r | SRW r/w
|
35
|
+
APE r | F4A/V r/w | MEF r/w | PDB r | SVG r
|
36
|
+
ARW r/w | FFF r/w | MIE r/w/c | PDF r/w | SWF r
|
37
|
+
ASF r | FLA r | MIFF r | PEF r/w | THM r/w
|
38
|
+
AVI r | FLAC r | MKA r | PFA r | TIFF r/w
|
39
|
+
AZW r | FLIF r/w | MKS r | PFB r | TORRENT r
|
40
|
+
BMP r | FLV r | MKV r | PFM r | TTC r
|
41
|
+
BPG r | FPF r | MNG r/w | PGF r | TTF r
|
42
|
+
BTF r | FPX r | MOBI r | PGM r/w | VCF r
|
43
|
+
CHM r | GIF r/w | MODD r | PLIST r | VRD r/w/c
|
44
|
+
COS r | GZ r | MOI r | PICT r | VSD r
|
45
|
+
CR2 r/w | HDP r/w | MOS r/w | PMP r | WAV r
|
46
|
+
CRW r/w | HDR r | MOV r/w | PNG r/w | WDP r/w
|
47
|
+
CS1 r/w | HEIC r | MP3 r | PPM r/w | WEBP r
|
48
|
+
DCM r | HEIF r | MP4 r/w | PPT r | WEBM r
|
49
|
+
DCP r/w | HTML r | MPC r | PPTX r | WMA r
|
50
|
+
DCR r | ICC r/w/c | MPG r | PS r/w | WMV r
|
51
|
+
DFONT r | ICS r | MPO r/w | PSB r/w | WV r
|
52
|
+
DIVX r | IDML r | MQV r/w | PSD r/w | X3F r/w
|
53
|
+
DJVU r | IIQ r/w | MRW r/w | PSP r | XCF r
|
54
|
+
DLL r | IND r/w | MXF r | QTIF r/w | XLS r
|
55
|
+
DNG r/w | INX r | NEF r/w | RA r | XLSX r
|
56
|
+
DOC r | ISO r | NRW r/w | RAF r/w | XMP r/w/c
|
57
|
+
DOCX r | ITC r | NUMBERS r | RAM r | ZIP r
|
58
|
+
DPX r | J2C r | O r | RAR r |
|
59
|
+
DR4 r/w/c | JNG r/w | ODP r | RAW r/w |
|
60
|
+
DSS r | JP2 r/w | ODS r | RIFF r |
|
61
|
+
DV r | JPEG r/w | ODT r | RSRC r |
|
61
62
|
|
62
63
|
Meta Information
|
63
64
|
----------------------+----------------------+---------------------
|