exiftool_vendored 12.32.0 → 12.36.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +77 -3
  3. data/bin/META.json +1 -1
  4. data/bin/META.yml +1 -1
  5. data/bin/README +2 -2
  6. data/bin/exiftool +57 -39
  7. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -2
  8. data/bin/lib/Image/ExifTool/CBOR.pm +85 -31
  9. data/bin/lib/Image/ExifTool/Canon.pm +28 -3
  10. data/bin/lib/Image/ExifTool/Charset.pm +2 -0
  11. data/bin/lib/Image/ExifTool/Exif.pm +109 -3
  12. data/bin/lib/Image/ExifTool/FLIR.pm +33 -8
  13. data/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
  14. data/bin/lib/Image/ExifTool/JSON.pm +4 -2
  15. data/bin/lib/Image/ExifTool/Jpeg2000.pm +111 -12
  16. data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
  17. data/bin/lib/Image/ExifTool/Nikon.pm +637 -16
  18. data/bin/lib/Image/ExifTool/NikonCustom.pm +5 -1
  19. data/bin/lib/Image/ExifTool/NikonSettings.pm +67 -11
  20. data/bin/lib/Image/ExifTool/Olympus.pm +5 -1
  21. data/bin/lib/Image/ExifTool/PDF.pm +5 -3
  22. data/bin/lib/Image/ExifTool/QuickTime.pm +21 -2
  23. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
  24. data/bin/lib/Image/ExifTool/README +6 -2
  25. data/bin/lib/Image/ExifTool/Sony.pm +31 -11
  26. data/bin/lib/Image/ExifTool/TagInfoXML.pm +9 -4
  27. data/bin/lib/Image/ExifTool/TagLookup.pm +5054 -4455
  28. data/bin/lib/Image/ExifTool/TagNames.pod +1185 -23
  29. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -0
  30. data/bin/lib/Image/ExifTool/Writer.pl +45 -3
  31. data/bin/lib/Image/ExifTool/XMP.pm +111 -25
  32. data/bin/lib/Image/ExifTool/XMP2.pl +3 -1
  33. data/bin/lib/Image/ExifTool.pm +83 -19
  34. data/bin/lib/Image/ExifTool.pod +9 -1
  35. data/bin/perl-Image-ExifTool.spec +1 -1
  36. data/lib/exiftool_vendored/version.rb +1 -1
  37. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0bc0b6355809096e7387138e8c7f308c4936ec9b0cdb4ce1461aadcae9ae2381
4
- data.tar.gz: 67a7595eb439fa6601eaf2a5e6bb90ec67de6f84094133a5c1f7490c5dd5b300
3
+ metadata.gz: 860e8f065a884ee45be833825836c1ffc919cae259edd1c4436c87524e714f49
4
+ data.tar.gz: b3fc9dd82c202b55b7a6952938996255560035b8cf45645e00a42c9d9a05747f
5
5
  SHA512:
