exiftool-vendored.exe 12.78.0 → 12.80.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 (40) hide show
  1. package/bin/exiftool_files/Changes +36 -3
  2. package/bin/exiftool_files/README +2 -2
  3. package/bin/exiftool_files/config_files/acdsee.config +37 -57
  4. package/bin/exiftool_files/config_files/example.config +6 -0
  5. package/bin/exiftool_files/exiftool.pl +41 -19
  6. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +3 -0
  7. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/cs.pm +978 -0
  8. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/de.pm +1975 -0
  9. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/en_ca.pm +44 -0
  10. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/en_gb.pm +124 -0
  11. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/es.pm +2921 -0
  12. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/fi.pm +1116 -0
  13. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/fr.pm +3171 -0
  14. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/it.pm +2750 -0
  15. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ja.pm +10256 -0
  16. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ko.pm +4499 -0
  17. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/nl.pm +1270 -0
  18. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/pl.pm +3019 -0
  19. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/ru.pm +18220 -0
  20. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/sk.pm +441 -0
  21. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/sv.pm +714 -0
  22. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/tr.pm +452 -0
  23. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/zh_cn.pm +2225 -0
  24. package/bin/exiftool_files/lib/Image/ExifTool/GeoLang/zh_tw.pm +72 -0
  25. package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
  26. package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +678 -140
  27. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +7 -0
  28. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +7 -2
  29. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +17 -17
  30. package/bin/exiftool_files/lib/Image/ExifTool/README +6 -5
  31. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +2547 -2517
  32. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +72 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +1 -0
  34. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +1 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +50 -0
  36. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +17 -2
  37. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +64 -0
  38. package/bin/exiftool_files/lib/Image/ExifTool.pm +165 -88
  39. package/bin/exiftool_files/lib/Image/ExifTool.pod +20 -7
  40. package/package.json +2 -2
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
12
12
  =head1 TAG TABLES
13
13
 
14
14
  The tables listed below give the names of all tags recognized by ExifTool.
15
- They contain a total of 27565 tags, with 17308 unique tag names.
15
+ They contain a total of 27593 tags, with 17336 unique tag names.
16
16
 
17
17
  B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
18
18
  table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
@@ -1362,6 +1362,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
1362
1362
  --------- --------
1363
1363
  aas XMP aas
1364
1364
  acdsee XMP acdsee
1365
+ acdsee-rs XMP ACDSeeRegions
1365
1366
  album XMP Album
1366
1367
  apple-fi XMP apple_fi
1367
1368
  ast Nikon ast
@@ -1505,6 +1506,66 @@ These tags belong to the ExifTool XMP-acdsee family 1 group.
1505
1506
  Snapshots string/+
1506
1507
  Tagged boolean/
1507
1508
 
1509
+ =head3 XMP ACDSeeRegions Tags
1510
+
1511
+ These tags belong to the ExifTool XMP-acdsee-rs family 1 group.
1512
+
1513
+ Tag Name Writable
1514
+ -------- --------
1515
+ RegionInfoACDSee ACDSeeRegionInfo Struct
1516
+ ACDSeeRegionAppliedToDimensions ACDSeeDimensions Struct_
1517
+ ACDSeeRegionAppliedToDimensionsH real/_
1518
+ ACDSeeRegionAppliedToDimensionsUnit string/_
1519
+ ACDSeeRegionAppliedToDimensionsW real/_
1520
+ ACDSeeRegion ACDSeeRegion Struct_+
1521
+ ACDSeeRegionALGArea ACDSeeArea Struct_+
1522
+ ACDSeeRegionALGAreaH real/_+
1523
+ ACDSeeRegionALGAreaW real/_+
1524
+ ACDSeeRegionALGAreaX real/_+
1525
+ ACDSeeRegionALGAreaY real/_+
1526
+ ACDSeeRegionDLYArea ACDSeeArea Struct_+
1527
+ ACDSeeRegionDLYAreaH real/_+
1528
+ ACDSeeRegionDLYAreaW real/_+
1529
+ ACDSeeRegionDLYAreaX real/_+
1530
+ ACDSeeRegionDLYAreaY real/_+
1531
+ ACDSeeRegionName string/_+
1532
+ ACDSeeRegionNameAssignType string/_+
1533
+ ACDSeeRegionType string/_+
1534
+
1535
+ =head3 XMP ACDSeeRegionInfo Struct
1536
+
1537
+ Field Name Writable
1538
+ ---------- --------
1539
+ AppliedToDimensions ACDSeeDimensions Struct
1540
+ RegionList ACDSeeRegion Struct+
1541
+
1542
+ =head3 XMP ACDSeeDimensions Struct
1543
+
1544
+ Field Name Writable
1545
+ ---------- --------
1546
+ H real
1547
+ Unit string
1548
+ W real
1549
+
1550
+ =head3 XMP ACDSeeRegion Struct
1551
+
1552
+ Field Name Writable
1553
+ ---------- --------
1554
+ ALGArea ACDSeeArea Struct
1555
+ DLYArea ACDSeeArea Struct
1556
+ Name string
1557
+ NameAssignType string
1558
+ Type string
1559
+
1560
+ =head3 XMP ACDSeeArea Struct
1561
+
1562
+ Field Name Writable
1563
+ ---------- --------
1564
+ H real
1565
+ W real
1566
+ X real
1567
+ Y real
1568
+
1508
1569
  =head3 XMP Album Tags
