exiftool_vendored 12.62.0 → 12.64.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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +50 -1
  3. data/bin/MANIFEST +4 -0
  4. data/bin/META.json +4 -1
  5. data/bin/META.yml +4 -1
  6. data/bin/Makefile.PL +7 -1
  7. data/bin/README +50 -46
  8. data/bin/config_files/guano.config +161 -0
  9. data/bin/exiftool +88 -62
  10. data/bin/lib/Image/ExifTool/7Z.pm +793 -0
  11. data/bin/lib/Image/ExifTool/Apple.pm +6 -3
  12. data/bin/lib/Image/ExifTool/Canon.pm +1 -0
  13. data/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
  14. data/bin/lib/Image/ExifTool/CanonVRD.pm +4 -1
  15. data/bin/lib/Image/ExifTool/Exif.pm +31 -14
  16. data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -3
  17. data/bin/lib/Image/ExifTool/GPS.pm +5 -2
  18. data/bin/lib/Image/ExifTool/Geotag.pm +4 -1
  19. data/bin/lib/Image/ExifTool/Jpeg2000.pm +226 -28
  20. data/bin/lib/Image/ExifTool/Lang/fr.pm +1467 -202
  21. data/bin/lib/Image/ExifTool/MPF.pm +2 -1
  22. data/bin/lib/Image/ExifTool/Matroska.pm +16 -1
  23. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  24. data/bin/lib/Image/ExifTool/Nikon.pm +419 -5
  25. data/bin/lib/Image/ExifTool/NikonCustom.pm +13 -3
  26. data/bin/lib/Image/ExifTool/PDF.pm +9 -1
  27. data/bin/lib/Image/ExifTool/PLIST.pm +8 -1
  28. data/bin/lib/Image/ExifTool/PNG.pm +6 -6
  29. data/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
  30. data/bin/lib/Image/ExifTool/QuickTime.pm +74 -21
  31. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -19
  32. data/bin/lib/Image/ExifTool/README +2 -2
  33. data/bin/lib/Image/ExifTool/RIFF.pm +11 -9
  34. data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  35. data/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  36. data/bin/lib/Image/ExifTool/Sony.pm +103 -8
  37. data/bin/lib/Image/ExifTool/TagLookup.pm +4738 -4630
  38. data/bin/lib/Image/ExifTool/TagNames.pod +249 -5
  39. data/bin/lib/Image/ExifTool/Validate.pm +17 -1
  40. data/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
  41. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
  42. data/bin/lib/Image/ExifTool/WriteXMP.pl +2 -2
  43. data/bin/lib/Image/ExifTool/Writer.pl +28 -10
  44. data/bin/lib/Image/ExifTool/XMP.pm +14 -2
  45. data/bin/lib/Image/ExifTool/XMP2.pl +32 -0
  46. data/bin/lib/Image/ExifTool/XMPStruct.pl +96 -28
  47. data/bin/lib/Image/ExifTool/ZIP.pm +5 -5
  48. data/bin/lib/Image/ExifTool.pm +67 -39
  49. data/bin/lib/Image/ExifTool.pod +83 -52
  50. data/bin/perl-Image-ExifTool.spec +44 -44
  51. data/lib/exiftool_vendored/version.rb +1 -1
  52. metadata +4 -2
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars);
31
31
 
32
- $VERSION = '12.62';
32
+ $VERSION = '12.64';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -114,7 +114,7 @@ sub WriteTIFF($$$);
114
114
  sub PackUTF8(@);
115
115
  sub UnpackUTF8($);
116
116
  sub SetPreferredByteOrder($;$);
117
- sub ImageDataMD5($$$;$$);
117
+ sub ImageDataHash($$$;$$);
118
118
  sub CopyBlock($$$);
119
119
  sub CopyFileAttrs($$$);
120
120
  sub TimeNow(;$$);
@@ -194,7 +194,7 @@ $defaultLang = 'en'; # default language
194
194
  PSD XMP BMP WPG BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV
195
195
  OGG FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF
196
196
  LFP HTML VRD RTF FITS XCF DSS QTIF FPX PICT ZIP GZIP PLIST RAR
197
- BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC
197
+ 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC
198
198
  M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI R3D AA
199
199
  PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD ICO TXT);
200
200
 
@@ -228,6 +228,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
228
228
  '3GP' => ['MOV', '3rd Gen. Partnership Project audio/video'],
229
229
  '3GP2'=> '3G2',
230
230
  '3GPP'=> '3GP',
231
+ '7Z' => ['7Z', '7z archive'],
231
232
  A => ['EXE', 'Static library'],
232
233
  AA => ['AA', 'Audible Audiobook'],
233
234
  AAE => ['PLIST','Apple edit information'],