6
- metadata.gz: 859265135559c94c11c104df0804ab031e8c0ffa648b3249e824ceaaa273420a4190b14e77f03855cd6a3e8685938e58a0d48a9b57aa2ceebca2314d20804676
7
- data.tar.gz: 35e9504f1ae4d31477f721cd94dad5da1740f2324e53242930600eb7b12abe17e3501e7fa7fe19c3a947516d1169a37d12a6e54465a96a2e2a7e55f4b03f2656
6
+ metadata.gz: 1b233fba0025620a972fee0c757fd1176ce3a64f208441a9bc95169c13d57270720f3fe2808643ab301feaacccc0ae471244374ccfba1dc34e885efc64b180ec
7
+ data.tar.gz: fd4dfe483295162f230ffae226867295c79f89848af21c0f0b69fe95924bbb0e09d944dc6af71acded089c4b2230687f23a6c92cd2d471a64eda08d54a6bc8a4
data/bin/Changes CHANGED
@@ -7,6 +7,77 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.30. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Nov. 16, 2021 - Version 12.36
11
+
12
+ - IMPORTANT: Fixed bug introduced in 12.35 which corrupted JPEG 2000 images
13
+ when removing all metadata with -all=
14
+ - Added feature to bypass processing of specified XMP namespaces and
15
+ properties (to improve performance in cases where the XMP suffers from
16
+ Adobe-editing bloat)
17
+ - Added a number of new XMP tags used by Lightroom 11.0
18
+ - Decode a number of new Nikon tags (thanks Warren Hatch)
19
+ - Made the Composite GPSPosition tag writable
20
+ - Fixed erroneous "Skipped unknown bytes after JPEG SOS" warning
21
+ - Fixed group for new writable Jpeg2000 color tags in -listx output
22
+ - Fixed problem finding files in windows when using wildcards in file name and
23
+ a drive letter with no slash
24
+
25
+ Nov. 11, 2021 - Version 12.35
26
+
27
+ - Added ability to write ICC_Profile (and other color specifications) to
28
+ Jpeg2000 images
29
+ - Added %o code to -W option format string
30
+ - Added %f code to -d option for fractional seconds
31
+ - Added a couple of new Sony LensType values (thanks Jos Roost)
32
+ - Added a new CanonModelID (thanks Norbert Wasser)
33
+ - Added a new Nikon LensID
34
+ - Decode more Nikon MakerNotes tags for some new models (thanks Warren Hatch)
35
+ - Extract ThumbnailImage from some DJI drone videos
36
+ - Enhanced -ee option to extract metadata from all frames in a SEQ file
37
+ - Patched to avoid possible "Use of uninitialized value" runtime warning
38
+ - Fixed a couple of misspelt new ICC_Profile tag names (thanks Herb)
39
+ - Fixed problem generating the correct file extension when extracting
40
+ OriginalRawImage from a DNG file using the -W option with the %s format code
41
+ - Fixed bug introduced in 11.91 where exiftool couldn't find its libraries
42
+ when run via a soft link. Also changed to look for config file in the link
43
+ target directory instead of the directory of the link itself
44
+
45
+ Oct. 27, 2021 - Version 12.34
46
+
47
+ - Added support for ICC.2:2019 (Profile version 5.0.0 - iccMAX) color profiles
48
+ - Added ability to detect/delete a Windows Zone.Identifier alternate data
49
+ stream (ADS) via the new ZoneIdentifier tag (thanks Alex Xu)
50
+ - Added support for the Sony ILCE-7M4 (thanks Jos Roost)
51
+ - Added a new Sony lens (thanks LibRaw and Jos Roost)
52
+ - Added a new SonyModelID (thanks LibRaw)
53
+ - Added a new Canon RF lens (thanks Norbert Wasser)
54
+ - Improved handling of some SVG files
55
+ - Patched -overwrite_original_in_place option to open the output file in
56
+ update mode rather than write mode (to allow some write optimizations on
57
+ certain filesystems) (thanks Joel Low)
58
+ - Fixed case of tag ID for new XMP-iptcExt:EventID (thanks Michael Steidl)
59
+ - Fixed problem extracting ICC_Profile information from some PDF files
60
+ - API Changes:
61
+ - Added QuickTimePad option
62
+
63
+ Oct. 16, 2021 - Version 12.33
64
+
65
+ - Added support for DNG version 1.6.0.0
66
+ - Added two new Sony LensType values (thanks Jos Roost and LibRaw)
67
+ - Added some new elements to the XMP-crs:Look structure (thanks Herb)
68
+ - Added a few new IPTC XMP tags (thanks Michael Steidl)
69
+ - Added a new Canon RF lens (thanks Norbert Wasser)
70
+ - Decode Canon ShutterMode (thanks John Moyer)
71
+ - Extract LensModel from some Olympus MOV videos
72
+ - Generate MediaDataOffset/Size for MOV videos with zero-sized MDAT chunk
73
+ - Improvements to CBOR reader, including hex dump with -v3 option
74
+ - Recognize Final Cut Pro XML files
75
+ - Allow binary data of Protected tags to be extracted with the -X -j and -php
76
+ options with -b by setting the API RequestAll option to 3
77
+ - Changed name of "Canon EF 80-200mm f/4.5-5.6" lens with LensType 38 to add
78
+ "II" to the name (Exiv2 issue 1906)
79
+ - Fixed runtime warning when processing files with a .DIR extension
80
+
10
81
  Sept. 30, 2021 - Version 12.32