1509
1570
 
1510
1571
  Adobe Album namespace tags.
@@ -5149,6 +5210,7 @@ These tags belong to the ExifTool XMP-iptcExt family 1 group.
5149
5210
  LocationCreatedCountryCode string_+
5150
5211
  LocationCreatedCountryName string_+
5151
5212
  LocationCreatedGPSAltitude rational_+
5213
+ LocationCreatedGPSAltitudeRef integer_+
5152
5214
  LocationCreatedGPSLatitude string_+
5153
5215
  LocationCreatedGPSLongitude string_+
5154
5216
  LocationCreatedIdentifier string_+
@@ -5162,6 +5224,7 @@ These tags belong to the ExifTool XMP-iptcExt family 1 group.
5162
5224
  LocationShownCountryCode string_+
5163
5225
  LocationShownCountryName string_+
5164
5226
  LocationShownGPSAltitude rational_+
5227
+ LocationShownGPSAltitudeRef integer_+
5165
5228
  LocationShownGPSLatitude string_+
5166
5229
  LocationShownGPSLongitude string_+
5167
5230
  LocationShownIdentifier string_+
@@ -5215,6 +5278,7 @@ These tags belong to the ExifTool XMP-iptcExt family 1 group.
5215
5278
  RatingRegionCountryCode string_+
5216
5279
  RatingRegionCountryName string_+
5217
5280
  RatingRegionGPSAltitude rational_+
5281
+ RatingRegionGPSAltitudeRef integer_+
5218
5282
  RatingRegionGPSLatitude string_+
5219
5283
  RatingRegionGPSLongitude string_+
5220
5284
  RatingRegionIdentifier string_+
@@ -5423,6 +5487,7 @@ is to write ImageRegion as a structure with these tags as new fields.
5423
5487
  CountryCode string
5424
5488
  CountryName string
5425
5489
  GPSAltitude rational
5490
+ GPSAltitudeRef integer
5426
5491
  GPSLatitude string
5427
5492
  GPSLongitude string
5428
5493
  Identifier string+
@@ -6260,6 +6325,7 @@ These tags belong to the ExifTool XMP-xmpDM family 1 group.
6260
6325
  OutCueScale rational_
6261
6326
  OutCueValue integer_
6262
6327
  PartOfCompilation boolean
6328
+ Pick integer
6263
6329
  ProjectName string
6264
6330
  ProjectRef ProjectLink Struct
6265
6331
  ProjectRefPath string_
@@ -13099,6 +13165,8 @@ Tags extracted from FLIR Public image Format (FPF) files.
13099
13165
  0x104d CropMode int16u
13100
13166
  0x104e ColorChromeFXBlue int32s
13101
13167
  0x1050 ShutterType int16u
13168
+ 0x1051 CropTopLeft int32u
13169
+ 0x1052 CropCenter int32u
13102
13170
  0x1100 AutoBracketing int16u
13103
13171
  0x1101 SequenceNumber int16u
13104
13172
  0x1103 DriveSettings FujiFilm DriveSettings