@@ -329,6 +330,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
329
330
  FPF => ['FPF', 'FLIR Public image Format'],
330
331
  FPX => ['FPX', 'FlashPix'],
331
332
  GIF => ['GIF', 'Compuserve Graphics Interchange Format'],
333
+ GLV => ['MOV', 'Garmin Low-resolution Video'],
332
334
  GPR => ['TIFF', 'General Purpose RAW'], # https://gopro.github.io/gpr/
333
335
  GZ => 'GZIP',
334
336
  GZIP => ['GZIP', 'GNU ZIP compressed archive'],
@@ -590,6 +592,7 @@ my %fileDescription = (
590
592
  # types may be specified by some modules, eg. QuickTime.pm and RIFF.pm)
591
593
  %mimeType = (
592
594
  '3FR' => 'image/x-hasselblad-3fr',
595
+ '7Z' => 'application/x-7z-compressed',
593
596
  AA => 'audio/audible',
594
597
  AAE => 'application/vnd.apple.photos',
595
598
  AI => 'application/vnd.adobe.illustrator',
@@ -1827,15 +1830,17 @@ my %systemTagsNotes = (
1827
1830
  if specifically requested
1828
1831
  },
1829
1832
  },
1830
- ImageDataMD5 => {
1833
+ ImageDataHash => {
1831
1834
  Notes => q{
1832
- MD5 of image data. Generated only if specifically requested for JPEG, TIFF,
1835
+ Hash of image data. Generated only if specifically requested for JPEG, TIFF,
1833
1836
  PNG, CRW, CR3, MRW, RAF, X3F, IIQ, JP2, JXL, HEIC and AVIF images, MOV/MP4
1834
- videos, and some RIFF-based files such as AVI, WAV and WEBP. The MD5
1835
- includes the main image data, plus JpgFromRaw/OtherImage for some formats,
1836
- but does not include ThumbnailImage or PreviewImage. Includes video and
1837
- audio data for MOV/MP4. The L<XMP-et:OriginalImageMD5 tag|XMP.html#ExifTool>
1838
- provides a place to store these values in the file.
1837
+ videos, and some RIFF-based files such as AVI, WAV and WEBP. The hash
1838
+ algorithm is set by the API L<ImageHashType|../ExifTool.html#ImageHashType> option, and is 'MD5' by default.
1839
+ The hash includes the main image data, plus JpgFromRaw/OtherImage for some
1840
+ formats, but does not include ThumbnailImage or PreviewImage. Includes
1841
+ video and audio data for MOV/MP4. The L<XMP-et:OriginalImageHash and
1842
+ XMP-et:OriginalImageHashType tags|XMP.html#ExifTool> provide a way to store
1843
+ the this hash value and the hash type in the file.
1839
1844
  },
1840
1845
  },
1841
1846
  );
@@ -2314,6 +2319,18 @@ sub Options($$;@)
2314
2319
  $newVal = defined $newVal ? "$oldVal|$newVal" : $oldVal;
2315
2320
  }
2316
2321
  $$options{$param} = $newVal;
2322
+ } elsif ($param eq 'ImageHashType') {
2323
+ if (defined $newVal and $newVal =~ /^(MD5|SHA256|SHA512)$/i) {
2324
+ $$options{$param} = uc($newVal);
2325
+ } else {
2326
+ warn("Invalid $param setting '${newVal}'\n"), return $oldVal;
2327
+ }
2328
+ } elsif ($param eq 'StructFormat') {
2329
+ if (defined $newVal) {
2330
+ $newVal =~ /^(JSON|JSONQ)$/i or warn("Invalid $param setting '${newVal}'\n"), return $oldVal;
2331
+ $newVal = uc($newVal);
2332
+ }
2333
+ $$options{$param} = $newVal;
2317
2334
  } else {
2318
2335
  if ($param eq 'Escape') {
2319
2336
  # set ESCAPE_PROC
@@ -2396,6 +2413,7 @@ sub ClearOptions($)
2396
2413
  HtmlDumpBase => undef, # base address for HTML dump
2397
2414
  IgnoreMinorErrors => undef, # ignore minor errors when reading/writing
2398
2415
  IgnoreTags => undef, # list of tags to ignore when extracting
2416
+ ImageHashType => 'MD5', # image hash algorithm
2399
2417
  Lang => $defaultLang,# localized language for descriptions etc
2400
2418
  LargeFileSupport => undef, # flag indicating support of 64-bit file offsets
2401
2419
  List => undef, # extract lists of PrintConv values into arrays [no longer documented]
@@ -2423,6 +2441,7 @@ sub ClearOptions($)
2423
2441
  Sort2 => 'File', # secondary sort order for tags in a group (File, Tag, Descr)
2424
2442
  StrictDate => undef, # flag to return undef for invalid date conversions
2425
2443
  Struct => undef, # return structures as hash references
2444
+ StructFormat=> undef, # format for structure serialization when reading/writing
2426
2445
  SystemTags => undef, # extract additional File System tags
2427
2446
  TextOut => \*STDOUT,# file for Verbose/HtmlDump output
2428
2447
  TimeZone => undef, # local time zone
@@ -2518,10 +2537,17 @@ sub ExtractInfo($;@)
2518
2537
  }
2519
2538
  }