11
82
 
12
83
  - Added support for CBOR-format metadata in JUMBF (note that JUMBF support is
@@ -117,6 +188,8 @@ May 20, 2021 - Version 12.26 (production release)
117
188
  - Fixed problem which could cause a "Wide character" warning and generate a
118
189
  corrupted output file when writing some illegal values
119
190
 
191
+ History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
192
+
120
193
  Apr. 22, 2021 - Version 12.25
121
194
 
122
195
  - JPEG XL support is now official
@@ -599,6 +672,7 @@ Mar. 19, 2020 - Version 11.92
599
672
 
600
673
  Mar. 5, 2020 - Version 11.91
601
674
 
675
+ - Added undocumented -xpath option for use by alternate Windows version
602
676
  - Decode a couple of new Panasonic tags
603
677
  - Documented -ec option (available since version 11.54)
604
678
  - Reverted -htmlDump fix of 11.90 because it broke more than it fixed, and
@@ -1484,8 +1558,8 @@ Oct. 9, 2018 - Version 11.13
1484
1558
  - Added a new Canon LensType (thanks LibRaw)
1485
1559
  - Minor improvements to verbose dump of streaming GPS metadata
1486
1560
  - Reverted change of version 10.71 which resulted in Windows not recognizing
1487
- PNG CreationTime as written by ExifTool (added this feature to the
1488
- StrictDate API option instead)
1561
+ PNG CreationTime as written by ExifTool (added this feature to the API
1562
+ StrictDate option instead)
1489
1563
  - Improved decoding of Nikon CropHiSpeed (thanks LibRaw)
1490
1564
  - Improved -fast option to reduce memory usage when reading JPG, PNG,
1491
1565
  QuickTime-based and RIFF-based files via a sequential stream
@@ -1599,7 +1673,7 @@ June 21, 2018 - Version 11.03
1599
1673
  June 13, 2018 - Version 11.02
1600
1674
 
1601
1675
  - Added support for a different format of Apple iWorks files
1602
- - Added undocumented FixCorruptedMOV API option to allow fixing MOV videos
1676
+ - Added undocumented API FixCorruptedMOV option to allow fixing MOV videos
1603
1677
  with multiple 'mdat' atoms which were corrupted by ExifTool
1604
1678
  - Decode more QuickTime tags
1605
1679
  - Decode more PanasonicRaw tags (thanks Klaus Homeister)
data/bin/META.json CHANGED
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "12.32"
50
+ "version" : "12.36"
51
51
  }
data/bin/META.yml CHANGED
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 12.32
31
+ version: 12.36
data/bin/README CHANGED
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
107
107
  terminal window to extract and run ExifTool:
108
108
 
109
109
  cd ~/Desktop
110
- gzip -dc Image-ExifTool-12.32.tar.gz | tar -xf -
111
- cd Image-ExifTool-12.32
110
+ gzip -dc Image-ExifTool-12.36.tar.gz | tar -xf -
111
+ cd Image-ExifTool-12.36
112
112
  ./exiftool t/images/ExifTool.jpg
113
113
 
114
114
  Note: These commands extract meta information from one of the test images.