@@ -39661,10 +39729,13 @@ FileName.
39661
39729
  GeolocationCountry ExifTool no
39662
39730
  GeolocationCountryCode ExifTool no
39663
39731
  GeolocationDistance ExifTool no
39732
+ GeolocationFeatureCode ExifTool no
39664
39733
  GeolocationPopulation ExifTool no
39665
39734
  GeolocationPosition ExifTool no
39666
39735
  GeolocationRegion ExifTool no
39736
+ GeolocationSubregion ExifTool no
39667
39737
  GeolocationTimeZone ExifTool no
39738
+ GeolocationWarning ExifTool no
39668
39739
  Geosync - yes
39669
39740
  Geotag - yes
39670
39741
  Geotime - yes
@@ -148,6 +148,7 @@ sub PrintInvGPSCoordinates($)
148
148
  $v[2] = Image::ExifTool::ToFloat($v[2]) * ($below ? -1 : 1) if @v == 3;
149
149
  return "@v";
150
150
  }
151
+ return $val if $val =~ /^([-+]?\d+(\.\d*)?)\s+([-+]?\d+(\.\d*)?)$/; # already 2 floats?
151
152
  return $val if $val =~ /^([-+]\d+(\.\d*)?){2,3}(CRS.*)?\/?$/; # already in ISO6709 format?
152
153
  return undef;
153
154
  }
@@ -236,7 +236,7 @@ sub CheckXMP($$$;$)
236
236
  return 'Not a floating point number';
237
237
  }
238
238
  if ($format eq 'rational') {
239
- $$valPtr = join('/', Image::ExifTool::Rationalize($$valPtr));
239
+ $$valPtr = join('/', Image::ExifTool::Rationalize($$valPtr,0xffffffff));
240
240
  }
241
241
  } elsif ($format eq 'integer') {
242
242
  # make sure the value is integer
@@ -1297,6 +1297,9 @@ sub SetNewValuesFromFile($$;@)
1297
1297
  Filter => $$options{Filter},
1298
1298
  FixBase => $$options{FixBase},
1299
1299
  Geolocation => $$options{Geolocation},
1300
+ GeolocFeature => $$options{GeolocFeature},
1301
+ GeolocMinPop => $$options{GeolocMinPop},
1302
+ GeolocMaxDist => $$options{GeolocMaxDist},
1300
1303
  GlobalTimeShift => $$options{GlobalTimeShift},
1301
1304
  HexTagIDs => $$options{HexTagIDs},
1302
1305
  IgnoreMinorErrors=>$$options{IgnoreMinorErrors},
@@ -3784,6 +3787,53 @@ sub GetWriteGroup1($$)
3784
3787
  return $self->GetGroup($tagInfo, 1);
3785
3788
  }
3786
3789
 