2520
2539
 
2521
- # create MD5 object if ImageDataMD5 is requested
2522
- if ($$req{imagedatamd5} and not $$self{ImageDataMD5}) {
2523
- if (require Digest::MD5) {
2524
- $$self{ImageDataMD5} = Digest::MD5->new;
2540
+ # create Hash object if ImageDataHash is requested
2541
+ if ($$req{imagedatahash} and not $$self{ImageDataHash}) {
2542
+ my $imageHashType = $self->Options('ImageHashType');
2543
+ if ($imageHashType =~ /^SHA(256|512)$/i) {
2544
+ if (require Digest::SHA) {
2545
+ $$self{ImageDataHash} = Digest::SHA->new($1);
2546
+ } else {
2547
+ $self->WarnOnce("Install Digest::SHA to calculate image data SHA$1");
2548
+ }
2549
+ } elsif (require Digest::MD5) {
2550
+ $$self{ImageDataHash} = Digest::MD5->new;
2525
2551
  } else {
2526
2552
  $self->WarnOnce('Install Digest::MD5 to calculate image data MD5');
2527
2553
  }
@@ -2915,10 +2941,13 @@ sub ExtractInfo($;@)
2915
2941
  # restore necessary members when exiting re-entrant code
2916
2942
  $$self{$_} = $$reEntry{$_} foreach keys %$reEntry;
2917
2943
  SetByteOrder($saveOrder);
2918
- } elsif ($$self{ImageDataMD5}) {
2919
- my $digest = $$self{ImageDataMD5}->hexdigest;
2944
+ } elsif ($$self{ImageDataHash}) {
2945
+ my $digest = $$self{ImageDataHash}->hexdigest;
2920
2946
  # (don't store empty digest)
2921
- $self->FoundTag(ImageDataMD5 => $digest) unless $digest eq 'd41d8cd98f00b204e9800998ecf8427e';
2947
+ $self->FoundTag(ImageDataHash => $digest) unless
2948
+ $digest eq 'd41d8cd98f00b204e9800998ecf8427e' or
2949
+ $digest eq 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' or
2950
+ $digest eq 'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e';
2922
2951
  }
2923
2952
 
2924
2953
  # ($type may be undef without an Error when processing sub-documents)
@@ -5582,6 +5611,7 @@ my %formatSize = (
5582
5611
  ifd => 4,
5583
5612
  ifd64 => 8,
5584
5613
  ue7 => 1,
5614
+ utf8 => 1, # (Exif 3.0)
5585
5615
  );
5586
5616
  my %readValueProc = (
5587
5617
  int8s => \&Get8s,
@@ -5796,7 +5826,8 @@ sub MakeTagName($)
5796
5826
  my $name = shift;
5797
5827
  $name =~ tr/-_a-zA-Z0-9//dc; # remove illegal characters
5798
5828
  $name = ucfirst $name; # capitalize first letter
5799
- $name = "Tag$name" if length($name) < 2; # must at least 2 characters long
5829
+ $name = "Tag$name" if length($name) < 2 or $name =~ /^[-0-9]/;
5830
+ # must at least 2 characters long and not start with - or 0-9-
5800
5831
  return $name;
5801
5832
  }
5802
5833
 
@@ -6487,15 +6518,15 @@ sub ProcessJPEG($$)
6487
6518
  my $req = $$self{REQ_TAG_LOOKUP};
6488
6519
  my $htmlDump = $$self{HTML_DUMP};
6489
6520
  my %dumpParms = ( Out => $out );
6490
- my ($ch, $s, $length, $md5, $md5size);
6521
+ my ($ch, $s, $length, $hash, $hashsize);
6491
6522
  my ($success, $wantTrailer, $trailInfo, $foundSOS, $gotSize, %jumbfChunk);
6492
6523
  my (@iccChunk, $iccChunkCount, $iccChunksTotal, @flirChunk, $flirCount, $flirTotal);
6493
6524
  my ($preview, $scalado, @dqt, $subSampling, $dumpEnd, %extendedXMP);
6494
6525
 
6495
- # get pointer to MD5 object if it exists and we are the top-level JPEG or JP2
6526
+ # get pointer to hash object if it exists and we are the top-level JPEG or JP2
6496
6527
  if ($$self{FILE_TYPE} =~ /^(JPEG|JP2)$/ and not $$self{DOC_NUM}) {
6497
- $md5 = $$self{ImageDataMD5};
6498
- $md5size = 0;
6528
+ $hash = $$self{ImageDataHash};
6529
+ $hashsize = 0;
6499
6530
  }
6500
6531
 
6501
6532
  # check to be sure this is a valid JPG (or J2C, or EXV) file
@@ -6544,7 +6575,7 @@ sub ProcessJPEG($$)
6544
6575
  #
6545
6576
  # read ahead to the next segment unless we have reached EOI, SOS or SOD
6546
6577
  #
6547
- unless ($marker and ($marker==0xd9 or ($marker==0xda and not $wantTrailer and not $md5) or
6578
+ unless ($marker and ($marker==0xd9 or ($marker==0xda and not $wantTrailer and not $hash) or
6548
6579
  $marker==0x93))
6549
6580
  {
6550
6581
  # read up to next marker (JPEG markers begin with 0xff)
@@ -6576,19 +6607,19 @@ sub ProcessJPEG($$)
6576
6607
  $nextSegPos = $raf->Tell();
6577
6608
  $len -= 4; # subtract size of length word
6578
6609
  last unless $raf->Seek($len, 1);
6579
- } elsif ($md5 and defined $marker and ($marker == 0x00 or $marker == 0xda or
6610
+ } elsif ($hash and defined $marker and ($marker == 0x00 or $marker == 0xda or
6580
6611
  ($marker >= 0xd0 and $marker <= 0xd7)))
6581
6612
  {
6582
- # calculate MD5 for image data (includes leading ff d9 but not trailing ff da)
6583
- $md5->add("\xff" . chr($marker));
6613
+ # calculate hash for image data (includes leading ff d9 but not trailing ff da)
6614
+ $hash->add("\xff" . chr($marker));
6584
6615
  my $n = $skipped - (length($buff) - 1); # number of extra 0xff's
6585
6616
  if (not $n) {
6586
6617
  $buff = substr($buff, 0, -1); # remove trailing 0xff
6587
6618
  } elsif ($n > 1) {
6588
6619
  $buff .= "\xff" x ($n - 1); # add back extra 0xff's
6589
6620
  }
6590
- $md5->add($buff);
6591
- $md5size += $skipped + 2;
6621
+ $hash->add($buff);
6622
+ $hashsize += $skipped + 2;
6592
6623
  }
6593
6624
  # read second segment too if this was the first
6594
6625
  next unless defined $marker;
@@ -6800,7 +6831,7 @@ sub ProcessJPEG($$)
6800
6831
  next if $trailInfo or $wantTrailer or $verbose > 2 or $htmlDump;
6801
6832
  }
6802
6833
  # must scan to EOI if Validate or JpegCompressionFactor used
6803
- next if $$options{Validate} or $calcImageLen or $$req{trailer} or $md5;
6834
+ next if $$options{Validate} or $calcImageLen or $$req{trailer} or $hash;
6804
6835
  # nothing interesting to parse after start of scan (SOS)
6805
6836
  $success = 1;
6806
6837
  last; # all done parsing file
@@ -6808,9 +6839,9 @@ sub ProcessJPEG($$)
6808
6839
  pop @$path;
6809
6840
  $verbose and print $out "JPEG SOD\n";
6810
6841
  $success = 1;
6811
- if ($md5 and $$self{FILE_TYPE} eq 'JP2') {
6842
+ if ($hash and $$self{FILE_TYPE} eq 'JP2') {
6812
6843
  my $pos = $raf->Tell();
6813
- $self->ImageDataMD5($raf, undef, 'SOD');
6844
+ $self->ImageDataHash($raf, undef, 'SOD');
6814
6845
  $raf->Seek($pos, 0);
6815
6846
  }
6816
6847
  next if $verbose > 2 or $htmlDump;
@@ -6829,7 +6860,7 @@ sub ProcessJPEG($$)
6829
6860
  or ($$options{RequestAll} and $$options{RequestAll} > 2)))
6830
6861
  {
6831
6862
  my $num = unpack('C',$$segDataPt) & 0x0f; # get table index
6832
- $dqt[$num] = $$segDataPt if $num < 4; # save for MD5 calculation
6863
+ $dqt[$num] = $$segDataPt if $num < 4; # save for hash calculation
6833
6864
  }
6834
6865
  # handle all other markers
6835
6866
  my $dumpType = '';
@@ -7177,9 +7208,6 @@ sub ProcessJPEG($$)
7177
7208
  $self->HandleTag($tagTablePtr, 'APP3', $$dataPt);
7178
7209
  undef $combinedSegData;
7179
7210
  }
7180
- } elsif ($$self{HasIJPEG}) {
7181
- $dumpType = 'InfiRay Data',
7182
-
7183
7211
  } elsif ($$segDataPt =~ /^\xff\xd8\xff\xdb/) {
7184
7212
  $dumpType = 'PreviewImage'; # (Samsung, HP, BenQ)
7185
7213
  $preview = $$segDataPt;
@@ -7612,8 +7640,8 @@ sub ProcessJPEG($$)
7612
7640
  delete $extendedXMP{$guid};
7613
7641
  }
7614
7642
  }