data/bin/exiftool CHANGED
@@ -10,24 +10,26 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '12.32';
13
+ my $version = '12.36';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
- my $exeDir;
17
16
  BEGIN {
18
17
  # (undocumented -xpath option added in 11.91, must come before other options)
19
- $Image::ExifTool::exePath = @ARGV && lc($ARGV[0]) eq '-xpath' && shift() ? $^X : $0;
18
+ my $exePath = @ARGV && lc($ARGV[0]) eq '-xpath' && shift() ? $^X : $0;
20
19
  # get exe directory
21
- $exeDir = ($Image::ExifTool::exePath =~ /(.*)[\\\/]/) ? $1 : '.';
20
+ my $exeDir = ($exePath =~ /(.*)[\\\/]/) ? $1 : '.';
21
+ my $incDir = ($0 =~ /(.*)[\\\/]/) ? "$1/lib" : './lib';
22
22
  if (-l $0) {
23
23
  my $lnk = eval { readlink $0 };
24
24
  if (defined $lnk) {
25
25
  my $lnkDir = ($lnk =~ /(.*)[\\\/]/) ? $1 : '.';
26
26
  $exeDir = (($lnk =~ m(^/)) ? '' : $exeDir . '/') . $lnkDir;
27
+ $incDir = "$exeDir/lib";
27
28
  }
28
29
  }
30
+ $Image::ExifTool::exeDir = $exeDir; # use our exeDir for loading config file
29
31
  # add lib directory at start of include path
30
- unshift @INC, ($0 =~ /(.*)[\\\/]/) ? "$1/lib" : './lib';
32
+ unshift @INC, $incDir;
31
33
  # load or disable config file if specified
32
34
  if (@ARGV and lc($ARGV[0]) eq '-config') {
33
35
  shift;
@@ -757,7 +759,7 @@ for (;;) {
757
759
  }
758
760
  my $fp = ($stayOpen == 1 ? \*STAYOPEN : \*ARGFILE);
759
761
  unless ($mt->Open($fp, $argFile)) {
760
- unless ($argFile !~ /^\// and $mt->Open($fp, "$exeDir/$argFile")) {
762
+ unless ($argFile !~ /^\// and $mt->Open($fp, "$Image::ExifTool::exeDir/$argFile")) {
761
763
  Error "Error opening arg file $argFile\n";
762
764
  $badCmd = 1;
763
765
  next
@@ -1235,7 +1237,7 @@ for (;;) {
1235
1237
  $textOverwrite += 2 if $t2 =~ /\+/; # append
1236
1238
  if ($t1 ne 'W' and lc($t1) ne 'tagout') {
1237
1239
  undef $tagOut;
1238
- } elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[tgs]/) {
1240
+ } elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[tgso]/) {
1239
1241
  $tagOut = 0; # append tags to one file
1240
1242
  } else {
1241
1243
  $tagOut = 1; # separate file for each tag
@@ -1619,7 +1621,7 @@ if (@newValues) {
1619
1621
  next;
1620
1622
  }
1621
1623
  my %opts = ( Shift => 0 ); # shift values if possible instead of adding/deleting
1622
- # allow writing of 'unsafe' tags unless specified by wildcard
1624
+ # allow writing of 'Unsafe' tags unless specified by wildcard
1623
1625
  $opts{Protected} = 1 unless $tag =~ /[?*]/;
1624
1626
 
1625
1627
  if ($tag =~ s/<// and defined $newVal) {
@@ -2285,7 +2287,7 @@ TAG: foreach $tag (@foundTags) {
2285
2287
  # avoid extracting Protected binary tags (eg. data blocks) [insider information]
2286
2288
  my $lcTag = lc $tag;
2287
2289
  $lcTag =~ s/ .*//;
2288
- next unless $$et{REQ_TAG_LOOKUP}{$lcTag};
2290
+ next unless $$et{REQ_TAG_LOOKUP}{$lcTag} or ($$et{OPTIONS}{RequestAll} || 0) > 2;
2289
2291
  }
2290
2292
  $val = ConvertBinary($val); # convert SCALAR references
2291
2293
  next unless defined $val;
@@ -2365,7 +2367,8 @@ TAG: foreach $tag (@foundTags) {
2365
2367
  }
2366
2368
  my @groups = $et->GetGroup($tag);
2367
2369
  $outfile and close($fp), undef($tmpText); # (shouldn't happen)
2368
- ($fp, $outfile, $append) = OpenOutputFile($orig, $tagName, \@groups, $ext);
2370
+ my $org = $et->GetValue('OriginalRawFileName') || $et->GetValue('OriginalFileName');
2371
+ ($fp, $outfile, $append) = OpenOutputFile($orig, $tagName, \@groups, $ext, $org);
2369
2372
  $fp or ++$countBad, next TAG;
2370
2373
  $tmpText = $outfile unless $append;
2371
2374
  }
@@ -3061,12 +3064,14 @@ sub SetImageInfo($$$)
3061
3064
  # temporarily disable CTRL-C during this critical operation
3062
3065
  $critical = 1;
3063
3066
  undef $tmpFile; # handle deletion of temporary file ourself
3064
- if ($et->Open(\*ORIG_FILE, $file, '>')) {
3067
+ if ($et->Open(\*ORIG_FILE, $file, '+<')) {
3065
3068
  binmode(ORIG_FILE);
3066
3069
  while (read(NEW_FILE, $buff, 65536)) {
3067
3070
  print ORIG_FILE $buff or $err = 1;
3068
3071
  }
3069
3072
  close(NEW_FILE);
3073
+ # Handle files being shorter than the original
3074
+ eval { truncate(ORIG_FILE, tell(ORIG_FILE)) } or $err = 1;
3070
3075
  close(ORIG_FILE) or $err = 1;
3071
3076
  if ($err) {
3072
3077
  Warn "Couldn't overwrite in place - $file\n";
@@ -3801,7 +3806,7 @@ sub FindFileWindows($$)
3801
3806
  my $enc = $et->Options('CharsetFileName');
3802
3807
  $wildfile = $et->Decode($wildfile, $enc, undef, 'UTF8') if $enc and $enc ne 'UTF8';
3803
3808
  $wildfile =~ tr/\\/\//; # use forward slashes
3804
- my ($dir, $wildname) = ($wildfile =~ m{(.*/)(.*)}) ? ($1, $2) : ('', $wildfile);
3809
+ my ($dir, $wildname) = ($wildfile =~ m{(.*[:/])(.*)}) ? ($1, $2) : ('', $wildfile);
3805
3810
  if ($dir =~ /[*?]/) {
3806
3811
  Warn "Wildcards don't work in the directory specification\n";
3807
3812
  return ();
@@ -3941,7 +3946,7 @@ sub SuggestedExtension($$$)
3941
3946
  $ext = 'xml';
3942
3947
  } elsif ($$valPt =~ /^RIFF....WAVE/s) {
3943
3948
  $ext = 'wav';
3944
- } elsif ($tag eq 'OriginalRawFileData' and defined($ext = $et->GetValue('OriginalRawFileName'))) {
3949
+ } elsif ($tag eq 'OriginalRawImage' and defined($ext = $et->GetValue('OriginalRawFileName'))) {
3945
3950
  $ext =~ s/^.*\.//s;
3946
3951
  $ext = $ext ? lc($ext) : 'raw';
3947
3952
  } elsif ($tag eq 'EXIF') {
@@ -3993,14 +3998,15 @@ sub LoadPrintFormat($)
3993
3998
  # A sort of sprintf for filenames
3994
3999
  # Inputs: 0) format string (%d=dir, %f=file name, %e=ext),
3995
4000
  # 1) source filename or undef to test format string
3996
- # 2-4) [%t %g %s only] tag name, ref to array of group names, suggested extension
4001
+ # 2-4) [%t %g %s %o only] tag name, ref to array of group names,
4002
+ # suggested extension, original raw file name
3997
4003
  # Returns: new filename or undef on error (or if no file and fmt contains token)
3998
4004
  sub FilenameSPrintf($;$@)
3999
4005
  {
4000
4006
  my ($fmt, $file, @extra) = @_;
4001
4007
  local $_;
4002
4008
  # return format string straight away if no tokens
4003
- return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[dDfFeEtgs]/;
4009
+ return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[dDfFeEtgso]/;
4004
4010
  return undef unless defined $file;
4005
4011
  CleanFilename($file); # make sure we are using forward slashes
4006
4012
  # split filename into directory, file, extension
@@ -4014,9 +4020,9 @@ sub FilenameSPrintf($;$@)
4014
4020
  }
4015
4021
  $part{F} = $part{f} . $part{E};
4016
4022
  ($part{D} = $part{d}) =~ s{/+$}{};
4017
- @part{qw(t g s)} = @extra;
4023
+ @part{qw(t g s o)} = @extra;
4018
4024
  my ($filename, $pos) = ('', 0);
4019
- while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgs]))/g) {
4025
+ while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgso]))/g) {
4020
4026
  $filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
4021
4027
  $pos = pos($fmt);
4022
4028
  my ($sign, $wid, $dot, $skip, $mod, $code) = ($2, $3, $4, $5 || 0, $6, $7);
@@ -4179,7 +4185,7 @@ sub OpenOutputFile($;@)
4179
4185
  if ($textOut) {
4180
4186
  $outfile = $file;
4181
4187
  CleanFilename($outfile);
4182
- if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[dDfFeEtgscC]/ or defined $tagOut) {
4188
+ if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[dDfFeEtgsocC]/ or defined $tagOut) {
4183
4189
  # make filename from printf-like $textOut
4184
4190
  $outfile = FilenameSPrintf($textOut, $file, @args);
4185
4191
  return () unless defined $outfile;
@@ -4716,6 +4722,14 @@ group delete (unless a family 2 group is specified, see note 4 below).
4716
4722
  Instead, individual tags may be recovered using the B<-tagsFromFile> option
4717
4723
  (eg. C<-all= -tagsfromfile @ -artist>).
4718
4724
 
4725
+ To speed processing when reading XMP, exclusions in XMP groups also bypass
4726
+ processing of the corresponding XMP property and any contained properties.
4727
+ For example, C<--xmp-crs:all> may speed processing significantly in cases
4728
+ where a large number of XMP-crs tags exist. To use this feature to bypass
4729
+ processing of a specific XMP property, the property name must be used
4730
+ instead of the ExifTool tag name (eg. C<--xmp-crs:dabs>). Also, C<XMP-all>
4731
+ may be used to to indicate any XMP namespace (eg. <C--xmp-all:dabs>).
4732
+
4719
4733
  =item B<->I<TAG>[+-^]B<=>[I<VALUE>]
4720
4734
 
4721
4735
  Write a new value for the specified tag (eg. C<-comment=wow>), or delete the
@@ -4732,11 +4746,11 @@ I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
4732
4746
  prefixed by optional family numbers, and separated colons. If no group name
4733
4747
  is specified, the tag is created in the preferred group, and updated in any
4734
4748
  other location where a same-named tag already exists. The preferred group
4735
- is the first group in the following list where I<TAG> is valid: 1) EXIF, 2)
4736
- IPTC, 3) XMP.
4749
+ in JPEG and TIFF-format images is the first group in the following list
4750
+ where I<TAG> is valid: 1) EXIF, 2) IPTC, 3) XMP.
4737
4751
 
