exiftool-vendored.pl 12.39.0 → 12.42.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.
- package/bin/Changes +66 -1
- package/bin/MANIFEST +1 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/arg_files/exif2xmp.args +5 -0
- package/bin/arg_files/xmp2exif.args +6 -0
- package/bin/config_files/acdsee.config +6 -6
- package/bin/config_files/photoshop_paths.config +30 -7
- package/bin/config_files/picasa_faces.config +1 -1
- package/bin/config_files/pix4d.config +2 -2
- package/bin/config_files/tiff_version.config +2 -2
- package/bin/exiftool +54 -22
- package/bin/lib/Image/ExifTool/Canon.pm +89 -6
- package/bin/lib/Image/ExifTool/DJI.pm +59 -1
- package/bin/lib/Image/ExifTool/DNG.pm +8 -2
- package/bin/lib/Image/ExifTool/Exif.pm +53 -20
- package/bin/lib/Image/ExifTool/Geotag.pm +3 -2
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +10 -8
- package/bin/lib/Image/ExifTool/ID3.pm +5 -5
- package/bin/lib/Image/ExifTool/MacOS.pm +9 -9
- package/bin/lib/Image/ExifTool/MakerNotes.pm +17 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +44 -12
- package/bin/lib/Image/ExifTool/NikonCustom.pm +4 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +27 -7
- package/bin/lib/Image/ExifTool/PDF.pm +2 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +10 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +6 -5
- package/bin/lib/Image/ExifTool/QuickTime.pm +9 -5
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
- package/bin/lib/Image/ExifTool/Samsung.pm +237 -2
- package/bin/lib/Image/ExifTool/Shortcuts.pm +3 -1
- package/bin/lib/Image/ExifTool/Sony.pm +10 -4
- package/bin/lib/Image/ExifTool/TagLookup.pm +6376 -6354
- package/bin/lib/Image/ExifTool/TagNames.pod +79 -28
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +7 -3
- package/bin/lib/Image/ExifTool/WriteXMP.pl +2 -0
- package/bin/lib/Image/ExifTool/Writer.pl +1 -1
- package/bin/lib/Image/ExifTool/XMP.pm +9 -1
- package/bin/lib/Image/ExifTool/XMPStruct.pl +21 -7
- package/bin/lib/Image/ExifTool.pm +20 -12
- package/bin/lib/Image/ExifTool.pod +7 -6
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +14 -3
|
@@ -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
|
|
15
|
+
They contain a total of 25792 tags, with 16480 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
|
|
@@ -629,6 +629,7 @@ for the official EXIF 2.32 specification.
|
|
|
629
629
|
MakerNoteCanon ExifIFD Canon
|
|
630
630
|
MakerNoteCasio ExifIFD Casio
|
|
631
631
|
MakerNoteCasio2 ExifIFD Casio Type2
|
|
632
|
+
MakerNoteDJIInfo ExifIFD DJI Info
|
|
632
633
|
MakerNoteDJI ExifIFD DJI
|
|
633
634
|
MakerNoteFLIR ExifIFD FLIR
|
|
634
635
|
MakerNoteFujiFilm ExifIFD FujiFilm
|
|
@@ -669,6 +670,7 @@ for the official EXIF 2.32 specification.
|
|
|
669
670
|
MakerNoteNintendo ExifIFD Nintendo
|
|
670
671
|
MakerNoteOlympus ExifIFD Olympus
|
|
671
672
|
MakerNoteOlympus2 ExifIFD Olympus
|
|
673
|
+
MakerNoteOlympus3 ExifIFD Olympus
|
|
672
674
|
MakerNoteLeica ExifIFD Panasonic
|
|
673
675
|
MakerNoteLeica2 ExifIFD Panasonic Leica2
|
|
674
676
|
MakerNoteLeica3 ExifIFD Panasonic Leica3
|
|
@@ -853,6 +855,7 @@ for the official EXIF 2.32 specification.
|
|
|
853
855
|
MakerNotePentax IFD0 Pentax
|
|
854
856
|
MakerNotePentax5 IFD0 Pentax
|
|
855
857
|
MakerNoteRicohPentax IFD0 Pentax
|
|
858
|
+
MakerNoteDJIInfo IFD0 DJI Info
|
|
856
859
|
DNGPrivateData IFD0 int8u!
|
|
857
860
|
0xc635 MakerNoteSafety IFD0 int16u
|
|
858
861
|
0xc640 RawImageSegmentation - no
|
|
@@ -6754,6 +6757,7 @@ Metadata tags that exist.
|
|
|
6754
6757
|
|
|
6755
6758
|
Tag Name Writable
|
|
6756
6759
|
-------- --------
|
|
6760
|
+
CreatorApp no
|
|
6757
6761
|
ManufacturerName no
|
|
6758
6762
|
MediaColor no
|
|
6759
6763
|
MediaWeight no
|
|
@@ -7346,6 +7350,7 @@ Unknown only to reduce the volume of the normal output.
|
|
|
7346
7350
|
0x4021 MultiExp Canon MultiExp
|
|
7347
7351
|
0x4024 FilterInfo Canon FilterInfo
|
|
7348
7352
|
0x4025 HDRInfo Canon HDRInfo
|
|
7353
|
+
0x4026 LogInfo Canon LogInfo
|
|
7349
7354
|
0x4028 AFConfig Canon AFConfig
|
|
7350
7355
|
0x403f RawBurstModeRoll Canon RawBurstInfo
|
|
7351
7356
|
|
|
@@ -9515,6 +9520,18 @@ Information about creative filter settings.
|
|
|
9515
9520
|
1 HDR int32s
|
|
9516
9521
|
2 HDREffect int32s
|
|
9517
9522
|
|
|
9523
|
+
=head3 Canon LogInfo Tags
|
|
9524
|
+
|
|
9525
|
+
Index4 Tag Name Writable
|
|
9526
|
+
------ -------- --------
|
|
9527
|
+
4 CompressionFormat int32s
|
|
9528
|
+
6 Sharpness int32s
|
|
9529
|
+
7 Saturation int32s
|
|
9530
|
+
8 ColorTone int32s
|
|
9531
|
+
9 ColorSpace2 int32s
|
|
9532
|
+
10 ColorMatrix int32s
|
|
9533
|
+
11 CanonLogVersion int32s
|
|
9534
|
+
|
|
9518
9535
|
=head3 Canon AFConfig Tags
|
|
9519
9536
|
|
|
9520
9537
|
Index4 Tag Name Writable
|
|
@@ -10637,6 +10654,30 @@ These tags belong to the ExifTool XMP-drone-dji family 1 group.
|
|
|
10637
10654
|
RtkStdLon real
|
|
10638
10655
|
SelfData string
|
|
10639
10656
|
|
|
10657
|
+
=head3 DJI Info Tags
|
|
10658
|
+
|
|
10659
|
+
Tags written by some DJI drones.
|
|
10660
|
+
|
|
10661
|
+
Tag ID Tag Name Writable
|
|
10662
|
+
------ -------- --------
|
|
10663
|
+
'FlightDegree(Y,P,R)' FlightDegree no
|
|
10664
|
+
'FlightSpeed(X,Y,Z)' FlightSpeed no
|
|
10665
|
+
'GimbalDegree(Y,P,R)' GimbalDegree no
|
|
10666
|
+
'adj_dbg_info' ADJDebugInfo no
|
|
10667
|
+
'ae_dbg_info' AEDebugInfo no
|
|
10668
|
+
'ae_histogram_info' AEHistogramInfo no
|
|
10669
|
+
'ae_liveview_histogram_info'
|
|
10670
|
+
AELiveViewHistogramInfo no
|
|
10671
|
+
'ae_liveview_local_histogram'
|
|
10672
|
+
AELiveViewLocalHistogram no
|
|
10673
|
+
'ae_local_histogram' AELocalHistogram no
|
|
10674
|
+
'af_dbg_info' AFDebugInfo no
|
|
10675
|
+
'awb_dbg_info' AWBDebugInfo no
|
|
10676
|
+
'hiso' Histogram no
|
|
10677
|
+
'hyperlapse_dbg_info' HyperlapsDebugInfo no
|
|
10678
|
+
'sensor_id' SensorID no
|
|
10679
|
+
'xidiri' Xidiri no
|
|
10680
|
+
|
|
10640
10681
|
=head3 DJI ThermalParams Tags
|
|
10641
10682
|
|
|
10642
10683
|
Thermal parameters extracted from APP4 of DJI RJPEG files from the ZH20T.
|
|
@@ -13591,6 +13632,8 @@ These tags belong to the ExifTool XMP-ast family 1 group.
|
|
|
13591
13632
|
About no
|
|
13592
13633
|
GPSAltitude no
|
|
13593
13634
|
GPSAltitudeRef no
|
|
13635
|
+
GPSImgDirection no
|
|
13636
|
+
GPSImgDirectionRef no
|
|
13594
13637
|
GPSLatitude no
|
|
13595
13638
|
GPSLatitudeRef no
|
|
13596
13639
|
GPSLongitude no
|
|
@@ -14317,6 +14360,7 @@ These tags are used by the Z9.
|
|
|
14317
14360
|
434 FlashOutput? int8u
|
|
14318
14361
|
444 FlashRemoteControl? int8u
|
|
14319
14362
|
456 FlashWirelessOption? int8u
|
|
14363
|
+
528 AFAreaMode int8u
|
|
14320
14364
|
530 VRMode int8u
|
|
14321
14365
|
534 BracketSet int8u
|
|
14322
14366
|
536 BracketProgram int8u
|
|
@@ -14710,7 +14754,7 @@ These tags are used by the D4S, D750, D810, D5500, D7200 (FlashInfoVersion
|
|
|
14710
14754
|
0 AFInfo2Version no
|
|
14711
14755
|
62 AFImageWidth int16u
|
|
14712
14756
|
64 AFImageHeight int16u
|
|
14713
|
-
67
|
|
14757
|
+
67 FocusPositionHorizontal int8u~
|
|
14714
14758
|
69 FocusPositionVertical int8u~
|
|
14715
14759
|
70 AFAreaWidth int16u
|
|
14716
14760
|
72 AFAreaHeight int16u
|
|
@@ -16624,6 +16668,7 @@ any information found here will be extracted, even if the tag is not listed.
|
|
|
16624
16668
|
0x0306 AFFineTune int8u
|
|
16625
16669
|
0x0307 AFFineTuneAdj int16s[3]
|
|
16626
16670
|
0x0308 FocusBracketStepSize int8u
|
|
16671
|
+
0x0309 AISubjectTrackingMode int16u
|
|
16627
16672
|
0x0400 FlashMode int16u
|
|
16628
16673
|
0x0401 FlashExposureComp rational64s
|
|
16629
16674
|
0x0403 FlashRemoteControl int16u
|
|
@@ -17415,29 +17460,30 @@ iPalm.
|
|
|
17415
17460
|
Tags extracted from the PANA and LEIC user data found in MP4 videos from
|
|
17416
17461
|
various Panasonic and Leica models.
|
|
17417
17462
|
|
|
17418
|
-
Index1
|
|
17419
|
-
------
|
|
17420
|
-
|
|
17421
|
-
|
|
17422
|
-
|
|
17423
|
-
|
|
17424
|
-
|
|
17425
|
-
|
|
17426
|
-
|
|
17427
|
-
|
|
17428
|
-
|
|
17429
|
-
|
|
17430
|
-
|
|
17431
|
-
|
|
17432
|
-
|
|
17433
|
-
|
|
17434
|
-
|
|
17435
|
-
|
|
17436
|
-
|
|
17437
|
-
|
|
17438
|
-
|
|
17439
|
-
|
|
17440
|
-
|
|
17463
|
+
Index1 Tag Name Writable
|
|
17464
|
+
------ -------- --------
|
|
17465
|
+
0 Make no
|
|
17466
|
+
4 Model no
|
|
17467
|
+
12 Model no
|
|
17468
|
+
16 JPEG-likeData EXIF
|
|
17469
|
+
22 Model no
|
|
17470
|
+
52 Version1 no
|
|
17471
|
+
62 Version2 no
|
|
17472
|
+
80 MakerNoteLeica5 Panasonic Leica5
|
|
17473
|
+
88 ThumbnailWidth no
|
|
17474
|
+
90 ThumbnailHeight no
|
|
17475
|
+
92 ThumbnailImage no
|
|
17476
|
+
1334 ThumbnailWidth no
|
|
17477
|
+
1338 ThumbnailHeight no
|
|
17478
|
+
1342 ThumbnailLength no
|
|
17479
|
+
1350 ThumbnailImage no
|
|
17480
|
+
1358 ThumbnailWidth no
|
|
17481
|
+
1362 ThumbnailHeight no
|
|
17482
|
+
1366 ThumbnailLength no
|
|
17483
|
+
1374 ThumbnailImage no
|
|
17484
|
+
16488 ExifData EXIF
|
|
17485
|
+
16512 ExifData EXIF
|
|
17486
|
+
0x00200080 ExifData EXIF
|
|
17441
17487
|
|
|
17442
17488
|
=head2 Pentax Tags
|
|
17443
17489
|
|
|
@@ -20938,6 +20984,7 @@ still proprietary) Adobe format.
|
|
|
20938
20984
|
MakerNoteCanon Canon
|
|
20939
20985
|
MakerNoteCasio Casio
|
|
20940
20986
|
MakerNoteCasio2 Casio Type2
|
|
20987
|
+
MakerNoteDJIInfo DJI Info
|
|
20941
20988
|
MakerNoteDJI DJI
|
|
20942
20989
|
MakerNoteFLIR FLIR
|
|
20943
20990
|
MakerNoteFujiFilm FujiFilm
|
|
@@ -20978,6 +21025,7 @@ still proprietary) Adobe format.
|
|
|
20978
21025
|
MakerNoteNintendo Nintendo
|
|
20979
21026
|
MakerNoteOlympus Olympus
|
|
20980
21027
|
MakerNoteOlympus2 Olympus
|
|
21028
|
+
MakerNoteOlympus3 Olympus
|
|
20981
21029
|
MakerNoteLeica Panasonic
|
|
20982
21030
|
MakerNoteLeica2 Panasonic Leica2
|
|
20983
21031
|
MakerNoteLeica3 Panasonic Leica3
|
|
@@ -26737,9 +26785,9 @@ ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF,
|
|
|
26737
26785
|
OGG, FLAC, APE, MPC and RealAudio files. ID3v2 tags which support multiple
|
|
26738
26786
|
languages (eg. Comment and Lyrics) are extracted by specifying the tag name,
|
|
26739
26787
|
followed by a dash ('-'), then a 3-character ISO 639-2 language code (eg.
|
|
26740
|
-
"Comment-spa"). See L<
|
|
26741
|
-
|
|
26742
|
-
|
|
26788
|
+
"Comment-spa"). See L<https://id3.org/> for the official ID3 specification
|
|
26789
|
+
and L<http://www.loc.gov/standards/iso639-2/php/code_list.php> for a list of
|
|
26790
|
+
ISO 639-2 language codes.
|
|
26743
26791
|
|
|
26744
26792
|
Tag Name Writable
|
|
26745
26793
|
-------- --------
|
|
@@ -37010,6 +37058,7 @@ FileName.
|
|
|
37010
37058
|
NewGUID ExifTool no
|
|
37011
37059
|
Now ExifTool no
|
|
37012
37060
|
OtherImage File no
|
|
37061
|
+
PageCount File no
|
|
37013
37062
|
PreviewImage File yes
|
|
37014
37063
|
PreviewPDF File no
|
|
37015
37064
|
PreviewPNG File no
|
|
@@ -37477,6 +37526,7 @@ for more details.
|
|
|
37477
37526
|
MakerNoteCasio
|
|
37478
37527
|
MakerNoteCasio2
|
|
37479
37528
|
MakerNoteDJI
|
|
37529
|
+
MakerNoteDJIInfo
|
|
37480
37530
|
MakerNoteFLIR
|
|
37481
37531
|
MakerNoteFujiFilm
|
|
37482
37532
|
MakerNoteGE
|
|
@@ -37517,6 +37567,7 @@ for more details.
|
|
|
37517
37567
|
MakerNoteNintendo
|
|
37518
37568
|
MakerNoteOlympus
|
|
37519
37569
|
MakerNoteOlympus2
|
|
37570
|
+
MakerNoteOlympus3
|
|
37520
37571
|
MakerNoteLeica
|
|
37521
37572
|
MakerNoteLeica2
|
|
37522
37573
|
MakerNoteLeica3
|
|
@@ -1391,9 +1391,13 @@ sub WriteQuickTime($$$)
|
|
|
1391
1391
|
$pos += $siz;
|
|
1392
1392
|
}
|
|
1393
1393
|
if ($msg) {
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1394
|
+
# (allow empty sample description for non-audio/video handler types, eg. 'url ', 'meta')
|
|
1395
|
+
if ($$et{HandlerType}) {
|
|
1396
|
+
my $grp = $$et{CUR_WRITE_GROUP} || $parent;
|
|
1397
|
+
$et->Error("$msg for $grp");
|
|
1398
|
+
return $rtnErr;
|
|
1399
|
+
}
|
|
1400
|
+
$flg = 1; # (this seems to be the case)
|
|
1397
1401
|
}
|
|
1398
1402
|
$$et{QtDataFlg} = $flg;
|
|
1399
1403
|
}
|
|
@@ -298,6 +298,8 @@ sub SetPropertyPath($$;$$$$)
|
|
|
298
298
|
$flatInfo = $$tagTablePtr{$flatID};
|
|
299
299
|
if ($flatInfo) {
|
|
300
300
|
return if $$flatInfo{PropertyPath};
|
|
301
|
+
} elsif (@$propList > 50) {
|
|
302
|
+
return; # avoid deep recursion
|
|
301
303
|
} else {
|
|
302
304
|
# flattened tag doesn't exist, so create it now
|
|
303
305
|
# (could happen if we were just writing a structure)
|
|
@@ -3399,6 +3399,10 @@ NoLoop:
|
|
|
3399
3399
|
}
|
|
3400
3400
|
# save property list for verbose "adding" message unless this tag already exists
|
|
3401
3401
|
$added = \@tagList unless $$tagTablePtr{$tagID};
|
|
3402
|
+
# if this is an empty structure, we must add a Struct field
|
|
3403
|
+
if (not length $val and $$attrs{'rdf:parseType'} and $$attrs{'rdf:parseType'} eq 'Resource') {
|
|
3404
|
+
$$tagInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' };
|
|
3405
|
+
}
|
|
3402
3406
|
AddTagToTable($tagTablePtr, $tagID, $tagInfo);
|
|
3403
3407
|
last;
|
|
3404
3408
|
}
|
|
@@ -3730,7 +3734,11 @@ sub ParseXMPElement($$$;$$$$)
|
|
|
3730
3734
|
} elsif ($prop eq 'rdf:Description') {
|
|
3731
3735
|
# remove unnecessary rdf:Description elements since parseType='Resource'
|
|
3732
3736
|
# is more efficient (also necessary to make property path consistent)
|
|
3733
|
-
|
|
3737
|
+
if (grep /^rdf:Description$/, @$propList) {
|
|
3738
|
+
$parseResource = 1;
|
|
3739
|
+
# set parseType so we know this is a structure
|
|
3740
|
+
$attrs{'rdf:parseType'} = 'Resource';
|
|
3741
|
+
}
|
|
3734
3742
|
} elsif ($prop eq 'xmp:xmpmeta') {
|
|
3735
3743
|
# patch MicrosoftPhoto unconformity
|
|
3736
3744
|
$prop = 'x:xmpmeta';
|
|
@@ -634,15 +634,14 @@ sub RestoreStruct($;$)
|
|
|
634
634
|
local $_;
|
|
635
635
|
my ($et, $keepFlat) = @_;
|
|
636
636
|
my ($key, %structs, %var, %lists, $si, %listKeys, @siList);
|
|
637
|
-
my $ex = $$et{TAG_EXTRA};
|
|
638
637
|
my $valueHash = $$et{VALUE};
|
|
639
638
|
my $fileOrder = $$et{FILE_ORDER};
|
|
640
639
|
my $tagExtra = $$et{TAG_EXTRA};
|
|
641
640
|
foreach $key (keys %{$$et{TAG_INFO}}) {
|
|
642
|
-
$$
|
|
643
|
-
my $structProps = $$
|
|
644
|
-
delete $$
|
|
645
|
-
my $tagInfo = $$et{TAG_INFO}{$key};
|
|
641
|
+
$$tagExtra{$key} or next;
|
|
642
|
+
my $structProps = $$tagExtra{$key}{Struct} or next;
|
|
643
|
+
delete $$tagExtra{$key}{Struct}; # (don't re-use)
|
|
644
|
+
my $tagInfo = $$et{TAG_INFO}{$key}; # tagInfo for flattened tag
|
|
646
645
|
my $table = $$tagInfo{Table};
|
|
647
646
|
my $prop = shift @$structProps;
|
|
648
647
|
my $tag = $$prop[0];
|
|
@@ -829,8 +828,23 @@ sub RestoreStruct($;$)
|
|
|
829
828
|
$var{$_} and push @siList, $_ foreach keys %structs;
|
|
830
829
|
# save new structures in the same order they were read from file
|
|
831
830
|
foreach $si (sort { $var{$a}[1] <=> $var{$b}[1] } @siList) {
|
|
832
|
-
|
|
833
|
-
|
|
831
|
+
# test to see if a tag for this structure has already been generated
|
|
832
|
+
# (this could happen only if one of the structures in a list was empty)
|
|
833
|
+
$key = $var{$si}[0]{Name};
|
|
834
|
+
my $found;
|
|
835
|
+
if ($$valueHash{$key}) {
|
|
836
|
+
my @keys = grep /^$key( \(\d+\))?$/, keys %$valueHash;
|
|
837
|
+
foreach $key (@keys) {
|
|
838
|
+
next unless $$valueHash{$key} eq $structs{$si};
|
|
839
|
+
$found = 1;
|
|
840
|
+
last;
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
unless ($found) {
|
|
844
|
+
# otherwise, generate a new tag for this structure
|
|
845
|
+
$key = $et->FoundTag($var{$si}[0], '');
|
|
846
|
+
$$valueHash{$key} = $structs{$si};
|
|
847
|
+
}
|
|
834
848
|
$$fileOrder{$key} = $var{$si}[1];
|
|
835
849
|
}
|
|
836
850
|
}
|
|
@@ -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.
|
|
32
|
+
$VERSION = '12.42';
|
|
33
33
|
$RELEASE = '';
|
|
34
34
|
@ISA = qw(Exporter);
|
|
35
35
|
%EXPORT_TAGS = (
|
|
@@ -320,7 +320,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
|
320
320
|
FPF => ['FPF', 'FLIR Public image Format'],
|
|
321
321
|
FPX => ['FPX', 'FlashPix'],
|
|
322
322
|
GIF => ['GIF', 'Compuserve Graphics Interchange Format'],
|
|
323
|
-
GPR => ['TIFF', '
|
|
323
|
+
GPR => ['TIFF', 'General Purpose RAW'], # https://gopro.github.io/gpr/
|
|
324
324
|
GZ => 'GZIP',
|
|
325
325
|
GZIP => ['GZIP', 'GNU ZIP compressed archive'],
|
|
326
326
|
HDP => ['TIFF', 'Windows HD Photo'],
|
|
@@ -1799,6 +1799,7 @@ my %systemTagsNotes = (
|
|
|
1799
1799
|
Writable => 1,
|
|
1800
1800
|
Protected => 1,
|
|
1801
1801
|
},
|
|
1802
|
+
PageCount => { Notes => 'the number of pages in a multi-page TIFF document' },
|
|
1802
1803
|
);
|
|
1803
1804
|
|
|
1804
1805
|
# tags defined by UserParam option (added at runtime)
|
|
@@ -5895,13 +5896,13 @@ sub GetUnixTime($;$)
|
|
|
5895
5896
|
sub ConvertFileSize($)
|
|
5896
5897
|
{
|
|
5897
5898
|
my $val = shift;
|
|
5898
|
-
$val <
|
|
5899
|
-
$val <
|
|
5900
|
-
$val <
|
|
5901
|
-
$val <
|
|
5902
|
-
$val <
|
|
5903
|
-
$val <
|
|
5904
|
-
return sprintf('%.0f
|
|
5899
|
+
$val < 2000 and return "$val bytes";
|
|
5900
|
+
$val < 10000 and return sprintf('%.1f kB', $val / 1000);
|
|
5901
|
+
$val < 2000000 and return sprintf('%.0f kB', $val / 1000);
|
|
5902
|
+
$val < 10000000 and return sprintf('%.1f MB', $val / 1000000);
|
|
5903
|
+
$val < 2000000000 and return sprintf('%.0f MB', $val / 1000000);
|
|
5904
|
+
$val < 10000000000 and return sprintf('%.1f GB', $val / 1000000000);
|
|
5905
|
+
return sprintf('%.0f GB', $val / 1000000000);
|
|
5905
5906
|
}
|
|
5906
5907
|
|
|
5907
5908
|
#------------------------------------------------------------------------------
|
|
@@ -7448,7 +7449,11 @@ sub DoProcessTIFF($$;$)
|
|
|
7448
7449
|
# this looks like a BigTIFF image
|
|
7449
7450
|
$raf->Seek(0);
|
|
7450
7451
|
require Image::ExifTool::BigTIFF;
|
|
7451
|
-
|
|
7452
|
+
my $result = Image::ExifTool::BigTIFF::ProcessBTF($self, $dirInfo);
|
|
7453
|
+
if ($result) {
|
|
7454
|
+
$self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
|
|
7455
|
+
return 1;
|
|
7456
|
+
}
|
|
7452
7457
|
} elsif ($identifier == 0x4f52 or $identifier == 0x5352) {
|
|
7453
7458
|
# Olympus ORF image (set FileType now because base type is 'ORF')
|
|
7454
7459
|
$self->SetFileType($fileType = 'ORF');
|
|
@@ -7541,6 +7546,9 @@ sub DoProcessTIFF($$;$)
|
|
|
7541
7546
|
# override whatever FileType we set since we now know it is DNG
|
|
7542
7547
|
$self->OverrideFileType($$self{TIFF_TYPE} = 'DNG');
|
|
7543
7548
|
}
|
|
7549
|
+
if ($$self{TIFF_TYPE} eq 'TIFF') {
|
|
7550
|
+
$self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
|
|
7551
|
+
}
|
|
7544
7552
|
return 1;
|
|
7545
7553
|
}
|
|
7546
7554
|
#
|
|
@@ -7678,8 +7686,8 @@ sub DoProcessTIFF($$;$)
|
|
|
7678
7686
|
# check DNG version
|
|
7679
7687
|
if ($$self{DNGVersion}) {
|
|
7680
7688
|
my $ver = $$self{DNGVersion};
|
|
7681
|
-
# currently support up to DNG version 1.
|
|
7682
|
-
unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.
|
|
7689
|
+
# currently support up to DNG version 1.6
|
|
7690
|
+
unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.6) {
|
|
7683
7691
|
$ver =~ tr/ /./;
|
|
7684
7692
|
$self->Error("DNG Version $ver not yet tested", 1);
|
|
7685
7693
|
}
|
|
@@ -593,12 +593,13 @@ different when copying tags with L</SetNewValuesFromFile>.
|
|
|
593
593
|
=item DateFormat
|
|
594
594
|
|
|
595
595
|
Format for printing date/time values. See C<strftime> in the L<POSIX>
|
|
596
|
-
package for details about
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
596
|
+
package and L<https://exiftool.org/filename.html#codes> for details about
|
|
597
|
+
the format string. If the date can not be converted, the value is left
|
|
598
|
+
unchanged unless the StrictDate option is set. Timezones are ignored. The
|
|
599
|
+
inverse conversion (ie. when calling L</SetNewValue>) is performed only if
|
|
600
|
+
POSIX::strptime or Time::Piece is installed. The default setting of undef
|
|
601
|
+
causes date/time values to remain in standard EXIF format (similar to a
|
|
602
|
+
DateFormat of "%Y:%m:%d %H:%M:%S").
|
|
602
603
|
|
|
603
604
|
=item Duplicates
|
|
604
605
|
|
package/bin/pp_build_exe.args
CHANGED
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
# 10) Copy zip archive to web servers.
|
|
22
22
|
# 11) Update zip file version in link and text of html/index.html.
|
|
23
23
|
#------------------------------------------------------------------------------
|
|
24
|
-
-T exiftool-12.
|
|
25
|
-
#--info=FileVersion=12.
|
|
26
|
-
#--info=ProductVersion=12.
|
|
27
|
-
##"--info=Build Date=2022:01
|
|
24
|
+
-T exiftool-12.42
|
|
25
|
+
#--info=FileVersion=12.4.2.0
|
|
26
|
+
#--info=ProductVersion=12.4.2.0
|
|
27
|
+
##"--info=Build Date=2022:06:01 14:21:21-04:00"
|
|
28
28
|
##"--info=Bundled Perl Version=ActivePerl 5.24.0"
|
|
29
29
|
##"--info=LegalCopyright=Copyright (c) 2003-2022, Phil Harvey"
|
|
30
30
|
##"--info=ProductName=ExifTool"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exiftool-vendored.pl",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.42.0",
|
|
4
4
|
"description": "Vendored perl ExifTool for Node.js",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"homepage": "https://github.com/mceachen/exiftool-vendored.pl#readme",
|
|
@@ -30,9 +30,20 @@
|
|
|
30
30
|
"test": "mocha",
|
|
31
31
|
"update": "bash -c ./update.sh"
|
|
32
32
|
},
|
|
33
|
+
"release-it": {
|
|
34
|
+
"hooks": {
|
|
35
|
+
"before:init": [
|
|
36
|
+
"yarn install",
|
|
37
|
+
"yarn test"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"github": {
|
|
41
|
+
"release": true
|
|
42
|
+
}
|
|
43
|
+
},
|
|
33
44
|
"devDependencies": {
|
|
34
|
-
"mocha": "^
|
|
35
|
-
"prettier": "^2.
|
|
45
|
+
"mocha": "^10.0.0",
|
|
46
|
+
"prettier": "^2.7.1",
|
|
36
47
|
"rimraf": "^3.0.2"
|
|
37
48
|
}
|
|
38
49
|
}
|