7615
- # print verbose MD5 message if necessary
7616
- print $out "$$self{INDENT}(ImageDataMD5: $md5size bytes of JPEG image data)\n" if $md5size and $verbose;
7643
+ # print verbose hash message if necessary
7644
+ print $out "$$self{INDENT}(ImageDataHash: $hashsize bytes of JPEG image data)\n" if $hashsize and $verbose;
7617
7645
  # calculate JPEGDigest if requested
7618
7646
  if (@dqt) {
7619
7647
  require Image::ExifTool::JPEGDigest;
@@ -7889,8 +7917,8 @@ sub DoProcessTIFF($$;$)
7889
7917
  if ($$self{TIFF_TYPE} eq 'TIFF') {
7890
7918
  $self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
7891
7919
  }
7892
- if ($$self{ImageDataMD5} and $$self{A100DataOffset} and $raf->Seek($$self{A100DataOffset},0)) {
7893
- $self->ImageDataMD5($raf, undef, 'A100');
7920
+ if ($$self{ImageDataHash} and $$self{A100DataOffset} and $raf->Seek($$self{A100DataOffset},0)) {
7921
+ $self->ImageDataHash($raf, undef, 'A100');
7894
7922
  }
7895
7923
  return 1;
7896
7924
  }
@@ -65,49 +65,49 @@ supported by ExifTool (r = read, w = write, c = create):
65
65
 
66
66
  File Types
67
67
  ------------+-------------+-------------+-------------+------------
68
- 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RSRC r
69
- 3FR r | DSS r | JP2 r/w | ODS r | RTF r
70
- 3G2 r/w | DV r | JPEG r/w | ODT r | RW2 r/w
71
- 3GP r/w | DVB r/w | JSON r | OFR r | RWL r/w
72
- A r | DVR-MS r | JXL r | OGG r | RWZ r
73
- AA r | DYLIB r | K25 r | OGV r | RM r
74
- AAE r | EIP r | KDC r | ONP r | SEQ r
75
- AAX r/w | EPS r/w | KEY r | OPUS r | SKETCH r
76
- ACR r | EPUB r | LA r | ORF r/w | SO r
77
- AFM r | ERF r/w | LFP r | ORI r/w | SR2 r/w
78
- AI r/w | EXE r | LIF r | OTF r | SRF r
79
- AIFF r | EXIF r/w/c | LNK r | PAC r | SRW r/w
80
- APE r | EXR r | LRV r/w | PAGES r | SVG r
81
- ARQ r/w | EXV r/w/c | M2TS r | PBM r/w | SWF r
82
- ARW r/w | F4A/V r/w | M4A/V r/w | PCD r | THM r/w
83
- ASF r | FFF r/w | MACOS r | PCX r | TIFF r/w
84
- AVI r | FITS r | MAX r | PDB r | TORRENT r
85
- AVIF r/w | FLA r | MEF r/w | PDF r/w | TTC r
86
- AZW r | FLAC r | MIE r/w/c | PEF r/w | TTF r
87
- BMP r | FLIF r/w | MIFF r | PFA r | TXT r
88
- BPG r | FLV r | MKA r | PFB r | VCF r
89
- BTF r | FPF r | MKS r | PFM r | VNT r
90
- CHM r | FPX r | MKV r | PGF r | VRD r/w/c
91
- COS r | GIF r/w | MNG r/w | PGM r/w | VSD r
92
- CR2 r/w | GPR r/w | MOBI r | PLIST r | WAV r
93
- CR3 r/w | GZ r | MODD r | PICT r | WDP r/w
94
- CRM r/w | HDP r/w | MOI r | PMP r | WEBP r/w
95
- CRW r/w | HDR r | MOS r/w | PNG r/w | WEBM r
96
- CS1 r/w | HEIC r/w | MOV r/w | PPM r/w | WMA r
97
- CSV r | HEIF r/w | MP3 r | PPT r | WMV r
98
- CUR r | HTML r | MP4 r/w | PPTX r | WPG r
99
- CZI r | ICC r/w/c | MPC r | PS r/w | WTV r
100
- DCM r | ICO r | MPG r | PSB r/w | WV r
101
- DCP r/w | ICS r | MPO r/w | PSD r/w | X3F r/w
102
- DCR r | IDML r | MQV r/w | PSP r | XCF r
103
- DFONT r | IIQ r/w | MRC r | QTIF r/w | XLS r
104
- DIVX r | IND r/w | MRW r/w | R3D r | XLSX r
105
- DJVU r | INSP r/w | MXF r | RA r | XMP r/w/c
106
- DLL r | INSV r | NEF r/w | RAF r/w | ZIP r
107
- DNG r/w | INX r | NKSC r/w | RAM r |
108
- DOC r | ISO r | NRW r/w | RAR r |
109
- DOCX r | ITC r | NUMBERS r | RAW r/w |
110
- DPX r | J2C r | O r | RIFF r |
68
+ 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
69
+ 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
70
+ 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
71
+ 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
72
+ 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
73
+ A r | DVR-MS r | JSON r | OFR r | RWL r/w
74
+ AA r | DYLIB r | JXL r | OGG r | RWZ r
75
+ AAE r | EIP r | K25 r | OGV r | RM r
76
+ AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
77
+ ACR r | EPUB r | KEY r | OPUS r | SKETCH r
78
+ AFM r | ERF r/w | LA r | ORF r/w | SO r
79
+ AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
80
+ AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
81
+ APE r | EXR r | LNK r | PAC r | SRW r/w
82
+ ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
83
+ ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
84
+ ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
85
+ AVI r | FITS r | MACOS r | PCX r | TIFF r/w
86
+ AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
87
+ AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
88
+ BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
89
+ BPG r | FLV r | MIFF r | PFA r | TXT r
90
+ BTF r | FPF r | MKA r | PFB r | VCF r
91
+ CHM r | FPX r | MKS r | PFM r | VNT r
92
+ COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
93
+ CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
94
+ CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
95
+ CRM r/w | GZ r | MODD r | PICT r | WDP r/w
96
+ CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
97
+ CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
98
+ CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
99
+ CUR r | HEIF r/w | MP3 r | PPT r | WMV r
100
+ CZI r | HTML r | MP4 r/w | PPTX r | WPG r
101
+ DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
102
+ DCP r/w | ICO r | MPG r | PSB r/w | WV r
103
+ DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
104
+ DFONT r | IDML r | MQV r/w | PSP r | XCF r
105
+ DIVX r | IIQ r/w | MRC r | QTIF r/w | XLS r
106
+ DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
107
+ DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
108
+ DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
109
+ DOC r | INX r | NKSC r/w | RAM r |
110
+ DOCX r | ISO r | NRW r/w | RAR r |
111
111
 
112
112
  Meta Information
113
113
  ----------------------+----------------------+---------------------
@@ -301,6 +301,10 @@ of tag keys, and with other L</Sort> settings the entries may not be in the
301
301
  same order as requested.) If a requested tag doesn't exist, a tag key is