4738
4752
  The wildcards C<*> and C<?> may be used in tag names to assign the same
4739
- value to multiple tags. When specified with wildcards, "unsafe" tags are
4753
+ value to multiple tags. When specified with wildcards, "Unsafe" tags are
4740
4754
  not written. A tag name of C<All> is equivalent to C<*> (except that it
4741
4755
  doesn't require quoting, while arguments with wildcards do on systems with
4742
4756
  shell globbing), and is often used when deleting all metadata (ie. C<-All=>)
@@ -4882,10 +4896,10 @@ See L</COPYING EXAMPLES> for examples using B<-tagsFromFile>.
4882
4896
  Notes:
4883
4897
 
4884
4898
  1) Some tags (generally tags which may affect the appearance of the image)
4885
- are considered "unsafe" to write, and are only copied if specified
4899
+ are considered "Unsafe" to write, and are only copied if specified
4886
4900
  explicitly (ie. no wildcards). See the
4887
4901
  L<tag name documentation|Image::ExifTool::TagNames> for more details about
4888
- "unsafe" tags.
4902
+ "Unsafe" tags.
4889
4903
 
4890
4904
  2) Be aware of the difference between excluding a tag from being copied
4891
4905
  (--I<TAG>), and deleting a tag (-I<TAG>=). Excluding a tag prevents it from
