exiftool_vendored 12.80.0 → 12.81.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f29848f7a068302c03f2847eff9e3daf8ce7379cc676fcbfda76a3ef534fba4
4
- data.tar.gz: 80952d3f13272898576e90899f3b3623eec46d3a193fa334daaa7838219a12f0
3
+ metadata.gz: 7ba2444c39547a29d2fc1571e6dd379717eacc8bd4ddabe6eb65fd5129b8b072
4
+ data.tar.gz: 72c5c28b89791790a889835831e94c5dc27eb7b635b8a35b4e8d2c2775684b2a
5
5
  SHA512:
6
- metadata.gz: f8c2b1352e32b75492ab82b890c9745e5fab108779eb0411d6fdfc76d2584e26082a9cbd8cdf9e4a1fe3bd7b370cec4969d3e84459db4e8876155304d3f0f524
7
- data.tar.gz: daeab0ada07d19fa91766bff48d1e3c5d31ea4b3f3856d21972bc31890fbe9f1cba4cf6b1b66672cec07ffa0df62b9432a02960e4a0ab97365c0fecdf8bf030a
6
+ metadata.gz: 38d482929aafd323864314e3dd10f08c43b3798bc345457342010cad7a032fe193a5a6d39daf82666cb7b56c0da7db1da78794811c7ad0fbde63f256e674be6d
7
+ data.tar.gz: a7826bccc3d66f967e5978c4b689a846a510c66f005812283170791a3a1cb24ddaa7ed52d9cc6b86d9ac3f5eabf83cfa950c9a03a907a3974e67c90e9d38b647
data/bin/Changes CHANGED
@@ -7,6 +7,29 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.76. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Mar. 27, 2024 - Version 12.81
11
+
12
+ - Added ability to read EXIF and XMP from EXR images
13
+ - Added ability to delete unknown trailer when writing MOV/MP4 videos
14
+ - Added ability to write a couple of Stable Diffusion PNG tags
15
+ - Added ability to write one of the Microsoft Xtra Description tags (github
16
+ #248)
17
+ - Added support for using alternate city names in reverse Geolocation
18
+ - Added support for reading timed GPS from DOD LS600W TS videos
19
+ - Added support for new version of Canon DR4 files
20
+ - Added a number of new iTunesInfo tags
21
+ - Added a new Olympus LensType
22
+ - Allow regular expressions to be used when writing Geolocate tag
23
+ - Decode a number of new Nikon tags (thanks Warren Hatch)
24
+ - Enhanced writing of Geolocate tag to also write Keys:LocationName
25
+ - Cache the results of the last reverse geolocation search to speed batch
26
+ processing when multiple files have the same search parameters
27
+ - Patched problem that could cause runtime errors with some invaid tag names
28
+ - Fixed a couple of newly added FujiFilm tags
29
+ - Fixed decoding of FujiFilm AFAreaZoneSize
30
+ - API Changes:
31
+ - Added GeolocAltNames option
32
+
10
33
  Mar. 19, 2024 - Version 12.80
11
34
 
12
35
  - Added GeolocationFeatureCode tag
@@ -19,6 +42,8 @@ Mar. 19, 2024 - Version 12.80
19
42
  - Improved accuracy of Geolocation distance/bearing calculations
20
43
  - Changed structure of Geolocation database (now version 1.02)
21
44
  - Minor change to key format for user-defined Geolocation name translations
45
+ - Ignore API Geolocation option when copying tags if none of the Geolocation
46
+ tags are being copied
22
47
  - Fixed case/spacing of "C2PA" in some CBOR tag descriptions
23
48
  - Fixed bug extracting binary data from EXR files
24
49
  - API Changes:
@@ -29,6 +54,7 @@ Mar. 15, 2024 - Version 12.79
29
54
  - Improvements to new Geolocation feature:
30
55
  - Added reverse Geolocation ability (obtain GPS coordinates from city
31
56
  name), with support for regular expressions
57
+ - Added ability to geolocate while geotagging
32
58
  - Added -listgeo option to list the Geolocation database
33
59
  - Added the ability to include user-defined cities in the Geolocation
34
60
  database
data/bin/MANIFEST CHANGED
@@ -626,6 +626,8 @@ t/Geolocation_3.out
626
626
  t/Geolocation_4.out
627
627
  t/Geolocation_5.out
628
628
  t/Geolocation_6.out
629
+ t/Geolocation_7.out
630
+ t/Geolocation_8.out
629
631
  t/Geotag.t
630
632
  t/Geotag_10.out
631
633
  t/Geotag_11.out
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "12.80"
53
+ "version" : "12.81"
54
54
  }
data/bin/META.yml CHANGED
@@ -31,4 +31,4 @@ recommends:
31
31
  Time::HiRes: 0
32
32
  requires:
33
33
  perl: 5.004
34
- version: 12.80
34
+ version: 12.81
data/bin/README CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
109
109
  terminal window to extract and run ExifTool:
110
110
 
111
111
  cd ~/Desktop