302
302
  still generated, but the tag value is undefined.
303
303
 
304
+ B<Note:> Do not reuse this list in subsequent calls to L</ImageInfo> because
305
+ it returns tag keys, not names, and the list will grow for each call
306
+ resulting in increasingly slower performance.
307
+
304
308
  =item HASH ref
305
309
 
306
310
  Reference to a hash containing the options settings valid for this call
@@ -569,7 +573,9 @@ Flag to generate Composite tags when extracting information. Default is 1.
569
573
  =item Compress
570
574
 
571
575
  Flag to write new values in compressed format if possible. Has no effect
572
- unless Compress::Zlib is installed. Default is undef.
576
+ unless the relevant compression library is available. Valid when writing
577
+ metadata to PNG, JXL or MIE images. Setting this to zero causes JXL
578
+ metadata to be rewritten as uncompressed when edited. Default is undef.
573
579
 
574
580
  =item CoordFormat
575
581
 
@@ -791,6 +797,11 @@ allowed. A special tag name of "All" may be used to ignore all tags except
791
797
  those specified by the L</RequestTags> option. Set to undef to clear the
792
798
  previous IgnoreTags list. Default is undef.
793
799
 
800
+ =item ImageHashType
801
+
802
+ Sets type of hash algorithem used for the ImageDataHash tag calculation.
803
+ Supported options are 'MD5', 'SHA256', and 'SHA512'. Default is 'MD5'.
804
+
794
805
  =item Lang