@@ -4983,7 +4997,7 @@ intermediate file (C<out.args> in this example):
4983
4997
  exiftool -@ out.args -sep ', ' dst.jpg
4984
4998
 
4985
4999
  Note: Be careful when copying information with this technique since it is
4986
- easy to write tags which are normally considered "unsafe". For instance,
5000
+ easy to write tags which are normally considered "Unsafe". For instance,
4987
5001
  the FileName and Directory tags are excluded in the example above to avoid
4988
5002
  renaming and moving the destination file. Also note that the second command
4989
5003
  above will produce warning messages for any tags which are not writable.
@@ -5003,8 +5017,8 @@ are in the default output. By default, list items are separated by a
5003
5017
  newline when extracted with the B<-b> option, but this may be changed (see
5004
5018
  the B<-sep> option for details). May be combined with B<-j>, B<-php> or
5005
5019
  B<-X> to extract binary data in JSON, PHP or XML format, but note that
5006
- "unsafe" tags must be specified explicitly to be extracted as binary in
5007
- these formats.
5020
+ "Unsafe" tags are not extracted as binary unless they are specified explicitly or
5021
+ the API RequestAll option is set to 3 or higher.
5008
5022
 
5009
5023
  With a leading double dash (B<--b> or B<--binary>), tags which contain