3790
+ #------------------------------------------------------------------------------
3791
+ # Get list of tags to write for Geolocate feature
3792
+ # Inputs: 0) ExifTool ref, 1) group name(s),
3793
+ # 2) 0=prefer writing City, 1=prefer writing GPS, undef=deleting tags
3794
+ # Returns: list of tags to write/delete
3795
+ sub GetGeolocateTags($$;$)
3796
+ {
3797
+ my ($self, $wantGroup, $writeGPS) = @_;
3798
+ my @grps = $wantGroup ? map lc, split(/:/, $wantGroup) : ();
3799
+ my %grps = map { $_ => $_ } @grps; # lookup for specified groups
3800
+ $grps{exif} and not $grps{gps} and $grps{gps} = 'gps', push(@grps, 'gps');
3801
+ my %tagGroups = (
3802
+ 'xmp-iptcext' => [ qw(LocationShownCity LocationShownProvinceState LocationShownCountryCode
3803
+ LocationShownCountryName LocationShownGPSLatitude LocationShownGPSLongitude) ],
3804
+ 'xmp-photoshop' => [ qw(City State Country) ],
3805
+ 'xmp-iptccore' => [ 'CountryCode' ],
3806
+ 'iptc' => [ qw(City Province-State Country-PrimaryLocationCode Country-PrimaryLocationName) ],
3807
+ 'gps' => [ qw(GPSLatitude GPSLongitude GPSLatitudeRef GPSLongitudeRef) ],
3808
+ 'xmp-exif' => [ qw(GPSLatitude GPSLongitude) ],
3809
+ 'keys' => [ 'GPSCoordinates' ],
3810
+ 'itemlist' => [ 'GPSCoordinates' ],
3811
+ 'userdata' => [ 'GPSCoordinates' ],
3812
+ # more general groups not in this lookup: XMP and QuickTime
3813
+ );
3814
+ my (@tags, $grp);
3815
+ # set specific City and GPS tags
3816
+ foreach $grp (@grps) {
3817
+ $tagGroups{$grp} and push @tags, map("$grp:$_", @{$tagGroups{$grp}});
3818
+ }
3819
+ # set default XMP City tags if necessary
3820
+ if (not $writeGPS and ($grps{xmp} or (not @tags and not $grps{quicktime}))) {
3821
+ push @tags, qw(XMP:City XMP:State XMP:CountryCode XMP:Country);
3822
+ }
3823
+ $writeGPS = 1 unless defined $writeGPS; # (delete both City and GPS)
3824
+ # set default QuickTime tag if necessary
3825
+ my $didQT = grep /Coordinates$/, @tags;
3826
+ if (($grps{quicktime} and not $didQT) or ($writeGPS and not @tags and not $grps{xmp})) {
3827
+ push @tags, 'QuickTime:GPSCoordinates';
3828
+ }
3829
+ # set default GPS tags if necessary
3830
+ if ($writeGPS) {
3831
+ push @tags, qw(XMP:GPSLatitude XMP:GPSLongitude) if $grps{xmp} and not $grps{'xmp-exif'};
3832
+ push @tags, qw(GPSLatitude GPSLongitude GPSLatitudeRef GPSLongitudeRef) if not $wantGroup;
3833
+ }
3834
+ return @tags;
3835
+ }
3836
+
3787
3837
  #------------------------------------------------------------------------------
3788
3838
  # Get new value hash for specified tagInfo/writeGroup
3789
3839
  # Inputs: 0) ExifTool object reference, 1) reference to tag info hash
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
  require Exporter;
52
52
 
53
- $VERSION = '3.63';
53
+ $VERSION = '3.64';
54
54
  @ISA = qw(Exporter);
55
55
  @EXPORT_OK = qw(EscapeXML UnescapeXML);
56
56
 