795
806
 
796
807
  Localized language for exiftool tag descriptions, etc. Available languages
@@ -847,6 +858,13 @@ formatting expression returns undef). If not set, a minor error is issued
847
858
  for missing values, or the value is set to '' if L</IgnoreMinorErrors> is
848
859
  set. Default is undef.
849
860
 
861
+ =item NoDups
862
+
863
+ Flag to remove duplicate items from queued values for List-type tags when
864
+ writing. This applies only to queued values, and doesn't resolve duplicates
865
+ with existing values in the file when adding to an existing list. Default
866
+ is undef.
867
+
850
868
  =item NoMultiExif
851
869
 
852
870
  Raise error when attempting to write multi-segment EXIF in a JPEG image.
@@ -993,6 +1011,14 @@ structured tags may always be written. Possible values are:
993
1011
  2 - Read/copy both flattened and structured tags, but flag
994
1012
  flattened tags as 'unsafe' for copying
995
1013
 
1014
+ =item StructFormat
1015
+
1016
+ Format for serialized structures when reading/writing.
1017
+
1018
+ undef - Default ExifTool format
1019
+ JSON - JSON format
1020
+ JSONQ - JSON with quoted numerical values
1021
+
996
1022
  =item SystemTags
997
1023
 
998
1024
  Flag to extract the following additional File System tags: FileAttributes,
