exiftool_vendored 11.53.0 → 11.54.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.
- checksums.yaml +4 -4
- data/bin/Changes +24 -4
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +28 -12
- data/bin/lib/Image/ExifTool.pm +53 -13
- data/bin/lib/Image/ExifTool.pod +25 -19
- data/bin/lib/Image/ExifTool/Exif.pm +7 -6
- data/bin/lib/Image/ExifTool/GPS.pm +3 -3
- data/bin/lib/Image/ExifTool/Geotag.pm +48 -3
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1510 -284
- data/bin/lib/Image/ExifTool/Minolta.pm +57 -50
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +7 -3
- data/bin/lib/Image/ExifTool/Samsung.pm +24 -3
- data/bin/lib/Image/ExifTool/Sony.pm +8 -1
- data/bin/lib/Image/ExifTool/TagNames.pod +5 -2
- data/bin/lib/Image/ExifTool/Torrent.pm +4 -1
- data/bin/lib/Image/ExifTool/Validate.pm +79 -33
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +19 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +52 -29
- data/bin/lib/Image/ExifTool/Writer.pl +8 -0
- data/bin/lib/Image/ExifTool/XMP.pm +1 -0
- data/bin/lib/Image/ExifTool/XMP2.pl +3 -1
- 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
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 75e69c1212095c9e4bb0a1180cad9fed096909b1
|
|
4
|
+
data.tar.gz: 424cf805d468397a25bdcd1c92ec9ecc3ddb6ee2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6a7d5afd611e6115f689dc17346357705458ec171a19ca2afbb215cfe5683782f02b158acef907a0a2801a9dd7e654fbded8ad990f3f52cf832b6a6b8d57982d
|
|
7
|
+
data.tar.gz: 12a0ffc20a0fd147eb6a85e00e76d21a1f725b03cc9ca0ee647a99debd0c1ab13a08832090ce62e0cd423b88e816b640279e750b7ec7e812b0ed8c784a28d8f8
|
data/bin/Changes
CHANGED
|
@@ -7,6 +7,26 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 11.50. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to CPAN.)
|
|
9
9
|
|
|
10
|
+
July 2, 2019 - Version 11.54
|
|
11
|
+
|
|
12
|
+
- Added new Canon and Sony/Minolta LensType values (thanks LibRaw)
|
|
13
|
+
- Added a number of new Sony/Minolta LensType values (thanks Jos Roost)
|
|
14
|
+
- Added "Unknown" value for new EXIF CompositeImage tag
|
|
15
|
+
- Added ability to write GSpherical tags in video track of MOV/MP4 files
|
|
16
|
+
- Added support for geotagging from GPS/IMU CSV-format files
|
|
17
|
+
- Improved Russian translation (thanks Alexander)
|
|
18
|
+
- Improved Validate feature to check ExifVersion/GPSVersionID numbers
|
|
19
|
+
- Accept unsigned numbers when setting GPSAltitudeRef from a numerical value
|
|
20
|
+
- Fixed decoding of DepthMapWidth/Height for some Samsung live-focus images
|
|
21
|
+
- Fixed a couple of incorrect/incomplete CanonModelID values (thanks LibRaw)
|
|
22
|
+
- Fixed problem identifying some Canon lenses when used on a Sony camera with
|
|
23
|
+
a Metabones adapter
|
|
24
|
+
- API Changes:
|
|
25
|
+
- Added FilterW option
|
|
26
|
+
- Enhanced Compact option to improve flexibility and include features of
|
|
27
|
+
XMPShorthand option
|
|
28
|
+
- Removed XMPShorthand option from documentation
|
|
29
|
+
|
|
10
30
|
June 24, 2019 - Version 11.53 - "Exif 2.32"
|
|
11
31
|
|
|
12
32
|
- Added support for the new tags of the Exif 2.32 specification
|
|
@@ -1398,16 +1418,16 @@ Oct. 5, 2016 - Version 10.29
|
|
|
1398
1418
|
(ie. the date/time is not converted) unless the API StrictDate option is set
|
|
1399
1419
|
in which case a warning is issued and the tag is not written
|
|
1400
1420
|
|
|
1401
|
-
Sept. 27, 2016 - Version 10.28 - "
|
|
1421
|
+
Sept. 27, 2016 - Version 10.28 - "Exif 2.31"
|
|
1402
1422
|
|
|
1403
|
-
- Added support for new
|
|
1423
|
+
- Added support for new Exif 2.31 tags
|
|
1404
1424
|
- Added some new Canon LensType values (thanks Norbert Wasser for one)
|
|
1405
1425
|
- Added a new Olympus LensType (thanks LibRaw and Niels Kristian Bech Jensen)
|
|
1406
1426
|
- Added a new Sony LensType and SonyModelID (thanks Jos Roost)
|
|
1407
1427
|
- Added a new Pentax LensType
|
|
1408
1428
|
- Added fotoware.config and bibble.config files to the distribution
|
|
1409
1429
|
- Made Composite SubSecDateTimeOriginal, SubSecCreateDate and SubSecModifyDate
|
|
1410
|
-
tags writable, and expanded to include new
|
|
1430
|
+
tags writable, and expanded to include new Exif 2.31 time zone tags
|
|
1411
1431
|
- Fixed problem writing user-defined structured tag elements with a dot (.) in
|
|
1412
1432
|
their tag ID
|
|
1413
1433
|
|
|
@@ -4288,7 +4308,7 @@ June 2, 2010 - Version 8.21
|
|
|
4288
4308
|
- Updated default GPSVersionID to 2.3.0.0 when writing
|
|
4289
4309
|
- Fixed bug geotagging from KML file (lat/long were swapped)
|
|
4290
4310
|
|
|
4291
|
-
May 26, 2010 - Version 8.20
|
|
4311
|
+
May 26, 2010 - Version 8.20 - "Exif 2.3"
|
|
4292
4312
|
|
|
4293
4313
|
- Added read support for Open Document files (ODP, ODS, ODT)
|
|
4294
4314
|
- Added Composite:AudioBitrate tag for VBR MPEG audio
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
|
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
|
|
|
104
104
|
terminal window to extract and run ExifTool:
|
|
105
105
|
|
|
106
106
|
cd ~/Desktop
|
|
107
|
-
gzip -dc Image-ExifTool-11.
|
|
108
|
-
cd Image-ExifTool-11.
|
|
107
|
+
gzip -dc Image-ExifTool-11.54.tar.gz | tar -xf -
|
|
108
|
+
cd Image-ExifTool-11.54
|
|
109
109
|
./exiftool t/images/ExifTool.jpg
|
|
110
110
|
|
|
111
111
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
use strict;
|
|
13
13
|
require 5.004;
|
|
14
14
|
|
|
15
|
-
my $version = '11.
|
|
15
|
+
my $version = '11.54';
|
|
16
16
|
|
|
17
17
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
18
18
|
my $exeDir;
|
|
@@ -140,6 +140,7 @@ my $deleteOrig; # 0=restore original files, 1=delete originals, 2=delete w/o
|
|
|
140
140
|
my $disableOutput; # flag to disable normal output
|
|
141
141
|
my $doSetFileName; # flag set if FileName may be written
|
|
142
142
|
my $doUnzip; # flag to extract info from .gz and .bz2 files
|
|
143
|
+
my $escapeC; # C-style escape
|
|
143
144
|
my $escapeHTML; # flag to escape printed values for html
|
|
144
145
|
my $evalWarning; # warning from eval
|
|
145
146
|
my $executeID; # -execute ID number
|
|
@@ -220,6 +221,11 @@ my $isCRLF = { MSWin32 => 1, os2 => 1, dos => 1 }->{$^O};
|
|
|
220
221
|
# lookup for JSON characters that we escape specially
|
|
221
222
|
my %jsonChar = ( '"'=>'"', '\\'=>'\\', "\t"=>'t', "\n"=>'n', "\r"=>'r' );
|
|
222
223
|
|
|
224
|
+
# lookup for C-style escape sequences
|
|
225
|
+
my %escC = ( "\n" => '\n', "\r" => '\r', "\t" => '\t', '\\' => '\\\\');
|
|
226
|
+
my %unescC = ( a => "\a", b => "\b", f => "\f", n => "\n", r => "\r",
|
|
227
|
+
t => "\t", 0 => "\0", '\\' => '\\' );
|
|
228
|
+
|
|
223
229
|
# options requiring additional arguments
|
|
224
230
|
# (used only to skip over these arguments when reading -stay_open ARGFILE)
|
|
225
231
|
# (arg is converted to lower case then tested again unless an entry was found with the same case)
|
|
@@ -429,6 +435,7 @@ undef $disableOutput;
|
|
|
429
435
|
undef $doSetFileName;
|
|
430
436
|
undef $doUnzip;
|
|
431
437
|
undef $escapeHTML;
|
|
438
|
+
undef $escapeC;
|
|
432
439
|
undef $evalWarning;
|
|
433
440
|
undef $executeID;
|
|
434
441
|
undef $failCondition;
|
|
@@ -827,6 +834,7 @@ for (;;) {
|
|
|
827
834
|
(/^e$/ or $a eq '-composite') and $mt->Options(Composite => 0), next;
|
|
828
835
|
(/^-e$/ or $a eq 'composite') and $mt->Options(Composite => 1), next;
|
|
829
836
|
(/^E$/ or $a eq 'escapehtml') and require Image::ExifTool::HTML and $escapeHTML = 1, next;
|
|
837
|
+
($a eq 'ec' or $a eq 'escapec') and $escapeC = 1, next; # (undocumented) added in 11.54
|
|
830
838
|
($a eq 'ex' or $a eq 'escapexml') and $escapeXML = 1, next;
|
|
831
839
|
if (/^echo(\d)?$/i) {
|
|
832
840
|
my $n = $1 || 1;
|
|
@@ -1005,7 +1013,7 @@ for (;;) {
|
|
|
1005
1013
|
/^(m|ignoreminorerrors)$/i and $mt->Options(IgnoreMinorErrors => 1), next;
|
|
1006
1014
|
/^(n|-printconv)$/i and $mt->Options(PrintConv => 0), next;
|
|
1007
1015
|
/^(-n|printconv)$/i and $mt->Options(PrintConv => 1), next;
|
|
1008
|
-
$a eq 'nop' and $helped=1, next; # undocumented
|
|
1016
|
+
$a eq 'nop' and $helped=1, next; # (undocumented) no operation, added in 11.25
|
|
1009
1017
|
if (/^o(ut)?$/i) {
|
|
1010
1018
|
$outOpt = shift;
|
|
1011
1019
|
defined $outOpt or Error("Expected output file or directory name for -o option\n"), $badCmd=1, next;
|
|
@@ -1048,7 +1056,7 @@ for (;;) {
|
|
|
1048
1056
|
}
|
|
1049
1057
|
/^q(uiet)?$/i and ++$quiet, next;
|
|
1050
1058
|
/^r(ecurse)?(\.?)$/i and $recurse = ($2 ? 2 : 1), next;
|
|
1051
|
-
if ($a eq 'require') { # undocumented
|
|
1059
|
+
if ($a eq 'require') { # (undocumented) added in version 8.65
|
|
1052
1060
|
my $ver = shift;
|
|
1053
1061
|
unless (defined $ver and Image::ExifTool::IsFloat($ver)) {
|
|
1054
1062
|
Error("Expecting version number for -require option\n");
|
|
@@ -1574,6 +1582,9 @@ if (@newValues) {
|
|
|
1574
1582
|
# set $newVal to '' if deleting nothing
|
|
1575
1583
|
$newVal = '' if $1 eq '-' and not defined $newVal;
|
|
1576
1584
|
}
|
|
1585
|
+
if ($escapeC and defined $newVal) {
|
|
1586
|
+
$newVal =~ s/\\(x([0-9a-fA-F]{2})|.)/$2 ? chr(hex($2)) : $unescC{$1} || $1/seg;
|
|
1587
|
+
}
|
|
1577
1588
|
my ($rtn, $wrn) = $mt->SetNewValue($tag, $newVal, %opts);
|
|
1578
1589
|
$needSave = 1;
|
|
1579
1590
|
++$isWriting if $rtn;
|
|
@@ -2439,10 +2450,14 @@ TAG: foreach $tag (@foundTags) {
|
|
|
2439
2450
|
}
|
|
2440
2451
|
}
|
|
2441
2452
|
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2453
|
+
if ($escapeC) {
|
|
2454
|
+
$val =~ s/([\0-\x1f\\\x7f])/$escC{$1} || sprintf('\x%.2x', ord $1)/eg;
|
|
2455
|
+
} else {
|
|
2456
|
+
# translate unprintable chars in value and remove trailing spaces
|
|
2457
|
+
$val =~ tr/\x01-\x1f\x7f/./;
|
|
2458
|
+
$val =~ s/\x00//g;
|
|
2459
|
+
$val =~ s/\s+$//;
|
|
2460
|
+
}
|
|
2446
2461
|
|
|
2447
2462
|
if ($html) {
|
|
2448
2463
|
print $fp "<tr>";
|
|
@@ -5119,7 +5134,7 @@ with this command:
|
|
|
5119
5134
|
|
|
5120
5135
|
produces output like this:
|
|
5121
5136
|
|
|
5122
|
-
-- Generated by ExifTool 11.
|
|
5137
|
+
-- Generated by ExifTool 11.54 --
|
|
5123
5138
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5124
5139
|
(f/5.6, 1/60s, ISO 100)
|
|
5125
5140
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5788,7 +5803,7 @@ available). When writing, causes compressed information to be written if
|
|
|
5788
5803
|
supported by the metadata format (eg. compressed textual metadata in PNG),
|
|
5789
5804
|
disables the recommended padding in embedded XMP (saving 2424 bytes when
|
|
5790
5805
|
writing XMP in a file), and writes XMP in shorthand format -- the equivalent
|
|
5791
|
-
of setting the API Compress
|
|
5806
|
+
of setting the API Compress and Compact="Padding,Shorthand".
|
|
5792
5807
|
|
|
5793
5808
|
=back
|
|
5794
5809
|
|
|
@@ -6066,9 +6081,10 @@ previews in a directory where other JPG images may exist:
|
|
|
6066
6081
|
|
|
6067
6082
|
exiftool -ext nef -tagsfromfile @ -srcfile %d%f.jpg dir
|
|
6068
6083
|
|
|
6069
|
-
If than one B<-srcfile> option is specified, the files are tested in
|
|
6070
|
-
and the first existing source file is processed. If none of the
|
|
6071
|
-
files already exist, then exiftool uses the first B<-srcfile>
|
|
6084
|
+
If more than one B<-srcfile> option is specified, the files are tested in
|
|
6085
|
+
order and the first existing source file is processed. If none of the
|
|
6086
|
+
source files already exist, then exiftool uses the first B<-srcfile>
|
|
6087
|
+
specified.
|
|
6072
6088
|
|
|
6073
6089
|
A I<FMT> of C<@> may be used to represent the original I<FILE>, which may be
|
|
6074
6090
|
useful when specifying multiple B<-srcfile> options (eg. to fall back to
|
data/bin/lib/Image/ExifTool.pm
CHANGED
|
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
|
28
28
|
%jpegMarker %specialTags %fileTypeLookup);
|
|
29
29
|
|
|
30
|
-
$VERSION = '11.
|
|
30
|
+
$VERSION = '11.54';
|
|
31
31
|
$RELEASE = '';
|
|
32
32
|
@ISA = qw(Exporter);
|
|
33
33
|
%EXPORT_TAGS = (
|
|
@@ -90,6 +90,7 @@ sub GetExtended($$);
|
|
|
90
90
|
sub Set64u(@);
|
|
91
91
|
sub DecodeBits($$;$);
|
|
92
92
|
sub EncodeBits($$;$$);
|
|
93
|
+
sub Filter($@);
|
|
93
94
|
sub HexDump($;$%);
|
|
94
95
|
sub DumpTrailer($$);
|
|
95
96
|
sub DumpUnknownTrailer($$);
|
|
@@ -915,6 +916,25 @@ my %weakMagic = ( MP3 => 1 );
|
|
|
915
916
|
# (when done, the process proc must exit after SetFileType if FastScan is 3)
|
|
916
917
|
my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard);
|
|
917
918
|
|
|
919
|
+
# Compact/XMPShorthand option settings
|
|
920
|
+
my %compactOpt = (
|
|
921
|
+
nopadding => 'NoPadding', noindent => 'NoIndent', nonewline => 'NoNewline',
|
|
922
|
+
shorthand => 'Shorthand', onedesc => 'OneDesc',
|
|
923
|
+
all => ['NoPadding','NoIndent','NoNewline','Shorthand','OneDesc'],
|
|
924
|
+
allspace => ['NoPadding','NoIndent','NoNewline'], allformat => ['Shorthand','OneDesc'],
|
|
925
|
+
# aliases to cover anticipated user typos
|
|
926
|
+
nonewlines => 'NoNewline', nospace => 'NoIndent', nospaces => 'NoIndent',
|
|
927
|
+
nopad => 'NoPadding', onedescr => 'OneDesc',
|
|
928
|
+
# allow numerical settings for backward compatibility
|
|
929
|
+
0 => 'None',
|
|
930
|
+
1 => 'NoPadding',
|
|
931
|
+
2 => ['NoPadding','NoIndent'],
|
|
932
|
+
3 => ['NoPadding','NoIndent','OneDesc'],
|
|
933
|
+
4 => ['NoPadding','NoIndent','OneDesc','NoNewline'],
|
|
934
|
+
5 => ['NoPadding','NoIndent','OneDesc','NoNewline','Shorthand'],
|
|
935
|
+
);
|
|
936
|
+
my %xmpShorthandOpt = ( 0 => 'None', 1 => 'Shorthand', 2 => ['Shorthand','OneDesc'] );
|
|
937
|
+
|
|
918
938
|
# lookup for valid character set names (keys are all lower case)
|
|
919
939
|
%charsetName = (
|
|
920
940
|
# Charset setting alias(es)
|
|
@@ -1951,6 +1971,8 @@ sub Options($$;@)
|
|
|
1951
1971
|
}
|
|
1952
1972
|
}
|
|
1953
1973
|
$oldVal = $$options{$param};
|
|
1974
|
+
# get previous Compact/XMPShorthand setting
|
|
1975
|
+
$oldVal = $$oldVal{$param} if ref $oldVal eq 'HASH';
|
|
1954
1976
|
last unless @_;
|
|
1955
1977
|
my $newVal = shift;
|
|
1956
1978
|
if ($param eq 'Lang') {
|
|
@@ -2054,6 +2076,23 @@ sub Options($$;@)
|
|
|
2054
2076
|
$$options{$param} = $newVal;
|
|
2055
2077
|
# set the new ListJoin option for forward compatibility
|
|
2056
2078
|
$$options{ListJoin} = $newVal ? undef : $$options{ListSep};
|
|
2079
|
+
} elsif ($param eq 'Compact' or $param eq 'XMPShorthand') {
|
|
2080
|
+
# set Compact and XMPShorthand options, preserving backward compatibility
|
|
2081
|
+
my ($p, %compact);
|
|
2082
|
+
foreach $p ('Compact','XMPShorthand') {
|
|
2083
|
+
my $val = $param eq $p ? $newVal : $$options{Compact}{$p};
|
|
2084
|
+
if (defined $val) {
|
|
2085
|
+
my @v = ($val =~ /\w+/g);
|
|
2086
|
+
my $opt = ($p eq 'Compact') ? \%compactOpt : \%xmpShorthandOpt;
|
|
2087
|
+
foreach (@v) {
|
|
2088
|
+
my $set = $$opt{lc $_} or warn("Invalid $p setting '${_}'\n"), return $oldVal;
|
|
2089
|
+
ref $set or $compact{$set} = 1, next;
|
|
2090
|
+
$compact{$_} = 1 foreach @$set;
|
|
2091
|
+
}
|
|
2092
|
+
}
|
|
2093
|
+
$compact{$p} = $val; # preserve most recent setting
|
|
2094
|
+
}
|
|
2095
|
+
$$options{Compact} = $$options{XMPShorthand} = \%compact;
|
|
2057
2096
|
} else {
|
|
2058
2097
|
if ($param eq 'Escape') {
|
|
2059
2098
|
# set ESCAPE_PROC
|
|
@@ -2109,7 +2148,7 @@ sub ClearOptions($)
|
|
|
2109
2148
|
CharsetPhotoshop => 'Latin', # internal encoding for Photoshop resource names
|
|
2110
2149
|
CharsetQuickTime => 'MacRoman', # internal QuickTime string encoding
|
|
2111
2150
|
CharsetRIFF => 0, # internal RIFF string encoding (0=default to Latin)
|
|
2112
|
-
Compact =>
|
|
2151
|
+
Compact => { }, # write compact XMP
|
|
2113
2152
|
Composite => 1, # flag to calculate Composite tags
|
|
2114
2153
|
Compress => undef, # flag to write new values as compressed if possible
|
|
2115
2154
|
CoordFormat => undef, # GPS lat/long coordinate format
|
|
@@ -2121,6 +2160,7 @@ sub ClearOptions($)
|
|
|
2121
2160
|
ExtractEmbedded =>undef,# flag to extract information from embedded documents
|
|
2122
2161
|
FastScan => undef, # flag to avoid scanning for trailer
|
|
2123
2162
|
Filter => undef, # output filter for all tag values
|
|
2163
|
+
FilterW => undef, # input filter when writing tag values
|
|
2124
2164
|
FixBase => undef, # fix maker notes base offsets
|
|
2125
2165
|
GeoMaxIntSecs => 1800, # geotag maximum interpolation time (secs)
|
|
2126
2166
|
GeoMaxExtSecs => 1800, # geotag maximum extrapolation time (secs)
|
|
@@ -2168,7 +2208,7 @@ sub ClearOptions($)
|
|
|
2168
2208
|
WriteMode => 'wcg', # enable all write modes by default
|
|
2169
2209
|
XAttrTags => undef, # extract MacOS extended attribute tags
|
|
2170
2210
|
XMPAutoConv => 1, # automatic conversion of unknown XMP tag values
|
|
2171
|
-
XMPShorthand=> 0, #
|
|
2211
|
+
XMPShorthand=> 0, # (unused, but needed for backward compatibility)
|
|
2172
2212
|
};
|
|
2173
2213
|
# keep necessary member variables in sync with options
|
|
2174
2214
|
delete $$self{CUR_LANG};
|
|
@@ -3085,7 +3125,7 @@ sub GetValue($$;$)
|
|
|
3085
3125
|
# $valueConv is undefined if there was no print conversion done
|
|
3086
3126
|
$valueConv = $value;
|
|
3087
3127
|
}
|
|
3088
|
-
|
|
3128
|
+
Filter($$self{OPTIONS}{Filter}, \$value);
|
|
3089
3129
|
# return Both values as a list (ValueConv, PrintConv)
|
|
3090
3130
|
return ($valueConv, $value);
|
|
3091
3131
|
}
|
|
@@ -3093,7 +3133,7 @@ sub GetValue($$;$)
|
|
|
3093
3133
|
DoEscape($value, $$self{ESCAPE_PROC}) if $$self{ESCAPE_PROC};
|
|
3094
3134
|
|
|
3095
3135
|
# filter if necessary
|
|
3096
|
-
|
|
3136
|
+
Filter($$self{OPTIONS}{Filter}, \$value) if $$self{OPTIONS}{Filter} and $type eq 'PrintConv';
|
|
3097
3137
|
|
|
3098
3138
|
if (ref $value eq 'ARRAY') {
|
|
3099
3139
|
if (defined $$self{OPTIONS}{ListItem}) {
|
|
@@ -5243,32 +5283,32 @@ sub GetDescriptions($$)
|
|
|
5243
5283
|
|
|
5244
5284
|
#------------------------------------------------------------------------------
|
|
5245
5285
|
# Apply filter to value(s) if necessary
|
|
5246
|
-
# Inputs: 0)
|
|
5286
|
+
# Inputs: 0) filter expression, 1-N) references to values(s) to filter
|
|
5247
5287
|
# Returns: nothing, but changes values if necessary
|
|
5248
5288
|
sub Filter($@)
|
|
5249
5289
|
{
|
|
5250
5290
|
local $_;
|
|
5251
|
-
my $
|
|
5252
|
-
return unless defined
|
|
5291
|
+
my $filter = shift;
|
|
5292
|
+
return unless defined $filter;
|
|
5253
5293
|
while (@_) {
|
|
5254
5294
|
my $valPt = shift;
|
|
5255
5295
|
next unless defined $$valPt;
|
|
5256
5296
|
if (not ref $$valPt) {
|
|
5257
5297
|
$_ = $$valPt;
|
|
5258
5298
|
#### eval Filter ($_)
|
|
5259
|
-
eval
|
|
5299
|
+
eval $filter;
|
|
5260
5300
|
$$valPt = $_ if defined $_;
|
|
5261
5301
|
} elsif (ref $$valPt eq 'SCALAR') {
|
|
5262
5302
|
my $val = $$$valPt; # make a copy to avoid filtering twice
|
|
5263
|
-
|
|
5303
|
+
Filter($filter, \$val);
|
|
5264
5304
|
$$valPt = \$val;
|
|
5265
5305
|
} elsif (ref $$valPt eq 'ARRAY') {
|
|
5266
5306
|
my @val = @{$$valPt}; # make a copy to avoid filtering twice
|
|
5267
|
-
|
|
5307
|
+
Filter($filter, \$_) foreach @val;
|
|
5268
5308
|
$$valPt = \@val;
|
|
5269
5309
|
} elsif (ref $$valPt eq 'HASH') {
|
|
5270
5310
|
my %val = %{$$valPt}; # make a copy to avoid filtering twice
|
|
5271
|
-
|
|
5311
|
+
Filter($filter, \$val{$_}) foreach keys %val;
|
|
5272
5312
|
$$valPt = \%val;
|
|
5273
5313
|
}
|
|
5274
5314
|
}
|
|
@@ -5990,7 +6030,7 @@ sub ProcessJPEG($$)
|
|
|
5990
6030
|
if ($$options{Binary}) {
|
|
5991
6031
|
$val = \$buff if $raf->Seek($pos,0) and $raf->Read($buff,$len)==$len;
|
|
5992
6032
|
} else {
|
|
5993
|
-
$val = "
|
|
6033
|
+
$val = \ "Binary data $len bytes";
|
|
5994
6034
|
}
|
|
5995
6035
|
if ($val) {
|
|
5996
6036
|
$self->FoundTag('EmbeddedVideo', $val);
|
data/bin/lib/Image/ExifTool.pod
CHANGED
|
@@ -529,15 +529,19 @@ without recoding. Default is 0.
|
|
|
529
529
|
|
|
530
530
|
=item Compact
|
|
531
531
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
532
|
+
Comma-delimited list of settings for writing compact XMP. Below is a list
|
|
533
|
+
of available settings. Note that 'NoPadding' effects only embedded XMP
|
|
534
|
+
since padding is never written for stand-alone XMP files. Case is not
|
|
535
|
+
significant. Default is undef.
|
|
536
|
+
|
|
537
|
+
NoPadding - Avoid 2 kB of recommended padding at end of XMP
|
|
538
|
+
NoIndent - Avoid spaces to indent lines for readability
|
|
539
|
+
NoNewline - Avoid unnecessary newlines
|
|
540
|
+
Shorthand - Use XMP Shorthand format
|
|
541
|
+
OneDesc - Combine XMP properties into a single rdf:Description
|
|
542
|
+
AllSpace - Equivalent to 'NoPadding,NoIndent,NoNewline'
|
|
543
|
+
AllFormat - Equivalent to 'Shorthand,OneDesc'
|
|
544
|
+
All - Equivalent to 'AllSpace,AllFormat'
|
|
541
545
|
|
|
542
546
|
=item Composite
|
|
543
547
|
|
|
@@ -606,10 +610,10 @@ GUID specified by the HasExtendedXMP tag, so by default ExifTool will ignore
|
|
|
606
610
|
other extended XMP, but this option allows full control over the extended
|
|
607
611
|
XMP to be extracted.
|
|
608
612
|
|
|
609
|
-
0 -
|
|
610
|
-
1 -
|
|
611
|
-
2 -
|
|
612
|
-
<guid> -
|
|
613
|
+
0 - Ignore all extended XMP
|
|
614
|
+
1 - Read extended XMP with valid GUID only (default)
|
|
615
|
+
2 - Read extended XMP with any GUID
|
|
616
|
+
<guid> - Read extended XMP with a specific GUID
|
|
613
617
|
|
|
614
618
|
=item ExtractEmbedded
|
|
615
619
|
|
|
@@ -643,6 +647,13 @@ variable as required. The value is not changed if $_ is set to undef. List
|
|
|
643
647
|
items are filtered individually. Applies to all returned values unless
|
|
644
648
|
PrintConv option is disabled.
|
|
645
649
|
|
|
650
|
+
=item FilterW
|
|
651
|
+
|
|
652
|
+
Perl expression used to filter PrintConv values when writing. The
|
|
653
|
+
expression acts on the value of the Perl default variable ($_), and changes
|
|
654
|
+
the value of this variable as required. The value is not changed if $_ is
|
|
655
|
+
set to undef.
|
|
656
|
+
|
|
646
657
|
=item FixBase
|
|
647
658
|
|
|
648
659
|
Fix maker notes base offset. A common problem with image editing software
|
|
@@ -999,11 +1010,6 @@ and L<Image::ExifTool::TagNames/MacOS XAttr Tags> for more information).
|
|
|
999
1010
|
Flag to enable automatic conversion for unknown XMP tags with values that
|
|
1000
1011
|
look like rational numbers or dates. Default is 1.
|
|
1001
1012
|
|
|
1002
|
-
=item XMPShorthand
|
|
1003
|
-
|
|
1004
|
-
Set to 1 to write xmp in shorthand format, or 2 to also combine properties
|
|
1005
|
-
into a single rdf:Description element. Default is 0.
|
|
1006
|
-
|
|
1007
1013
|
=back
|
|
1008
1014
|
|
|
1009
1015
|
=item Return Values:
|
|
@@ -1185,7 +1191,7 @@ The following ExifTool options are effective in the call to L</WriteInfo>:
|
|
|
1185
1191
|
|
|
1186
1192
|
ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact,
|
|
1187
1193
|
Compress, FixBase, IgnoreMinorErrors, Password, PNGEarlyXMP,
|
|
1188
|
-
QuickTimeHandler, Verbose
|
|
1194
|
+
QuickTimeHandler, Verbose and WriteMode.
|
|
1189
1195
|
|
|
1190
1196
|
=head2 GetTagList
|
|
1191
1197
|
|