5010
5024
  binary data are suppressed in the output when reading.
@@ -5165,9 +5179,11 @@ various components of a date/time value. The specifics of the I<FMT> syntax
5165
5179
  are system dependent -- consult the C<strftime> man page on your system for
5166
5180
  details. The default format is equivalent to "%Y:%m:%d %H:%M:%S". This
5167
5181
  option has no effect on date-only or time-only tags and ignores timezone
5168
- information if present. Only one B<-d> option may be used per command.
5169
- Requires POSIX::strptime or Time::Piece for the inversion conversion when
5170
- writing.
5182
+ information if present. ExifTool adds a C<%f> format code to represent
5183
+ fractional seconds, and supports an optional width to specify the number of
5184
+ digits after the decimal point (eg. C<%3f> would give something like
5185
+ C<.437>). Only one B<-d> option may be used per command. Requires
5186
+ POSIX::strptime or Time::Piece for the inversion conversion when writing.
5171
5187
 
5172
5188
  =item B<-D> (B<-decimal>)
5173
5189
 
@@ -5205,7 +5221,7 @@ By default the resulting group name is simplified by removing any leading
5205
5221
  C<Main:> and collapsing adjacent identical group names, but this can be
5206
5222
  avoided by placing a colon before the first family number (eg. B<-g:3:1>).
5207
5223
  Use the B<-listg> option to list group names for a specified family. The
5208
- SavePath and SaveFormat API options are automatically enabled if the
5224
+ API SavePath and SaveFormat options are automatically enabled if the
5209
5225
  respective family 5 or 6 group names are requested. See the
5210
5226
  L<API GetGroup documentation|Image::ExifTool/GetGroup> for more information.
5211
5227
 
@@ -5408,7 +5424,7 @@ with this command:
5408
5424
 
5409
5425
  produces output like this:
5410
5426
 
5411
- -- Generated by ExifTool 12.32 --
5427
+ -- Generated by ExifTool 12.36 --
5412
5428
  File: a.jpg - 2003:10:31 15:44:19