@@ -1665,6 +1691,11 @@ values in list context.
1665
1691
 
1666
1692
  =over 4
1667
1693
 
1694
+ =item Notes:
1695
+
1696
+ The API NoDups option applies when this routine is called, and removes
1697
+ duplicate items from values returned for List-type tags.
1698
+
1668
1699
  =item Inputs:
1669
1700
 
1670
1701
  0) ExifTool object reference
@@ -2394,14 +2425,14 @@ XMP-Device, XMP-GAudio, XMP-GCamera, XMP-GCreations, XMP-GDepth, XMP-GFocus,
2394
2425
  XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage, XMP-MP, XMP-MP1,
2395
2426
  XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album, XMP-apple-fi, XMP-ast,
2396
2427
  XMP-aux, XMP-cc, XMP-cell, XMP-crd, XMP-creatorAtom, XMP-crs, XMP-dc,
2397
- XMP-dex, XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-exif, XMP-exifEX,
2398
- XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-hdr, XMP-ics,
2399
- XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft,
2400
- XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-nine, XMP-pdf, XMP-pdfx,
2401
- XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl,
2402
- XMP-prm, XMP-pur, XMP-rdf, XMP-sdc, XMP-swf, XMP-tiff, XMP-x, XMP-xmp,
2403
- XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights,
2404
- XMP-xmpTPg, ZIP, iTunes
2428
+ XMP-dex, XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-et, XMP-exif, XMP-exifEX,
2429
+ XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-hdr, XMP-hdrgm,
2430
+ XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft,
2431
+ XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-nine, XMP-panorama, XMP-pdf,
2432
+ XMP-pdfx, XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism,
2433
+ XMP-prl, XMP-prm, XMP-pur, XMP-rdf, XMP-sdc, XMP-swf, XMP-tiff, XMP-x,
2434
+ XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS,
2435
+ XMP-xmpRights, XMP-xmpTPg, ZIP, iTunes
2405
2436
 
2406
2437
  =item Family 2 (Category):
2407
2438
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.62
3
+ Version: 12.64
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -22,49 +22,49 @@ supported by ExifTool (r = read, w = write, c = create):
22
22
 
23
23
  File Types
24
24
  ------------+-------------+-------------+-------------+------------