112
- gzip -dc Image-ExifTool-12.80.tar.gz | tar -xf -
113
- cd Image-ExifTool-12.80
112
+ gzip -dc Image-ExifTool-12.81.tar.gz | tar -xf -
113
+ cd Image-ExifTool-12.81
114
114
  ./exiftool t/images/ExifTool.jpg
115
115
 
116
116
  Note: These commands extract meta information from one of the test images.
@@ -238,6 +238,7 @@ information:
238
238
  html/ExifTool.html - API documentation
239
239
  html/TagNames/index.html - Tag name documentation
240
240
  html/geotag.html - Geotag feature
241
+ html/geolocation.html - Geolocation feature
241
242
  html/faq.html - Frequently asked questions
242
243
  html/filename.html - Renaming/moving files
243
244
  html/metafiles.html - Working with metadata sidecar files
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.80';
14
+ my $version = '12.81';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -723,17 +723,22 @@ for (;;) {
723
723
  require Image::ExifTool::Geolocation;
724
724
  my ($i, $entry);
725
725
  print "Geolocation database:\n" unless $quiet;
726
- print "City,Region,Subregion,CountryCode,Country,TimeZone,FeatureCode,Population,Latitude,Longitude\n";
726
+ my $isAlt = $mt->Options('GeolocAltNames') ? ',AltNames' : '';
727
+ $isAlt = '' if $isAlt and not Image::ExifTool::Geolocation::ReadAltNames();
728
+ print "City,Region,Subregion,CountryCode,Country,TimeZone,FeatureCode,Population,Latitude,Longitude$isAlt\n";
727
729
  Image::ExifTool::Geolocation::SortDatabase('City') if $sortOpt;
728
730
  my $minPop = $mt->Options('GeolocMinPop');
729
731
  my $feature = $mt->Options('GeolocFeature') || '';
730
732
  my $neg = $feature =~ s/^-//;
731
733
  my %fcodes = map { lc($_) => 1 } split /\s*,\s*/, $feature;
734
+ my @isUTF8 = (0,1,2,4); # items that need converting from UTF8
735
+ push @isUTF8, 10 if $isAlt;
732
736
  for ($i=0; ; ++$i) {
733
- my @entry = Image::ExifTool::Geolocation::GetEntry($i,$langOpt) or last;
737
+ my @entry = Image::ExifTool::Geolocation::GetEntry($i,$langOpt,1) or last;
738
+ push @entry, Image::ExifTool::Geolocation::GetAltNames($i,1) if $isAlt;
734
739
  next if $minPop and $entry[7] < $minPop;
735
740
  next if %fcodes and $neg ? $fcodes{lc $entry[6]} : not $fcodes{lc $entry[6]};
736
- $_ = defined $_ ? $mt->Decode($_, 'UTF8') : '' foreach @entry[0,1,2,4];
741
+ $_ = defined $_ ? $mt->Decode($_, 'UTF8') : '' foreach @entry[@isUTF8];
737
742
  print join(',', @entry), "\n";
738
743
  }
739
744
  } else { # 'g(\d*)'
@@ -1365,11 +1370,11 @@ for (;;) {
1365
1370
  $useMWG = 1;
1366
1371
  } elsif (/^([-\w]+:)*(filename|directory|testname)\b/i) {
1367
1372
  $doSetFileName = 1;
1368
- } elsif (/^([-\w]+:)*(geotag|geotime|geosync)\b/i) {
1373
+ } elsif (/^([-\w]+:)*(geotag|geotime|geosync|geolocate)\b/i) {
1369
1374
  if (lc $2 eq 'geotime') {
1370
1375
  $addGeotime = '';
1371
1376
  } else {
1372
- # add geotag/geosync commands first
1377
+ # add geotag/geosync/geolocate commands first
1373
1378
  unshift @newValues, pop @newValues;
1374
1379
  if (lc $2 eq 'geotag' and (not defined $addGeotime or $addGeotime) and length $val) {
1375
1380
  $addGeotime = ($1 || '') . 'Geotime<DateTimeOriginal#';
@@ -5657,7 +5662,7 @@ with this command:
5657
5662
 
5658
5663
  produces output like this:
5659
5664
 
5660
- -- Generated by ExifTool 12.80 --
5665
+ -- Generated by ExifTool 12.81 --
5661
5666
  File: a.jpg - 2003:10:31 15:44:19
5662
5667
  (f/5.6, 1/60s, ISO 100)
5663
5668
  File: b.jpg - 2006:05:23 11:57:38
@@ -6435,8 +6440,9 @@ otherwise family 0 is assumed. The B<-l> option may be combined with
6435
6440
  B<-listf>, B<-listr> or B<-listwf> to add file descriptions to the list.
6436
6441
  The B<-lang> option may be combined with B<-listx> to output descriptions in
6437
6442
  a single language, and the B<-sort> and/or B<-lang> options may be combined
6438
- with B<-listgeo>. Also, the API GeolocMinPop and GeolocFeature options
6439
- apply to the B<-listgeo> output. Here are some examples:
6443
+ with B<-listgeo>. Also, the API GeolocMinPop, GeolocFeature and
6444
+ GeolocAltNames options apply to the B<-listgeo> output. Here are some
6445
+ examples:
6440
6446
 
6441
6447
  -list # list all tag names
6442
6448
  -list -EXIF:All # list all EXIF tags
@@ -6538,6 +6544,10 @@ examples. Also see "geotag.html" in the full ExifTool distribution and the
6538
6544
  L<Image::ExifTool Options|Image::ExifTool/Options> for more details and for
6539
6545
  information about geotag configuration options.
6540
6546
 
6547
+ The API Geolocation option may be set to the value "geotag" to also write
6548
+ the name, province/state and country of the nearest city while geotagging.
6549
+ See L<https://exiftool.org/geolocation.html> for details.
6550
+
6541
6551
  =item B<-globalTimeShift> I<SHIFT>
6542
6552
 
6543
6553
  Shift all formatted date/time values by the specified amount when reading.
@@ -7435,6 +7445,12 @@ Geotag an image (C<a.jpg>) from position information in a GPS track log
7435
7445
  DateTimeOriginal is used for geotagging. Local system time is assumed
7436
7446
  unless DateTimeOriginal contains a timezone.
7437
7447
 
7448
+ =item exiftool -geotag track.log -geolocate=geotag a.jpg
7449
+
7450
+ Geotag an image and also write geolocation information of the nearest city
7451
+ (city name, state/province and country). Read here for more details about
7452
+ the Geolocation feature: L<https://exiftool.org/geolocation.html#Write>
7453
+
7438
7454
  =item exiftool -geotag t.log -geotime='2009:04:02 13:41:12-05:00' a.jpg
7439
7455
 
7440
7456
  Geotag an image with the GPS position for a specific time.
@@ -23,7 +23,7 @@ use vars qw($VERSION);
23
23
  use Image::ExifTool qw(:DataAccess :Utils);
24
24
  use Image::ExifTool::Canon;
25
25
 
26
- $VERSION = '1.38';
26
+ $VERSION = '1.39';
27
27
 
28
28
  sub ProcessCanonVRD($$;$);
29
29
  sub WriteCanonVRD($$;$);
@@ -1758,7 +1758,7 @@ sub ProcessDR4($$;$)
1758
1758
  } else {
1759
1759
  # load DR4 file into memory
1760
1760
  my $buff;
1761
- $raf->Read($buff, 8) == 8 and $buff eq "IIII\x04\0\x04\0" or return 0;
1761
+ $raf->Read($buff, 8) == 8 and $buff =~ /^IIII[\x04|\x05]\0\x04\0/ or return 0;
1762
1762
  $et->SetFileType();
1763
1763
  $raf->Seek(0, 2) or return $err = 1;
1764
1764
  $dirLen = $raf->Tell();
@@ -31,7 +31,7 @@ use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
 
34
- $VERSION = '1.92';
34
+ $VERSION = '1.93';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -550,8 +550,9 @@ my %faceCategories = (
550
550
  3 => 'Electronic Front Curtain', #10
551
551
  },
552
552
  },
553
- 0x1051 => { Name => 'CropTopLeft', Writable => 'int32u' }, #forum15784
554
- 0x1052 => { Name => 'CropCenter', Writable => 'int32u' }, #forum15784
553
+ 0x1051 => { Name => 'Cropped', Writable => 'int8u', PrintConv => { 0 => 'No', 1 => 'Yes' } }, #forum15784
554
+ 0x1052 => { Name => 'CropTopLeft', Writable => 'int32u' }, #forum15784
555
+ 0x1053 => { Name => 'CropSize', Writable => 'int32u' }, #forum15784
555
556
  # 0x1100 - This may not work well for newer cameras (ref forum12682)
556
557
  0x1100 => [{
557
558
  Name => 'AutoBracketing',
@@ -1033,14 +1034,19 @@ my %faceCategories = (
1033
1034
  },
1034
1035
  0.5 => {
1035
1036
  Name => 'AFAreaZoneSize',
1036
- Mask => 0xf0000,
1037
+ Mask => 0xff0000,
1037
1038
  PrintConv => {
1038
1039
  0 => 'n/a',
1039
1040
  OTHER => sub {
1040
1041
  my ($val, $inv) = @_;
1041
- return "$val x $val" unless $inv;
1042
- $val =~ s/ ?x.*//;
1043
- return $val;
1042
+ my ($w, $h);
1043
+ if ($inv) {
1044
+ my ($w, $h) = $val =~ /(\d+)/g;
1045
+ return 0 unless $w and $h;
1046
+ return((($h << 5) & 0xf0) | ($w & 0x0f));
1047
+ }
1048
+ ($w, $h) = ($val & 0x0f, $val >> 5);
1049
+ return "$w x $h";
1044
1050
  },
1045
1051
  },
1046
1052
  },