5413
5429
  (f/5.6, 1/60s, ISO 100)
5414
5430
  File: b.jpg - 2006:05:23 11:57:38
@@ -5425,7 +5441,7 @@ are effectively processed as separate input files.
5425
5441
  If a specified tag does not exist, a minor warning is issued and the line
5426
5442
  with the missing tag is not printed. However, the B<-f> option may be used
5427
5443
  to set the value of missing tags to '-' (but this may be configured via the
5428
- MissingTagValue API option), or the B<-m> option may be used to ignore minor
5444
+ API MissingTagValue option), or the B<-m> option may be used to ignore minor
5429
5445
  warnings and leave the missing values empty. Alternatively, B<-q -q> may be
5430
5446
  used to simply suppress the warning messages.
5431
5447
 
@@ -5663,12 +5679,14 @@ between B<-W> and B<-w>:
5663
5679
 
5664
5680
  1) With B<-W>, a new output file is created for each extracted tag.
5665
5681
 
5666
- 2) B<-W> supports three additional format codes: %t, %g and %s represent
5667
- the tag name, group name, and suggested extension for the output file (based
5668
- on the format of the data). The %g code may be followed by a single digit
5669
- to specify the group family number (eg. %g1), otherwise family 0 is assumed.
5670
- The substring width/position/case specifiers may be used with these format
5671
- codes in exactly the same way as with %f and %e.
5682
+ 2) B<-W> supports four additional format codes: %t, %g and %s represent the
5683
+ tag name, group name, and suggested extension for the output file (based on
5684
+ the format of the data), and %o represents the value of the
5685
+ OriginalRawFileName or OriginalFileName tag from the input file (including
5686
+ extension). The %g code may be followed by a single digit to specify the
5687
+ group family number (eg. %g1), otherwise family 0 is assumed. The substring
5688
+ width/position/case specifiers may be used with these format codes in
5689
+ exactly the same way as with %f and %e.
5672
5690
 
5673
5691
  3) The argument for B<-W> is interpreted as a file name if it contains no
5674
5692
  format codes. (For B<-w>, this would be a file extension.) This change
@@ -5688,7 +5706,7 @@ example, the following pairs of commands give the same result:
5688
5706
  4) Adding the B<-v> option to B<-W> sends a list of the tags and output file
5689
5707
  names to the console instead of giving a verbose dump of the entire file.
5690
5708
  (Unless appending all output to one file for each source file by using
5691
- B<-W+> with an output file I<FMT> that does not contain %t, $g or %s.)
5709
+ B<-W+> with an output file I<FMT> that does not contain %t, $g, %s or %o.)
5692
5710
 
5693
5711
  5) Individual list items are stored in separate files when B<-W> is combined
5694
5712
  with B<-b>, but note that for separate files to be created %c or %C must be
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.45';
38
+ $VERSION = '3.46';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -460,7 +460,7 @@ According to the specification, integer-format QuickTime date/time tags
460
460
  should be stored as UTC. Unfortunately, digital cameras often store local
461
461
  time values instead (presumably because they don't know the time zone). For
462
462
  this reason, by default ExifTool does not assume a time zone for these
463
- values. However, if the L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> API option is set, then ExifTool will
463
+ values. However, if the API L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> option is set, then ExifTool will
464
464
  assume these values are properly stored as UTC, and will convert them to
465
465
  local time when extracting.
466
466
 
@@ -469,6 +469,11 @@ the PrintConv option is enabled and no time zone is specified. This is
469
469
  because Apple software may display crazy values if the time zone is missing
470
470
  for some tags.
471
471
 
472
+ By default ExifTool will remove null padding from some QuickTime containers
473
+ in Canon CR3 files when writing, but the
474
+ L<QuickTimePad|../ExifTool.html#QuickTimePad> option may be used to preserve
475
+ the original size by padding with nulls if necessary.
476
+
472
477
  See
473
478
  L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
474
479
  for the official specification.