25
- 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RSRC r
26
- 3FR r | DSS r | JP2 r/w | ODS r | RTF r
27
- 3G2 r/w | DV r | JPEG r/w | ODT r | RW2 r/w
28
- 3GP r/w | DVB r/w | JSON r | OFR r | RWL r/w
29
- A r | DVR-MS r | JXL r | OGG r | RWZ r
30
- AA r | DYLIB r | K25 r | OGV r | RM r
31
- AAE r | EIP r | KDC r | ONP r | SEQ r
32
- AAX r/w | EPS r/w | KEY r | OPUS r | SKETCH r
33
- ACR r | EPUB r | LA r | ORF r/w | SO r
34
- AFM r | ERF r/w | LFP r | ORI r/w | SR2 r/w
35
- AI r/w | EXE r | LIF r | OTF r | SRF r
36
- AIFF r | EXIF r/w/c | LNK r | PAC r | SRW r/w
37
- APE r | EXR r | LRV r/w | PAGES r | SVG r
38
- ARQ r/w | EXV r/w/c | M2TS r | PBM r/w | SWF r
39
- ARW r/w | F4A/V r/w | M4A/V r/w | PCD r | THM r/w
40
- ASF r | FFF r/w | MACOS r | PCX r | TIFF r/w
41
- AVI r | FITS r | MAX r | PDB r | TORRENT r
42
- AVIF r/w | FLA r | MEF r/w | PDF r/w | TTC r
43
- AZW r | FLAC r | MIE r/w/c | PEF r/w | TTF r
44
- BMP r | FLIF r/w | MIFF r | PFA r | TXT r
45
- BPG r | FLV r | MKA r | PFB r | VCF r
46
- BTF r | FPF r | MKS r | PFM r | VNT r
47
- CHM r | FPX r | MKV r | PGF r | VRD r/w/c
48
- COS r | GIF r/w | MNG r/w | PGM r/w | VSD r
49
- CR2 r/w | GPR r/w | MOBI r | PLIST r | WAV r
50
- CR3 r/w | GZ r | MODD r | PICT r | WDP r/w
51
- CRM r/w | HDP r/w | MOI r | PMP r | WEBP r/w
52
- CRW r/w | HDR r | MOS r/w | PNG r/w | WEBM r
53
- CS1 r/w | HEIC r/w | MOV r/w | PPM r/w | WMA r
54
- CSV r | HEIF r/w | MP3 r | PPT r | WMV r
55
- CUR r | HTML r | MP4 r/w | PPTX r | WPG r
56
- CZI r | ICC r/w/c | MPC r | PS r/w | WTV r
57
- DCM r | ICO r | MPG r | PSB r/w | WV r
58
- DCP r/w | ICS r | MPO r/w | PSD r/w | X3F r/w
59
- DCR r | IDML r | MQV r/w | PSP r | XCF r
60
- DFONT r | IIQ r/w | MRC r | QTIF r/w | XLS r
61
- DIVX r | IND r/w | MRW r/w | R3D r | XLSX r
62
- DJVU r | INSP r/w | MXF r | RA r | XMP r/w/c
63
- DLL r | INSV r | NEF r/w | RAF r/w | ZIP r
64
- DNG r/w | INX r | NKSC r/w | RAM r |
65
- DOC r | ISO r | NRW r/w | RAR r |
66
- DOCX r | ITC r | NUMBERS r | RAW r/w |
67
- DPX r | J2C r | O r | RIFF r |
25
+ 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
26
+ 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
27
+ 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
28
+ 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
29
+ 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
30
+ A r | DVR-MS r | JSON r | OFR r | RWL r/w
31
+ AA r | DYLIB r | JXL r | OGG r | RWZ r
32
+ AAE r | EIP r | K25 r | OGV r | RM r
33
+ AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
34
+ ACR r | EPUB r | KEY r | OPUS r | SKETCH r
35
+ AFM r | ERF r/w | LA r | ORF r/w | SO r
36
+ AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
37
+ AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
38
+ APE r | EXR r | LNK r | PAC r | SRW r/w
39
+ ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
40
+ ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
41
+ ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
42
+ AVI r | FITS r | MACOS r | PCX r | TIFF r/w
43
+ AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
44
+ AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
45
+ BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
46
+ BPG r | FLV r | MIFF r | PFA r | TXT r
47
+ BTF r | FPF r | MKA r | PFB r | VCF r
48
+ CHM r | FPX r | MKS r | PFM r | VNT r
49
+ COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
50
+ CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
51
+ CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
52
+ CRM r/w | GZ r | MODD r | PICT r | WDP r/w
53
+ CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
54
+ CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
55
+ CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
56
+ CUR r | HEIF r/w | MP3 r | PPT r | WMV r
57
+ CZI r | HTML r | MP4 r/w | PPTX r | WPG r
58
+ DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
59
+ DCP r/w | ICO r | MPG r | PSB r/w | WV r
60
+ DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
61
+ DFONT r | IDML r | MQV r/w | PSP r | XCF r
62
+ DIVX r | IIQ r/w | MRC r | QTIF r/w | XLS r
63
+ DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
64
+ DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
65
+ DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
66
+ DOC r | INX r | NKSC r/w | RAM r |
67
+ DOCX r | ISO r | NRW r/w | RAR r |
68
68
 
69
69
  Meta Information
70
70
  ----------------------+----------------------+---------------------
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('12.62.0')
4
+ VERSION = Gem::Version.new('12.64.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.62.0
4
+ version: 12.64.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-05-03 00:00:00.000000000 Z
12
+ date: 2023-08-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -242,6 +242,7 @@ files:
242
242
  - bin/config_files/fotoware.config
243
243
  - bin/config_files/frameCount.config
244
244
  - bin/config_files/gps2utm.config
245
+ - bin/config_files/guano.config
245
246
  - bin/config_files/nksc.config
246
247
  - bin/config_files/photoshop_paths.config
247
248
  - bin/config_files/picasa_faces.config
@@ -258,6 +259,7 @@ files:
258
259
  - bin/lib/File/RandomAccess.pod
259
260
  - bin/lib/Image/ExifTool.pm
260
261
  - bin/lib/Image/ExifTool.pod
262
+ - bin/lib/Image/ExifTool/7Z.pm
261
263
  - bin/lib/Image/ExifTool/AES.pm
262
264
  - bin/lib/Image/ExifTool/AFCP.pm
263
265
  - bin/lib/Image/ExifTool/AIFF.pm