exiftool-vendored.pl 13.0.0 → 13.16.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 +254 -20
- package/bin/MANIFEST +10 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +3 -3
- package/bin/arg_files/exif2xmp.args +4 -0
- package/bin/arg_files/xmp2exif.args +2 -1
- package/bin/build_geolocation +1 -1
- package/bin/exiftool +356 -213
- package/bin/lib/File/RandomAccess.pm +1 -1
- package/bin/lib/File/RandomAccess.pod +2 -2
- package/bin/lib/Image/ExifTool/AAC.pm +1 -1
- package/bin/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/lib/Image/ExifTool/AFCP.pm +6 -6
- package/bin/lib/Image/ExifTool/AIFF.pm +2 -2
- package/bin/lib/Image/ExifTool/APE.pm +2 -2
- package/bin/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/lib/Image/ExifTool/ASF.pm +2 -2
- package/bin/lib/Image/ExifTool/Apple.pm +11 -9
- package/bin/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +36 -22
- package/bin/lib/Image/ExifTool/CBOR.pm +5 -2
- package/bin/lib/Image/ExifTool/Canon.pm +66 -27
- package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/lib/Image/ExifTool/Casio.pm +1 -1
- package/bin/lib/Image/ExifTool/Charset.pm +1 -1
- package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/lib/Image/ExifTool/DJI.pm +196 -30
- package/bin/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/lib/Image/ExifTool/EXE.pm +138 -33
- package/bin/lib/Image/ExifTool/Exif.pm +29 -16
- package/bin/lib/Image/ExifTool/FITS.pm +3 -3
- package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/lib/Image/ExifTool/FLIF.pm +3 -3
- package/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/lib/Image/ExifTool/FlashPix.pm +17 -21
- package/bin/lib/Image/ExifTool/Font.pm +2 -2
- package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
- package/bin/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/lib/Image/ExifTool/GIF.pm +144 -93
- package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/lib/Image/ExifTool/GM.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +34 -30
- package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/Geolocation.pm +19 -9
- package/bin/lib/Image/ExifTool/Geotag.pm +46 -12
- package/bin/lib/Image/ExifTool/GoPro.pm +120 -8
- package/bin/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/lib/Image/ExifTool/HP.pm +2 -2
- package/bin/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +81 -2
- package/bin/lib/Image/ExifTool/ICO.pm +1 -1
- package/bin/lib/Image/ExifTool/ID3.pm +8 -8
- package/bin/lib/Image/ExifTool/IPTC.pm +10 -7
- package/bin/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/lib/Image/ExifTool/Import.pm +5 -4
- package/bin/lib/Image/ExifTool/InDesign.pm +2 -2
- package/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
- package/bin/lib/Image/ExifTool/JPEG.pm +32 -5
- package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +10 -9
- package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/lib/Image/ExifTool/LNK.pm +2 -2
- package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- package/bin/lib/Image/ExifTool/LigoGPS.pm +409 -0
- package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/lib/Image/ExifTool/M2TS.pm +57 -18
- package/bin/lib/Image/ExifTool/MIE.pm +15 -6
- package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/lib/Image/ExifTool/MISB.pm +1 -1
- package/bin/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/lib/Image/ExifTool/MXF.pm +3 -3
- package/bin/lib/Image/ExifTool/MacOS.pm +3 -2
- package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/lib/Image/ExifTool/Matroska.pm +22 -6
- package/bin/lib/Image/ExifTool/Microsoft.pm +2 -2
- package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +495 -39
- package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/lib/Image/ExifTool/NikonCustom.pm +2 -2
- package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/lib/Image/ExifTool/OOXML.pm +8 -8
- package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +1 -1
- package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- package/bin/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/lib/Image/ExifTool/PDF.pm +49 -18
- package/bin/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/lib/Image/ExifTool/PLIST.pm +4 -4
- package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/lib/Image/ExifTool/PNG.pm +20 -8
- package/bin/lib/Image/ExifTool/PPM.pm +12 -3
- package/bin/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +27 -3
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/lib/Image/ExifTool/PhaseOne.pm +4 -4
- package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +65 -4
- package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/lib/Image/ExifTool/Protobuf.pm +270 -0
- package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +326 -88
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +199 -195
- package/bin/lib/Image/ExifTool/README +12 -2
- package/bin/lib/Image/ExifTool/RIFF.pm +21 -6
- package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/lib/Image/ExifTool/RTF.pm +2 -2
- package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/lib/Image/ExifTool/Ricoh.pm +4 -4
- package/bin/lib/Image/ExifTool/Samsung.pm +2 -2
- package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/lib/Image/ExifTool/Shift.pl +1 -1
- package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/Sony.pm +5 -4
- package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/lib/Image/ExifTool/TagInfoXML.pm +6 -5
- package/bin/lib/Image/ExifTool/TagLookup.pm +7023 -6968
- package/bin/lib/Image/ExifTool/TagNames.pod +445 -29
- package/bin/lib/Image/ExifTool/Text.pm +4 -3
- package/bin/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/lib/Image/ExifTool/Torrent.pm +3 -3
- package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/lib/Image/ExifTool/VCard.pm +3 -3
- package/bin/lib/Image/ExifTool/Validate.pm +6 -6
- package/bin/lib/Image/ExifTool/Vivo.pm +124 -0
- package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/lib/Image/ExifTool/WPG.pm +1 -1
- package/bin/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteExif.pl +3 -3
- package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +166 -79
- package/bin/lib/Image/ExifTool/WriteRIFF.pl +17 -6
- package/bin/lib/Image/ExifTool/WriteXMP.pl +3 -3
- package/bin/lib/Image/ExifTool/Writer.pl +89 -96
- package/bin/lib/Image/ExifTool/XISF.pm +1 -1
- package/bin/lib/Image/ExifTool/XMP.pm +28 -13
- package/bin/lib/Image/ExifTool/XMP2.pl +103 -1
- package/bin/lib/Image/ExifTool/XMPStruct.pl +2 -3
- package/bin/lib/Image/ExifTool/ZIP.pm +2 -2
- package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/lib/Image/ExifTool.pm +335 -163
- package/bin/lib/Image/ExifTool.pod +119 -73
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/windows_exiftool.txt +96 -51
- package/package.json +9 -9
|
@@ -920,7 +920,7 @@ page.
|
|
|
920
920
|
|
|
921
921
|
=head1 AUTHOR
|
|
922
922
|
|
|
923
|
-
Copyright 2003-
|
|
923
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
924
924
|
|
|
925
925
|
This library is free software; you can redistribute it and/or modify it
|
|
926
926
|
under the same terms as Perl itself.
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# 5) http://www.color.org/icc_specs2.xalter (approved revisions, 2010-07-16)
|
|
13
13
|
# 6) Eef Vreeland private communication
|
|
14
14
|
# 7) https://color.org/specification/ICC.2-2019.pdf
|
|
15
|
+
# 8) https://www.color.org/specification/ICC.1-2022-05.pdf
|
|
15
16
|
#
|
|
16
17
|
# Notes: The ICC profile information is different: the format of each
|
|
17
18
|
# tag is embedded in the information instead of in the directory
|
|
@@ -25,7 +26,7 @@ use strict;
|
|
|
25
26
|
use vars qw($VERSION);
|
|
26
27
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
27
28
|
|
|
28
|
-
$VERSION = '1.
|
|
29
|
+
$VERSION = '1.41';
|
|
29
30
|
|
|
30
31
|
sub ProcessICC($$);
|
|
31
32
|
sub ProcessICC_Profile($$$);
|
|
@@ -367,6 +368,7 @@ my %manuSig = ( #6
|
|
|
367
368
|
Groups => { 2 => 'Time' },
|
|
368
369
|
PrintConv => '$self->ConvertDateTime($val)',
|
|
369
370
|
},
|
|
371
|
+
|
|
370
372
|
targ => {
|
|
371
373
|
Name => 'CharTarget',
|
|
372
374
|
ValueConv => '$val=~s/\0.*//; length $val > 128 ? \$val : $val',
|
|
@@ -493,6 +495,10 @@ my %manuSig = ( #6
|
|
|
493
495
|
},
|
|
494
496
|
},
|
|
495
497
|
ciis => 'ColorimetricIntentImageState', #5
|
|
498
|
+
cicp => { #8 (Coding-independent Code Points)
|
|
499
|
+
Name => 'ColorRepresentation',
|
|
500
|
+
SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::ColorRep' },
|
|
501
|
+
},
|
|
496
502
|
scoe => 'SceneColorimetryEstimates', #5
|
|
497
503
|
sape => 'SceneAppearanceEstimates', #5
|
|
498
504
|
fpce => 'FocalPlaneColorimetryEstimates', #5
|
|
@@ -628,6 +634,7 @@ my %manuSig = ( #6
|
|
|
628
634
|
s2cp => 'StandardToCustomPcc',
|
|
629
635
|
smap => 'SurfaceMap',
|
|
630
636
|
# smwp ? (seen in some v5 samples [was a mistake in sample production])
|
|
637
|
+
hdgm => { Name => 'HDGainMapInfo', Binary => 1 }, #PH
|
|
631
638
|
|
|
632
639
|
# the following entry represents the ICC profile header, and doesn't
|
|
633
640
|
# exist as a tag in the directory. It is only in this table to provide
|
|
@@ -747,6 +754,78 @@ my %manuSig = ( #6
|
|
|
747
754
|
},
|
|
748
755
|
);
|
|
749
756
|
|
|
757
|
+
# Coding-independent code points (cicp) definition
|
|
758
|
+
# (NOTE: conversions are the same as Image::ExifTool::QuickTime::ColorRep tags)
|
|
759
|
+
%Image::ExifTool::ICC_Profile::ColorRep = (
|
|
760
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
761
|
+
GROUPS => { 0 => 'ICC_Profile', 1 => 'ICC-cicp', 2 => 'Image' },
|
|
762
|
+
8 => {
|
|
763
|
+
Name => 'ColorPrimaries',
|
|
764
|
+
PrintConv => {
|
|
765
|
+
1 => 'BT.709',
|
|
766
|
+
2 => 'Unspecified',
|
|
767
|
+
4 => 'BT.470 System M (historical)',
|
|
768
|
+
5 => 'BT.470 System B, G (historical)',
|
|
769
|
+
6 => 'BT.601',
|
|
770
|
+
7 => 'SMPTE 240',
|
|
771
|
+
8 => 'Generic film (color filters using illuminant C)',
|
|
772
|
+
9 => 'BT.2020, BT.2100',
|
|
773
|
+
10 => 'SMPTE 428 (CIE 1931 XYZ)', #forum14766
|
|
774
|
+
11 => 'SMPTE RP 431-2',
|
|
775
|
+
12 => 'SMPTE EG 432-1',
|
|
776
|
+
22 => 'EBU Tech. 3213-E',
|
|
777
|
+
},
|
|
778
|
+
},
|
|
779
|
+
9 => {
|
|
780
|
+
Name => 'TransferCharacteristics',
|
|
781
|
+
PrintConv => {
|
|
782
|
+
0 => 'For future use (0)',
|
|
783
|
+
1 => 'BT.709',
|
|
784
|
+
2 => 'Unspecified',
|
|
785
|
+
3 => 'For future use (3)',
|
|
786
|
+
4 => 'BT.470 System M (historical)', # Gamma 2.2? (ref forum14960)
|
|
787
|
+
5 => 'BT.470 System B, G (historical)', # Gamma 2.8? (ref forum14960)
|
|
788
|
+
6 => 'BT.601',
|
|
789
|
+
7 => 'SMPTE 240 M',
|
|
790
|
+
8 => 'Linear',
|
|
791
|
+
9 => 'Logarithmic (100 : 1 range)',
|
|
792
|
+
10 => 'Logarithmic (100 * Sqrt(10) : 1 range)',
|
|
793
|
+
11 => 'IEC 61966-2-4',
|
|
794
|
+
12 => 'BT.1361',
|
|
795
|
+
13 => 'sRGB or sYCC',
|
|
796
|
+
14 => 'BT.2020 10-bit systems',
|
|
797
|
+
15 => 'BT.2020 12-bit systems',
|
|
798
|
+
16 => 'SMPTE ST 2084, ITU BT.2100 PQ',
|
|
799
|
+
17 => 'SMPTE ST 428',
|
|
800
|
+
18 => 'BT.2100 HLG, ARIB STD-B67',
|
|
801
|
+
},
|
|
802
|
+
},
|
|
803
|
+
10 => {
|
|
804
|
+
Name => 'MatrixCoefficients',
|
|
805
|
+
PrintConv => {
|
|
806
|
+
0 => 'Identity matrix',
|
|
807
|
+
1 => 'BT.709',
|
|
808
|
+
2 => 'Unspecified',
|
|
809
|
+
3 => 'For future use (3)',
|
|
810
|
+
4 => 'US FCC 73.628',
|
|
811
|
+
5 => 'BT.470 System B, G (historical)',
|
|
812
|
+
6 => 'BT.601',
|
|
813
|
+
7 => 'SMPTE 240 M',
|
|
814
|
+
8 => 'YCgCo',
|
|
815
|
+
9 => 'BT.2020 non-constant luminance, BT.2100 YCbCr',
|
|
816
|
+
10 => 'BT.2020 constant luminance',
|
|
817
|
+
11 => 'SMPTE ST 2085 YDzDx',
|
|
818
|
+
12 => 'Chromaticity-derived non-constant luminance',
|
|
819
|
+
13 => 'Chromaticity-derived constant luminance',
|
|
820
|
+
14 => 'BT.2100 ICtCp',
|
|
821
|
+
},
|
|
822
|
+
},
|
|
823
|
+
11 => {
|
|
824
|
+
Name => 'VideoFullRangeFlag',
|
|
825
|
+
PrintConv => { 0 => 'Limited', 1 => 'Full' },
|
|
826
|
+
},
|
|
827
|
+
);
|
|
828
|
+
|
|
750
829
|
# viewingConditionsType (view) definition
|
|
751
830
|
%Image::ExifTool::ICC_Profile::ViewingConditions = (
|
|
752
831
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
@@ -1357,7 +1436,7 @@ data created on one device into another device's native color space.
|
|
|
1357
1436
|
|
|
1358
1437
|
=head1 AUTHOR
|
|
1359
1438
|
|
|
1360
|
-
Copyright 2003-
|
|
1439
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1361
1440
|
|
|
1362
1441
|
This library is free software; you can redistribute it and/or modify it
|
|
1363
1442
|
under the same terms as Perl itself.
|
|
@@ -121,7 +121,7 @@ information from Windows ICO (icon) and CUR (cursor) files.
|
|
|
121
121
|
|
|
122
122
|
=head1 AUTHOR
|
|
123
123
|
|
|
124
|
-
Copyright 2003-
|
|
124
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
125
125
|
|
|
126
126
|
This library is free software; you can redistribute it and/or modify it
|
|
127
127
|
under the same terms as Perl itself.
|
|
@@ -18,7 +18,7 @@ use strict;
|
|
|
18
18
|
use vars qw($VERSION);
|
|
19
19
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
20
20
|
|
|
21
|
-
$VERSION = '1.
|
|
21
|
+
$VERSION = '1.63';
|
|
22
22
|
|
|
23
23
|
sub ProcessID3v2($$$);
|
|
24
24
|
sub ProcessPrivate($$$);
|
|
@@ -1169,7 +1169,7 @@ sub ProcessID3v2($$$)
|
|
|
1169
1169
|
}
|
|
1170
1170
|
$tagInfo = $et->GetTagInfo($otherTable, $id) if $otherTable;
|
|
1171
1171
|
if ($tagInfo) {
|
|
1172
|
-
$et->
|
|
1172
|
+
$et->Warn("Frame '${id}' is not valid for this ID3 version", 1);
|
|
1173
1173
|
} else {
|
|
1174
1174
|
next unless $verbose or $et->Options('Unknown');
|
|
1175
1175
|
$id =~ tr/-A-Za-z0-9_//dc;
|
|
@@ -1198,7 +1198,7 @@ sub ProcessID3v2($$$)
|
|
|
1198
1198
|
}
|
|
1199
1199
|
}
|
|
1200
1200
|
if ($flags{Encrypt}) {
|
|
1201
|
-
$et->
|
|
1201
|
+
$et->Warn('Encrypted frames currently not supported');
|
|
1202
1202
|
next;
|
|
1203
1203
|
}
|
|
1204
1204
|
# extract the value
|
|
@@ -1232,7 +1232,7 @@ sub ProcessID3v2($$$)
|
|
|
1232
1232
|
next;
|
|
1233
1233
|
}
|
|
1234
1234
|
} else {
|
|
1235
|
-
$et->
|
|
1235
|
+
$et->Warn('Install Compress::Zlib to decode compressed frames');
|
|
1236
1236
|
next;
|
|
1237
1237
|
}
|
|
1238
1238
|
}
|
|
@@ -1278,9 +1278,9 @@ sub ProcessID3v2($$$)
|
|
|
1278
1278
|
my $enc = unpack('C', $val);
|
|
1279
1279
|
my ($tag, $url);
|
|
1280
1280
|
if ($enc == 1 or $enc == 2) {
|
|
1281
|
-
($tag, $url) = ($
|
|
1281
|
+
($tag, $url) = ($val =~ /^(.(?:..)*?)\0\0(.*)/s);
|
|
1282
1282
|
} else {
|
|
1283
|
-
($tag, $url) = ($
|
|
1283
|
+
($tag, $url) = ($val =~ /^(..*?)\0(.*)/s);
|
|
1284
1284
|
}
|
|
1285
1285
|
unless (defined $tag and defined $url) {
|
|
1286
1286
|
$et->Warn("Invalid $id frame value");
|
|
@@ -1293,7 +1293,7 @@ sub ProcessID3v2($$$)
|
|
|
1293
1293
|
$tagInfo = $$tagTablePtr{$id} || AddTagToTable($tagTablePtr, $id, MakeTagName($tag));
|
|
1294
1294
|
}
|
|
1295
1295
|
$url =~ s/\0.*//s;
|
|
1296
|
-
$val = $url;
|
|
1296
|
+
$val = $et->Decode($url, 'Latin');
|
|
1297
1297
|
} elsif ($id =~ /^W/) {
|
|
1298
1298
|
$val =~ s/\0.*//s; # truncate at null
|
|
1299
1299
|
} elsif ($id =~ /^(COM|COMM|ULT|USLT)$/) {
|
|
@@ -1746,7 +1746,7 @@ other types of audio files.
|
|
|
1746
1746
|
|
|
1747
1747
|
=head1 AUTHOR
|
|
1748
1748
|
|
|
1749
|
-
Copyright 2003-
|
|
1749
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1750
1750
|
|
|
1751
1751
|
This library is free software; you can redistribute it and/or modify it
|
|
1752
1752
|
under the same terms as Perl itself.
|
|
@@ -15,7 +15,7 @@ use strict;
|
|
|
15
15
|
use vars qw($VERSION $AUTOLOAD %iptcCharset);
|
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
17
17
|
|
|
18
|
-
$VERSION = '1.
|
|
18
|
+
$VERSION = '1.59';
|
|
19
19
|
|
|
20
20
|
%iptcCharset = (
|
|
21
21
|
"\x1b%G" => 'UTF8',
|
|
@@ -1025,7 +1025,7 @@ sub TranslateCodedString($$$$)
|
|
|
1025
1025
|
$$valPtr = $et->Decode($$valPtr, $$xlatPtr);
|
|
1026
1026
|
} else {
|
|
1027
1027
|
# don't yet support reading ISO 2022 shifted character sets
|
|
1028
|
-
$et->
|
|
1028
|
+
$et->Warn('Some IPTC characters not converted (ISO 2022 shifting not supported)');
|
|
1029
1029
|
}
|
|
1030
1030
|
}
|
|
1031
1031
|
|
|
@@ -1057,7 +1057,7 @@ sub ProcessIPTC($$$)
|
|
|
1057
1057
|
my $verbose = $et->Options('Verbose');
|
|
1058
1058
|
my $validate = $et->Options('Validate');
|
|
1059
1059
|
my $success = 0;
|
|
1060
|
-
my ($lastRec, $recordPtr, $recordName);
|
|
1060
|
+
my ($lastRec, $recordPtr, $recordName, %seen);
|
|
1061
1061
|
|
|
1062
1062
|
$verbose and $dirInfo and $et->VerboseDir('IPTC', 0, $$dirInfo{DirLen});
|
|
1063
1063
|
|
|
@@ -1083,7 +1083,7 @@ sub ProcessIPTC($$$)
|
|
|
1083
1083
|
$et->FoundTag('CurrentIPTCDigest', $md5);
|
|
1084
1084
|
}
|
|
1085
1085
|
} else {
|
|
1086
|
-
if (($Image::ExifTool::MWG::strict or $
|
|
1086
|
+
if (($Image::ExifTool::MWG::strict or $validate) and
|
|
1087
1087
|
$$et{FILE_TYPE} =~ /^(JPEG|TIFF|PSD)$/)
|
|
1088
1088
|
{
|
|
1089
1089
|
if ($Image::ExifTool::MWG::strict) {
|
|
@@ -1164,7 +1164,7 @@ sub ProcessIPTC($$$)
|
|
|
1164
1164
|
}
|
|
1165
1165
|
my $tableInfo = $tagTablePtr->{$rec};
|
|
1166
1166
|
unless ($tableInfo) {
|
|
1167
|
-
$et->
|
|
1167
|
+
$et->Warn("Unrecognized IPTC record $rec (ignored)");
|
|
1168
1168
|
$pos += $len;
|
|
1169
1169
|
next; # ignore this entry
|
|
1170
1170
|
}
|
|
@@ -1186,8 +1186,11 @@ sub ProcessIPTC($$$)
|
|
|
1186
1186
|
# - no Name so name is generated automatically with decimal tag number
|
|
1187
1187
|
AddTagToTable($recordPtr, $tag, { Unknown => 1 });
|
|
1188
1188
|
}
|
|
1189
|
-
|
|
1190
1189
|
my $tagInfo = $et->GetTagInfo($recordPtr, $tag);
|
|
1190
|
+
if ($validate and not $$tagInfo{List} and not $$tagInfo{Unknown}) {
|
|
1191
|
+
$et->Warn("Multiple IPTC $$tagInfo{Name} tags") if $seen{$tagInfo};
|
|
1192
|
+
$seen{$tagInfo} = 1;
|
|
1193
|
+
}
|
|
1191
1194
|
my $format;
|
|
1192
1195
|
# (could use $$recordPtr{FORMAT} if no Format below, but don't do this to
|
|
1193
1196
|
# be backward compatible with improperly written PhotoMechanic tags)
|
|
@@ -1284,7 +1287,7 @@ image files.
|
|
|
1284
1287
|
|
|
1285
1288
|
=head1 AUTHOR
|
|
1286
1289
|
|
|
1287
|
-
Copyright 2003-
|
|
1290
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1288
1291
|
|
|
1289
1292
|
This library is free software; you can redistribute it and/or modify it
|
|
1290
1293
|
under the same terms as Perl itself.
|
|
@@ -184,7 +184,7 @@ information from ISO 9660 disk images.
|
|
|
184
184
|
|
|
185
185
|
=head1 AUTHOR
|
|
186
186
|
|
|
187
|
-
Copyright 2003-
|
|
187
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
188
188
|
|
|
189
189
|
This library is free software; you can redistribute it and/or modify it
|
|
190
190
|
under the same terms as Perl itself.
|
|
@@ -191,7 +191,7 @@ information (including artwork images) from iTunes Cover Flow files.
|
|
|
191
191
|
|
|
192
192
|
=head1 AUTHOR
|
|
193
193
|
|
|
194
|
-
Copyright 2003-
|
|
194
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
195
195
|
|
|
196
196
|
This library is free software; you can redistribute it and/or modify it
|
|
197
197
|
under the same terms as Perl itself.
|
|
@@ -12,7 +12,7 @@ require Exporter;
|
|
|
12
12
|
|
|
13
13
|
use vars qw($VERSION @ISA @EXPORT_OK);
|
|
14
14
|
|
|
15
|
-
$VERSION = '1.
|
|
15
|
+
$VERSION = '1.14';
|
|
16
16
|
@ISA = qw(Exporter);
|
|
17
17
|
@EXPORT_OK = qw(ReadCSV ReadJSON);
|
|
18
18
|
|
|
@@ -80,14 +80,15 @@ sub ReadCSV($$;$$)
|
|
|
80
80
|
}
|
|
81
81
|
if (@tags) {
|
|
82
82
|
# save values for each tag
|
|
83
|
+
$fileInfo{_ordered_keys_} = [ ];
|
|
83
84
|
for ($i=0; $i<@vals and $i<@tags; ++$i) {
|
|
84
85
|
# ignore empty entries unless missingValue is empty too
|
|
85
86
|
next unless length $vals[$i] or defined $missingValue and $missingValue eq '';
|
|
86
87
|
# delete tag (set value to undef) if value is same as missing tag
|
|
87
88
|
$fileInfo{$tags[$i]} =
|
|
88
89
|
(defined $missingValue and $vals[$i] eq $missingValue) ? undef : $vals[$i];
|
|
90
|
+
push @{$fileInfo{_ordered_keys_}}, $tags[$i];
|
|
89
91
|
}
|
|
90
|
-
$fileInfo{_ordered_keys_} = \@tags;
|
|
91
92
|
# figure out the file name to use
|
|
92
93
|
if ($fileInfo{SourceFile}) {
|
|
93
94
|
$$database{$fileInfo{SourceFile}} = \%fileInfo;
|
|
@@ -99,7 +100,7 @@ sub ReadCSV($$;$$)
|
|
|
99
100
|
# terminate at first blank tag name (eg. extra comma at end of line)
|
|
100
101
|
last unless length $_;
|
|
101
102
|
@tags or s/^\xef\xbb\xbf//; # remove UTF-8 BOM if it exists
|
|
102
|
-
/^[
|
|
103
|
+
/^([-_0-9A-Z]+:)*[-_0-9A-Z]+#?$/i or $err = "Invalid tag name '${_}'", last;
|
|
103
104
|
push(@tags, $_);
|
|
104
105
|
}
|
|
105
106
|
last if $err;
|
|
@@ -355,7 +356,7 @@ ARRAY reference in a special "_ordered_keys_" element of this hash.
|
|
|
355
356
|
|
|
356
357
|
=head1 AUTHOR
|
|
357
358
|
|
|
358
|
-
Copyright 2003-
|
|
359
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
359
360
|
|
|
360
361
|
This library is free software; you can redistribute it and/or modify it
|
|
361
362
|
under the same terms as Perl itself.
|
|
@@ -78,7 +78,7 @@ sub ProcessIND($$)
|
|
|
78
78
|
$err = 'InDesign files larger than 2 GB not supported (LargeFileSupport not set)';
|
|
79
79
|
goto DONE;
|
|
80
80
|
} elsif ($et->Options('LargeFileSupport') eq '2') {
|
|
81
|
-
$et->
|
|
81
|
+
$et->Warn('Processing large file (LargeFileSupport is 2)');
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
if ($outfile) {
|
|
@@ -277,7 +277,7 @@ them and the LargeFileSupport option is enabled.
|
|
|
277
277
|
|
|
278
278
|
=head1 AUTHOR
|
|
279
279
|
|
|
280
|
-
Copyright 2003-
|
|
280
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
281
281
|
|
|
282
282
|
This library is free software; you can redistribute it and/or modify it
|
|
283
283
|
under the same terms as Perl itself.
|
|
@@ -206,7 +206,7 @@ IJPEG SDK, used in cameras such as the P2 Pro.
|
|
|
206
206
|
|
|
207
207
|
=head1 AUTHOR
|
|
208
208
|
|
|
209
|
-
Copyright 2003-
|
|
209
|
+
Copyright 2003-2025, Marcos Del Sol Vives (marcos at orca.pet)
|
|
210
210
|
|
|
211
211
|
This library is free software; you can redistribute it and/or modify it
|
|
212
212
|
under the same terms as Perl itself.
|
|
@@ -11,7 +11,7 @@ use strict;
|
|
|
11
11
|
use vars qw($VERSION);
|
|
12
12
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
13
13
|
|
|
14
|
-
$VERSION = '1.
|
|
14
|
+
$VERSION = '1.39';
|
|
15
15
|
|
|
16
16
|
sub ProcessOcad($$$);
|
|
17
17
|
sub ProcessJPEG_HDR($$$);
|
|
@@ -87,6 +87,11 @@ sub ProcessJPEG_HDR($$$);
|
|
|
87
87
|
Name => 'InfiRayVersion',
|
|
88
88
|
Condition => '$$valPt =~ /^....IJPEG\0/s',
|
|
89
89
|
SubDirectory => { TagTable => 'Image::ExifTool::InfiRay::Version' },
|
|
90
|
+
}, {
|
|
91
|
+
Name => 'UniformResourceName',
|
|
92
|
+
Groups => { 1 => 'APP2' },
|
|
93
|
+
Condition => '$$valPt =~ /^urn:/',
|
|
94
|
+
Notes => 'used in Apple HDR images',
|
|
90
95
|
}, {
|
|
91
96
|
Name => 'PreviewImage',
|
|
92
97
|
Condition => '$$valPt =~ /^(|QVGA\0|BGTH)\xff\xd8\xff\xdb/',
|
|
@@ -228,6 +233,10 @@ sub ProcessJPEG_HDR($$$);
|
|
|
228
233
|
Name => 'InfiRayIsothermal',
|
|
229
234
|
Condition => '$$self{HasIJPEG}',
|
|
230
235
|
SubDirectory => { TagTable => 'Image::ExifTool::InfiRay::Isothermal' },
|
|
236
|
+
}, {
|
|
237
|
+
Name => 'SEAL',
|
|
238
|
+
Condition => '$$valPt =~ /^SEAL\0/',
|
|
239
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
|
231
240
|
}],
|
|
232
241
|
APP9 => [{
|
|
233
242
|
Name => 'MediaJukebox',
|
|
@@ -237,17 +246,31 @@ sub ProcessJPEG_HDR($$$);
|
|
|
237
246
|
Name => 'InfiRaySensor',
|
|
238
247
|
Condition => '$$self{HasIJPEG}',
|
|
239
248
|
SubDirectory => { TagTable => 'Image::ExifTool::InfiRay::Sensor' },
|
|
249
|
+
}, {
|
|
250
|
+
Name => 'SEAL',
|
|
251
|
+
Condition => '$$valPt =~ /^SEAL\0/',
|
|
252
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
|
240
253
|
}],
|
|
241
|
-
APP10 => {
|
|
254
|
+
APP10 => [{
|
|
242
255
|
Name => 'Comment',
|
|
243
256
|
Condition => '$$valPt =~ /^UNICODE\0/',
|
|
244
257
|
Notes => 'PhotoStudio Unicode comment',
|
|
245
|
-
|
|
258
|
+
}, {
|
|
259
|
+
Name => 'HDRGainCurve', #PH (NC)
|
|
260
|
+
Condition => '$$valPt =~ /^AROT\0\0.{4}/s',
|
|
261
|
+
Groups => { 1 => 'APP10', 2 => 'Image' },
|
|
262
|
+
ValueConv => q{
|
|
263
|
+
my $n = unpack('x6N', $val);
|
|
264
|
+
return '<truncated AROT data>' if length($val)-6 < $n * 4;
|
|
265
|
+
my $str = join ' ', unpack("x10V$n", $val);
|
|
266
|
+
return \$str;
|
|
267
|
+
},
|
|
268
|
+
}],
|
|
246
269
|
APP11 => [{
|
|
247
270
|
Name => 'JPEG-HDR',
|
|
248
271
|
Condition => '$$valPt =~ /^HDR_RI /',
|
|
249
272
|
SubDirectory => { TagTable => 'Image::ExifTool::JPEG::HDR' },
|
|
250
|
-
|
|
273
|
+
}, {
|
|
251
274
|
Name => 'JUMBF',
|
|
252
275
|
Condition => '$$valPt =~ /^JP/',
|
|
253
276
|
SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::Main' },
|
|
@@ -324,6 +347,10 @@ sub ProcessJPEG_HDR($$$);
|
|
|
324
347
|
Name => 'Samsung',
|
|
325
348
|
Condition => '$$valPt =~ /QDIOBS$/',
|
|
326
349
|
SubDirectory => { TagTable => 'Image::ExifTool::Samsung::Trailer' },
|
|
350
|
+
}, {
|
|
351
|
+
Name => 'Vivo',
|
|
352
|
+
Condition => '$$valPt =~ /^(streamdata|vivo\{")/',
|
|
353
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Vivo::Main' },
|
|
327
354
|
}, {
|
|
328
355
|
Name => 'EmbeddedVideo',
|
|
329
356
|
Notes => 'extracted only when ExtractEmbedded option is used',
|
|
@@ -768,7 +795,7 @@ segments are included in the Image::ExifTool module itself.
|
|
|
768
795
|
|
|
769
796
|
=head1 AUTHOR
|
|
770
797
|
|
|
771
|
-
Copyright 2003-
|
|
798
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
772
799
|
|
|
773
800
|
This library is free software; you can redistribute it and/or modify it
|
|
774
801
|
under the same terms as Perl itself.
|
|
@@ -2590,7 +2590,7 @@ estimated JPEG quality if requested.
|
|
|
2590
2590
|
|
|
2591
2591
|
=head1 AUTHOR
|
|
2592
2592
|
|
|
2593
|
-
Copyright 2003-
|
|
2593
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2594
2594
|
|
|
2595
2595
|
This library is free software; you can redistribute it and/or modify it
|
|
2596
2596
|
under the same terms as Perl itself.
|
|
@@ -183,7 +183,7 @@ information from JSON files.
|
|
|
183
183
|
|
|
184
184
|
=head1 AUTHOR
|
|
185
185
|
|
|
186
|
-
Copyright 2003-
|
|
186
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
187
187
|
|
|
188
188
|
This library is free software; you can redistribute it and/or modify it
|
|
189
189
|
under the same terms as Perl itself.
|
|
@@ -117,7 +117,7 @@ notes.
|
|
|
117
117
|
|
|
118
118
|
=head1 AUTHOR
|
|
119
119
|
|
|
120
|
-
Copyright 2003-
|
|
120
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
121
121
|
|
|
122
122
|
This library is free software; you can redistribute it and/or modify it
|
|
123
123
|
under the same terms as Perl itself.
|
|
@@ -16,7 +16,7 @@ use strict;
|
|
|
16
16
|
use vars qw($VERSION);
|
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
18
18
|
|
|
19
|
-
$VERSION = '1.
|
|
19
|
+
$VERSION = '1.43';
|
|
20
20
|
|
|
21
21
|
sub ProcessJpeg2000Box($$$);
|
|
22
22
|
sub ProcessJUMD($$$);
|
|
@@ -631,6 +631,7 @@ my %j2cMarker = (
|
|
|
631
631
|
%Image::ExifTool::Jpeg2000::ColorSpec = (
|
|
632
632
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
633
633
|
WRITE_PROC => \&Image::ExifTool::WriteBinaryData, # (we don't actually call this)
|
|
634
|
+
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
|
634
635
|
GROUPS => { 2 => 'Image' },
|
|
635
636
|
FORMAT => 'int8s',
|
|
636
637
|
WRITABLE => 1,
|
|
@@ -866,8 +867,8 @@ sub BrotliWarn($$;$)
|
|
|
866
867
|
{
|
|
867
868
|
my ($et, $type, $uncompress) = @_;
|
|
868
869
|
my ($enc, $mod) = $uncompress ? qw(decoding Uncompress) : qw(encoding Compress);
|
|
869
|
-
$et->
|
|
870
|
-
$et->
|
|
870
|
+
$et->Warn("Error $enc '${type}' brob box");
|
|
871
|
+
$et->Warn("Try updating to IO::${mod}::Brotli 0.004 or later");
|
|
871
872
|
}
|
|
872
873
|
|
|
873
874
|
#------------------------------------------------------------------------------
|
|
@@ -933,7 +934,7 @@ sub CreateNewBoxes($$)
|
|
|
933
934
|
$tag = 'brob';
|
|
934
935
|
}
|
|
935
936
|
} else {
|
|
936
|
-
$et->
|
|
937
|
+
$et->Warn('Install IO::Compress::Brotli to create Brotli-compressed metadata');
|
|
937
938
|
}
|
|
938
939
|
}
|
|
939
940
|
my $boxhdr = pack('N', length($newdir) + length($pad) + 8) . $tag;
|
|
@@ -1285,7 +1286,7 @@ sub ProcessJpeg2000Box($$$)
|
|
|
1285
1286
|
++$$et{CHANGED};
|
|
1286
1287
|
}
|
|
1287
1288
|
} else {
|
|
1288
|
-
$et->
|
|
1289
|
+
$et->Warn('Install IO::Compress::Brotli to write Brotli-compressed metadata');
|
|
1289
1290
|
}
|
|
1290
1291
|
} elsif (not $compress and $boxID eq 'brob') {
|
|
1291
1292
|
# (in this case, ProcessBrotli has returned uncompressed data,
|
|
@@ -1338,7 +1339,7 @@ sub ProcessJpeg2000Box($$$)
|
|
|
1338
1339
|
if (defined $val) {
|
|
1339
1340
|
my $key = $et->FoundTag($tagInfo, $val);
|
|
1340
1341
|
# save Rational value
|
|
1341
|
-
$$et{
|
|
1342
|
+
$$et{TAG_EXTRA}{$key}{Rational} = $rational if defined $rational and defined $key;
|
|
1342
1343
|
}
|
|
1343
1344
|
} elsif ($outfile) {
|
|
1344
1345
|
my $boxhdr = pack('N', $boxLen + 8) . $boxID;
|
|
@@ -1410,7 +1411,7 @@ sub ProcessBrotli($$$)
|
|
|
1410
1411
|
}
|
|
1411
1412
|
if (eval { require IO::Uncompress::Brotli }) {
|
|
1412
1413
|
if ($isWriting and not eval { require IO::Compress::Brotli }) {
|
|
1413
|
-
$et->
|
|
1414
|
+
$et->Warn('Install IO::Compress::Brotli to write Brotli-compressed metadata');
|
|
1414
1415
|
return undef;
|
|
1415
1416
|
}
|
|
1416
1417
|
my $compress = $et->Options('Compress');
|
|
@@ -1455,7 +1456,7 @@ sub ProcessBrotli($$$)
|
|
|
1455
1456
|
return $type . $dat;
|
|
1456
1457
|
}
|
|
1457
1458
|
} else {
|
|
1458
|
-
$et->
|
|
1459
|
+
$et->Warn('Install IO::Uncompress::Brotli to decode Brotli-compressed metadata');
|
|
1459
1460
|
return undef if $isWriting;
|
|
1460
1461
|
}
|
|
1461
1462
|
return 1;
|
|
@@ -1670,7 +1671,7 @@ files.
|
|
|
1670
1671
|
|
|
1671
1672
|
=head1 AUTHOR
|
|
1672
1673
|
|
|
1673
|
-
Copyright 2003-
|
|
1674
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1674
1675
|
|
|
1675
1676
|
This library is free software; you can redistribute it and/or modify it
|
|
1676
1677
|
under the same terms as Perl itself.
|
|
@@ -3252,7 +3252,7 @@ interpret Kodak maker notes EXIF meta information.
|
|
|
3252
3252
|
|
|
3253
3253
|
=head1 AUTHOR
|
|
3254
3254
|
|
|
3255
|
-
Copyright 2003-
|
|
3255
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
3256
3256
|
|
|
3257
3257
|
This library is free software; you can redistribute it and/or modify it
|
|
3258
3258
|
under the same terms as Perl itself.
|
|
@@ -152,7 +152,7 @@ meta information from Kyocera Contax N Digital RAW images.
|
|
|
152
152
|
|
|
153
153
|
=head1 AUTHOR
|
|
154
154
|
|
|
155
|
-
Copyright 2003-
|
|
155
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
156
156
|
|
|
157
157
|
This library is free software; you can redistribute it and/or modify it
|
|
158
158
|
under the same terms as Perl itself.
|
|
@@ -147,7 +147,7 @@ metadata from Leica Image File (LIF) images.
|
|
|
147
147
|
|
|
148
148
|
=head1 AUTHOR
|
|
149
149
|
|
|
150
|
-
Copyright 2003-
|
|
150
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
151
151
|
|
|
152
152
|
This library is free software; you can redistribute it and/or modify it
|
|
153
153
|
under the same terms as Perl itself.
|
|
@@ -650,7 +650,7 @@ sub ProcessLNK($$)
|
|
|
650
650
|
my $mask = 0x04 << $i;
|
|
651
651
|
next unless $flags & $mask;
|
|
652
652
|
$raf->Read($buff, 2) or return 1;
|
|
653
|
-
$len = unpack('v', $buff);
|
|
653
|
+
$len = unpack('v', $buff) or next;
|
|
654
654
|
$len *= 2 if $flags & 0x80; # characters are 2 bytes if Unicode flag is set
|
|
655
655
|
$raf->Read($buff, $len) or return 1;
|
|
656
656
|
my $val;
|
|
@@ -703,7 +703,7 @@ information MS Shell Link (Windows shortcut) files.
|
|
|
703
703
|
|
|
704
704
|
=head1 AUTHOR
|
|
705
705
|
|
|
706
|
-
Copyright 2003-
|
|
706
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
707
707
|
|
|
708
708
|
This library is free software; you can redistribute it and/or modify it
|
|
709
709
|
under the same terms as Perl itself.
|
|
@@ -1570,7 +1570,7 @@ and values.
|
|
|
1570
1570
|
|
|
1571
1571
|
=head1 AUTHOR
|
|
1572
1572
|
|
|
1573
|
-
Copyright 2003-
|
|
1573
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1574
1574
|
|
|
1575
1575
|
This library is free software; you can redistribute it and/or modify it
|
|
1576
1576
|
under the same terms as Perl itself.
|
|
@@ -8702,7 +8702,7 @@ and values.
|
|
|
8702
8702
|
|
|
8703
8703
|
=head1 AUTHOR
|
|
8704
8704
|
|
|
8705
|
-
Copyright 2003-
|
|
8705
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
8706
8706
|
|
|
8707
8707
|
This library is free software; you can redistribute it and/or modify it
|
|
8708
8708
|
under the same terms as Perl itself.
|
|
@@ -989,7 +989,7 @@ and values.
|
|
|
989
989
|
|
|
990
990
|
=head1 AUTHOR
|
|
991
991
|
|
|
992
|
-
Copyright 2003-
|
|
992
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
993
993
|
|
|
994
994
|
This library is free software; you can redistribute it and/or modify it
|
|
995
995
|
under the same terms as Perl itself.
|
|
@@ -1032,7 +1032,7 @@ and values.
|
|
|
1032
1032
|
|
|
1033
1033
|
=head1 AUTHOR
|
|
1034
1034
|
|
|
1035
|
-
Copyright 2003-
|
|
1035
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
1036
1036
|
|
|
1037
1037
|
This library is free software; you can redistribute it and/or modify it
|
|
1038
1038
|
under the same terms as Perl itself.
|