@@ -171,6 +171,7 @@ my %xmpNS = (
171
171
  pmi => 'http://prismstandard.org/namespaces/pmi/2.2/',
172
172
  prm => 'http://prismstandard.org/namespaces/prm/3.0/',
173
173
  acdsee => 'http://ns.acdsee.com/iptc/1.0/',
174
+ 'acdsee-rs'=> 'http://ns.acdsee.com/regions/',
174
175
  digiKam => 'http://www.digikam.org/ns/1.0/',
175
176
  swf => 'http://ns.adobe.com/swf/1.0/',
176
177
  cell => 'http://developer.sonyericsson.com/cell/1.0/',
@@ -802,6 +803,10 @@ my %sRangeMask = (
802
803
  Name => 'acdsee',
803
804
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::acdsee' },
804
805
  },
806
+ 'acdsee-rs' => {
807
+ Name => 'acdsee-rs',
808
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::ACDSeeRegions' },
809
+ },
805
810
  digiKam => {
806
811
  Name => 'digiKam',
807
812
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::digiKam' },
@@ -2554,7 +2559,17 @@ my %sPantryItem = (
2554
2559
  return $val;
2555
2560
  },
2556
2561
  },
2557
- ApproximateFocusDistance => { Writable => 'rational' }, #PH (LR3)
2562
+ ApproximateFocusDistance => {
2563
+ Writable => 'rational',
2564
+ PrintConv => {
2565
+ 4294967295 => 'infinity',
2566
+ OTHER => sub {
2567
+ my ($val, $inv) = @_;
2568
+ return $val eq 'infinity' ? 4294967295 : $val if $inv;
2569
+ return $val eq 4294967295 ? 'infinity' : $val;
2570
+ },
2571
+ },
2572
+ }, #PH (LR3)
2558
2573
  # the following new in LR6 (ref forum6497)
2559
2574
  IsMergedPanorama => { Writable => 'boolean' },
2560
2575
  IsMergedHDR => { Writable => 'boolean' },
@@ -224,6 +224,7 @@ my %sAppInfo = (
224
224
  fileDataRate => { Writable => 'rational' },
225
225
  genre => { },
226
226
  good => { Writable => 'boolean' },
227
+ pick => { Writable => 'integer' }, #forum15815
227
228
  instrument => { },
228
229
  introTime => { Struct => \%sTime },
229
230
  key => {
@@ -403,6 +404,18 @@ my %sLocationDetails = (
403
404
  PrintConv => '$val =~ /^(inf|undef)$/ ? $val : "$val m"',
404
405
  PrintConvInv => '$val=~s/\s*m$//;$val',
405
406
  },
407
+ GPSAltitudeRef => {
408
+ Writable => 'integer',
409
+ PrintConv => {
410
+ OTHER => sub {
411
+ my ($val, $inv) = @_;
412
+ return undef unless $inv and $val =~ /^([-+0-9])/;
413
+ return($1 eq '-' ? 1 : 0);
414
+ },
415
+ 0 => 'Above Sea Level',
416
+ 1 => 'Below Sea Level',
417
+ },
418
+ },
406
419
  );
407
420
  my %sCVTermDetails = (
408
421
  STRUCT_NAME => 'CVTermDetails',
@@ -1373,6 +1386,57 @@ my %sSubVersion = (
1373
1386
  Snapshots => { List => 'Bag', Binary => 1 },
1374
1387
  );
1375
1388
 
1389
+ # ACDSee region tags (ref BKW)
1390
+ my %sACDSeeDimensions = (
1391
+ STRUCT_NAME => 'ACDSeeDimensions',
1392
+ NAMESPACE => {'acdsee-stDim' => 'http://ns.acdsee.com/sType/Dimensions#'},
1393
+ 'w' => { Writable => 'real' },
1394
+ 'h' => { Writable => 'real' },
1395
+ 'unit' => { },
1396
+ );
1397
+ my %sACDSeeArea = (
1398
+ STRUCT_NAME => 'ACDSeeArea',
1399
+ NAMESPACE => { 'acdsee-stArea' => 'http://ns.acdsee.com/sType/Area#' },
1400
+ 'x' => { Writable => 'real' },
1401
+ 'y' => { Writable => 'real' },
1402
+ w => { Writable => 'real' },
1403
+ h => { Writable => 'real' },
1404
+ );
1405
+ my %sACDSeeRegionStruct = (
1406
+ STRUCT_NAME => 'ACDSeeRegion',
1407
+ NAMESPACE => 'acdsee-rs',
1408
+ ALGArea => { Struct => \%sACDSeeArea },
1409
+ DLYArea => { Struct => \%sACDSeeArea },
1410
+ Name => { },
1411
+ NameAssignType => { },
1412
+ Type => { },
1413
+ );
1414
+ %Image::ExifTool::XMP::ACDSeeRegions = (
1415
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee-rs', 2 => 'Image' },
1416
+ NAMESPACE => 'acdsee-rs',
1417
+ WRITABLE => 'string',
1418
+ AVOID => 1,
1419
+ Regions => {
1420
+ Name => 'RegionInfoACDSee',
1421
+ FlatName => 'ACDSee',
1422
+ # the "Struct" entry defines the structure fields
1423
+ Struct => {
1424
+ # optional structure name (used for warning messages only)
1425
+ STRUCT_NAME => 'ACDSeeRegionInfo',
1426
+ NAMESPACE => 'acdsee-rs',
1427
+ RegionList => {
1428
+ FlatName => 'Region',
1429
+ Struct => \%sACDSeeRegionStruct,
1430
+ List => 'Bag',
1431
+ },
1432
+ AppliedToDimensions => {
1433
+ FlatName => 'RegionAppliedToDimensions',
1434
+ Struct => \%sACDSeeDimensions,
1435
+ },
1436
+ },
1437
+ },
1438
+ );
1439
+
1376
1440
  # Picture Licensing Universal System namespace properties (xmpPLUS)
1377
1441
  %Image::ExifTool::XMP::xmpPLUS = (
1378
1442
  %xmpTableDefaults,