exiftool-vendored.exe 13.0.0 → 13.17.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/exiftool.exe +0 -0
- package/bin/exiftool_files/exiftool.pl +169 -65
- package/bin/exiftool_files/lib/File/RandomAccess.pm +1 -1
- package/bin/exiftool_files/lib/File/RandomAccess.pod +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/AAC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +11 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +46 -26
- package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +5 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +68 -28
- package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +196 -30
- package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +138 -33
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +29 -16
- package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +17 -21
- package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +144 -93
- package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +34 -30
- package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +19 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +46 -12
- package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +120 -8
- package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +81 -2
- package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +8 -8
- package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +10 -7
- package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +5 -4
- package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +38 -5
- package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +10 -9
- package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/sk.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/LigoGPS.pm +409 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +57 -18
- package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +15 -6
- package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +3 -2
- package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +22 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +457 -103
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +8 -8
- package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +49 -18
- package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +20 -8
- package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +12 -3
- package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +27 -3
- package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +65 -4
- package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Protobuf.pm +270 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +327 -88
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +199 -195
- package/bin/exiftool_files/lib/Image/ExifTool/README +12 -2
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +21 -6
- package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +6 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +6 -5
- package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +6 -5
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +7028 -6968
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +12079 -11630
- package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +4 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Trailer.pm +318 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +6 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +170 -79
- package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +17 -6
- package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +3 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +89 -96
- package/bin/exiftool_files/lib/Image/ExifTool/XISF.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +28 -13
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +106 -3
- package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +2 -3
- package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool.pm +467 -228
- package/bin/exiftool_files/lib/Image/ExifTool.pod +118 -72
- package/bin/exiftool_files/windows_exiftool.txt +96 -51
- package/package.json +8 -8
|
@@ -306,7 +306,7 @@ APP12 meta information.
|
|
|
306
306
|
|
|
307
307
|
=head1 AUTHOR
|
|
308
308
|
|
|
309
|
-
Copyright 2003-
|
|
309
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
310
310
|
|
|
311
311
|
This library is free software; you can redistribute it and/or modify it
|
|
312
312
|
under the same terms as Perl itself.
|
|
@@ -781,7 +781,7 @@ sub ProcessASF($$;$)
|
|
|
781
781
|
$err = 'Invalid ASF object size';
|
|
782
782
|
} elsif ($et->Options('LargeFileSupport')) {
|
|
783
783
|
if ($et->Options('LargeFileSupport') eq '2') {
|
|
784
|
-
$et->
|
|
784
|
+
$et->Warn('Skipping large ASF object (LargeFileSupport is 2)');
|
|
785
785
|
}
|
|
786
786
|
if ($raf->Seek($size, 1)) {
|
|
787
787
|
$et->VPrint(0, " Skipped large ASF object ($size bytes)\n");
|
|
@@ -879,7 +879,7 @@ Windows Media Audio (WMA) and Windows Media Video (WMV) files.
|
|
|
879
879
|
|
|
880
880
|
=head1 AUTHOR
|
|
881
881
|
|
|
882
|
-
Copyright 2003-
|
|
882
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
883
883
|
|
|
884
884
|
This library is free software; you can redistribute it and/or modify it
|
|
885
885
|
under the same terms as Perl itself.
|
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
|
16
16
|
use Image::ExifTool::Exif;
|
|
17
17
|
use Image::ExifTool::PLIST;
|
|
18
18
|
|
|
19
|
-
$VERSION = '1.
|
|
19
|
+
$VERSION = '1.14';
|
|
20
20
|
|
|
21
21
|
sub ConvertPLIST($$);
|
|
22
22
|
|
|
@@ -99,7 +99,7 @@ sub ConvertPLIST($$);
|
|
|
99
99
|
my @a = split ' ', $val;
|
|
100
100
|
sprintf('%.2f - %.2f m', $a[0] <= $a[1] ? @a : reverse @a);
|
|
101
101
|
},
|
|
102
|
-
PrintConvInv => '$val =~ s/ -
|
|
102
|
+
PrintConvInv => '$val =~ s/ - / /; $val =~ s/ ?m$//; $val',
|
|
103
103
|
},
|
|
104
104
|
# 0x000d - int32s: 0,1,6,20,24,32,40 (SphereHealthAverageCurrent, ref 2)
|
|
105
105
|
# 0x000e - int32s: 0,1,4,12 (Orientation? 0=landscape? 4=portrait? ref 1) (SphereMotionDataStatus, ref 2)
|
|
@@ -291,12 +291,12 @@ sub ConvertPLIST($$);
|
|
|
291
291
|
# 0x0047 - (LeaderFollowerAutoFocusLeaderDepth, ref 2)
|
|
292
292
|
# 0x0048 - (LeaderFollowerAutoFocusLeaderFocusMethod, ref 2)
|
|
293
293
|
# 0x0049 - (LeaderFollowerAutoFocusLeaderConfidence, ref 2)
|
|
294
|
-
#
|
|
294
|
+
# 0x004a - (LeaderFollowerAutoFocusLeaderROIType, ref 2)
|
|
295
295
|
# 0x004a - 2=back normal, 4=back wide angle, 5=front (ref PH)
|
|
296
|
-
#
|
|
297
|
-
#
|
|
298
|
-
#
|
|
299
|
-
#
|
|
296
|
+
# 0x004b - (ZeroShutterLagFailureReason, ref 2)
|
|
297
|
+
# 0x004c - (TimeOfFlightAssistedAutoFocusEstimatorMSPMeasuredDepth, ref 2)
|
|
298
|
+
# 0x004d - (TimeOfFlightAssistedAutoFocusEstimatorMSPSensorConfidence, ref 2)
|
|
299
|
+
# 0x004e - (Camera, ref 2)
|
|
300
300
|
0x004e => {
|
|
301
301
|
Name => 'Apple_0x004e',
|
|
302
302
|
Unknown => 1,
|
|
@@ -358,7 +358,8 @@ Image::ExifTool::AddCompositeTags('Image::ExifTool::Apple');
|
|
|
358
358
|
sub ConvertPLIST($$)
|
|
359
359
|
{
|
|
360
360
|
my ($val, $et) = @_;
|
|
361
|
-
my $dirInfo = { DataPt => \$val };
|
|
361
|
+
my $dirInfo = { DataPt => \$val, NoVerboseDir => 1 };
|
|
362
|
+
my $oldOrder = $et->GetByteOrder();
|
|
362
363
|
require Image::ExifTool::PLIST;
|
|
363
364
|
Image::ExifTool::PLIST::ProcessBinaryPLIST($et, $dirInfo);
|
|
364
365
|
$val = $$dirInfo{Value};
|
|
@@ -366,6 +367,7 @@ sub ConvertPLIST($$)
|
|
|
366
367
|
require 'Image/ExifTool/XMPStruct.pl';
|
|
367
368
|
$val = Image::ExifTool::XMP::SerializeStruct($et, $val);
|
|
368
369
|
}
|
|
370
|
+
$et->SetByteOrder($oldOrder);
|
|
369
371
|
return $val;
|
|
370
372
|
}
|
|
371
373
|
|
|
@@ -388,7 +390,7 @@ Apple maker notes in EXIF information.
|
|
|
388
390
|
|
|
389
391
|
=head1 AUTHOR
|
|
390
392
|
|
|
391
|
-
Copyright 2003-
|
|
393
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
392
394
|
|
|
393
395
|
This library is free software; you can redistribute it and/or modify it
|
|
394
396
|
under the same terms as Perl itself.
|
|
@@ -291,7 +291,7 @@ information from Audible audio books.
|
|
|
291
291
|
|
|
292
292
|
=head1 AUTHOR
|
|
293
293
|
|
|
294
|
-
Copyright 2003-
|
|
294
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
295
295
|
|
|
296
296
|
This library is free software; you can redistribute it and/or modify it
|
|
297
297
|
under the same terms as Perl itself.
|
|
@@ -335,7 +335,7 @@ This module contains definitions required by Image::ExifTool to read BMP
|
|
|
335
335
|
|
|
336
336
|
=head1 AUTHOR
|
|
337
337
|
|
|
338
|
-
Copyright 2003-
|
|
338
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
339
339
|
|
|
340
340
|
This library is free software; you can redistribute it and/or modify it
|
|
341
341
|
under the same terms as Perl itself.
|
|
@@ -231,7 +231,7 @@ This module contains definitions required by Image::ExifTool to read BPG
|
|
|
231
231
|
|
|
232
232
|
=head1 AUTHOR
|
|
233
233
|
|
|
234
|
-
Copyright 2003-
|
|
234
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
235
235
|
|
|
236
236
|
This library is free software; you can redistribute it and/or modify it
|
|
237
237
|
under the same terms as Perl itself.
|
|
@@ -445,7 +445,7 @@ compression ability).
|
|
|
445
445
|
|
|
446
446
|
=head1 AUTHOR
|
|
447
447
|
|
|
448
|
-
Copyright 2003-
|
|
448
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
449
449
|
Copyright 2002, Leon Bottou and Yann Le Cun
|
|
450
450
|
Copyright 2001, AT&T
|
|
451
451
|
Copyright 1999-2001, LizardTech Inc.
|
|
@@ -282,7 +282,7 @@ information in BigTIFF images.
|
|
|
282
282
|
|
|
283
283
|
=head1 AUTHOR
|
|
284
284
|
|
|
285
|
-
Copyright 2003-
|
|
285
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
286
286
|
|
|
287
287
|
This library is free software; you can redistribute it and/or modify it
|
|
288
288
|
under the same terms as Perl itself.
|
|
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
|
|
|
35
35
|
use Image::ExifTool::Validate;
|
|
36
36
|
use Image::ExifTool::MacOS;
|
|
37
37
|
|
|
38
|
-
$VERSION = '3.
|
|
38
|
+
$VERSION = '3.62';
|
|
39
39
|
@ISA = qw(Exporter);
|
|
40
40
|
|
|
41
41
|
sub NumbersFirst($$);
|
|
@@ -74,15 +74,21 @@ my %tweakOrder = (
|
|
|
74
74
|
DJI => 'Casio',
|
|
75
75
|
FLIR => 'DJI',
|
|
76
76
|
FujiFilm => 'FLIR',
|
|
77
|
+
GoPro => 'GE',
|
|
77
78
|
Kodak => 'JVC',
|
|
78
79
|
Leaf => 'Kodak',
|
|
79
|
-
|
|
80
|
+
Lytro => 'Leaf',
|
|
81
|
+
Minolta => 'Lytro',
|
|
80
82
|
Motorola => 'Minolta',
|
|
81
83
|
Nikon => 'Motorola',
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
NikonCapture => 'Nikon',
|
|
85
|
+
NikonCustom => 'NikonCapture',
|
|
86
|
+
NikonSettings => 'NikonCustom',
|
|
87
|
+
Nintendo => 'NikonSettings',
|
|
88
|
+
Panasonic => 'Olympus',
|
|
85
89
|
Pentax => 'Panasonic',
|
|
90
|
+
Ricoh => 'Reconyx',
|
|
91
|
+
Samsung => 'Ricoh',
|
|
86
92
|
SonyIDC => 'Sony',
|
|
87
93
|
Unknown => 'SonyIDC',
|
|
88
94
|
DNG => 'Unknown',
|
|
@@ -91,8 +97,9 @@ my %tweakOrder = (
|
|
|
91
97
|
ID3 => 'PostScript',
|
|
92
98
|
MinoltaRaw => 'KyoceraRaw',
|
|
93
99
|
KyoceraRaw => 'CanonRaw',
|
|
100
|
+
MinoltaRaw => 'KyoceraRaw',
|
|
101
|
+
PanasonicRaw => 'MinoltaRaw',
|
|
94
102
|
SigmaRaw => 'PanasonicRaw',
|
|
95
|
-
Lytro => 'SigmaRaw',
|
|
96
103
|
PhotoMechanic => 'FotoStation',
|
|
97
104
|
Microsoft => 'PhotoMechanic',
|
|
98
105
|
GIMP => 'Microsoft',
|
|
@@ -100,6 +107,8 @@ my %tweakOrder = (
|
|
|
100
107
|
MWG => 'Shortcuts',
|
|
101
108
|
'FujiFilm::RAF' => 'FujiFilm::RAFHeader',
|
|
102
109
|
'FujiFilm::RAFData' => 'FujiFilm::RAF',
|
|
110
|
+
'QuickTime::AudioKeys' => 'QuickTime::Keys',
|
|
111
|
+
'QuickTime::VideoKeys' => 'QuickTime::AudioKeys',
|
|
103
112
|
);
|
|
104
113
|
|
|
105
114
|
# list of all recognized Format strings
|
|
@@ -437,15 +446,16 @@ appropriate table in the config file (see
|
|
|
437
446
|
L<example.config|../config.html#PREF> in the full distribution for an
|
|
438
447
|
example). Note that some tags with the same name but different ID's may
|
|
439
448
|
exist in the same location, but the family 7 group names may be used to
|
|
440
|
-
differentiate these.
|
|
441
|
-
QuickTime-based files; it extracts other track-specific and timed metadata,
|
|
442
|
-
but can not yet edit tags in these locations (with the exception of
|
|
443
|
-
track-level date/time tags).
|
|
449
|
+
differentiate these.
|
|
444
450
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
451
|
+
ExifTool currently writes
|
|
452
|
+
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
|
453
|
+
L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> only as
|
|
454
|
+
top-level metadata, but select Keys tags are may be written to the audio or
|
|
455
|
+
video track. See the
|
|
456
|
+
L<AudioKeys|Image::ExifTool::TagNames/QuickTime AudioKeys Tags> and
|
|
457
|
+
L<VideoKeys|Image::ExifTool::TagNames/QuickTime VideoKeys Tags> tags for
|
|
458
|
+
more information.
|
|
449
459
|
|
|
450
460
|
Alternate language tags may be accessed for
|
|
451
461
|
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
|
@@ -457,8 +467,8 @@ L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> tags support a
|
|
|
457
467
|
language code, but without a country code. If no language code is specified
|
|
458
468
|
when writing, the default language is written and alternate languages for
|
|
459
469
|
the tag are deleted. Use the "und" language code to write the default
|
|
460
|
-
language without deleting alternate languages. Note that
|
|
461
|
-
as
|
|
470
|
+
language without deleting alternate languages. Note that when reading,
|
|
471
|
+
"eng" is also treated as the default language if there is no country code.
|
|
462
472
|
|
|
463
473
|
According to the specification, integer-format QuickTime date/time tags
|
|
464
474
|
should be stored as UTC. Unfortunately, digital cameras often store local
|
|
@@ -688,7 +698,7 @@ L<Image::ExifTool::BuildTagLookup|Image::ExifTool::BuildTagLookup>.
|
|
|
688
698
|
|
|
689
699
|
~head1 AUTHOR
|
|
690
700
|
|
|
691
|
-
Copyright 2003-
|
|
701
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
692
702
|
|
|
693
703
|
This library is free software; you can redistribute it and/or modify it
|
|
694
704
|
under the same terms as Perl itself.
|
|
@@ -866,10 +876,16 @@ sub new
|
|
|
866
876
|
}
|
|
867
877
|
$noID = 1 if $isXMP or $short =~ /^(Shortcuts|ASF.*)$/ or $$vars{NO_ID};
|
|
868
878
|
$hexID = $$vars{HEX_ID};
|
|
879
|
+
if ($$table{WRITE_PROC} and $$table{WRITE_PROC} eq \&Image::ExifTool::WriteBinaryData
|
|
880
|
+
and not $$table{CHECK_PROC})
|
|
881
|
+
{
|
|
882
|
+
warn("Binary table $tableName doesn't have a CHECK_PROC\n");
|
|
883
|
+
}
|
|
869
884
|
my $processBinaryData = ($$table{PROCESS_PROC} and (
|
|
870
885
|
$$table{PROCESS_PROC} eq \&Image::ExifTool::ProcessBinaryData or
|
|
871
886
|
$$table{PROCESS_PROC} eq \&Image::ExifTool::Nikon::ProcessNikonEncrypted or
|
|
872
|
-
$$table{PROCESS_PROC} eq \&Image::ExifTool::Sony::ProcessEnciphered)
|
|
887
|
+
$$table{PROCESS_PROC} eq \&Image::ExifTool::Sony::ProcessEnciphered) or
|
|
888
|
+
$$table{VARS} and $$table{VARS}{IS_BINARY});
|
|
873
889
|
if ($$vars{ID_LABEL} or $processBinaryData) {
|
|
874
890
|
my $s = $$table{FORMAT} ? Image::ExifTool::FormatSize($$table{FORMAT}) || 1 : 1;
|
|
875
891
|
$binaryTable = 1;
|
|
@@ -1003,6 +1019,9 @@ TagID: foreach $tagID (@keys) {
|
|
|
1003
1019
|
if ($writable and not ($$table{WRITE_PROC} or $tableName =~ /Shortcuts/ or $writable eq '2')) {
|
|
1004
1020
|
undef $writable;
|
|
1005
1021
|
}
|
|
1022
|
+
#if ($writable and $$tagInfo{Unknown} and $$table{GROUPS}{0} ne 'MakerNotes') {
|
|
1023
|
+
# warn "Warning: Writable Unknown tag - $short $name\n",
|
|
1024
|
+
#}
|
|
1006
1025
|
# validate some characteristics of obvious date/time tags
|
|
1007
1026
|
my @g = $et->GetGroup($tagInfo);
|
|
1008
1027
|
if ($$tagInfo{List} and $g[2] eq 'Time' and $writable and not $$tagInfo{Protected} and
|
|
@@ -1248,7 +1267,7 @@ TagID: foreach $tagID (@keys) {
|
|
|
1248
1267
|
}
|
|
1249
1268
|
} elsif ($$tagInfo{PrintString} or not /^[+-]?(?=\d|\.\d)\d*(\.\d*)?$/) {
|
|
1250
1269
|
# translate unprintable values
|
|
1251
|
-
if ($index =~ s/([\x00-\x1f\
|
|
1270
|
+
if ($index =~ s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%.2x",ord $1)/eg) {
|
|
1252
1271
|
$index = qq{"$index"};
|
|
1253
1272
|
} else {
|
|
1254
1273
|
$index = qq{'${index}'};
|
|
@@ -1331,7 +1350,7 @@ TagID: foreach $tagID (@keys) {
|
|
|
1331
1350
|
$writable = 'yes' if $tw and $writable eq '1' or $writable eq '2';
|
|
1332
1351
|
$writable = '-' . ($tw ? $writable : '');
|
|
1333
1352
|
$writable .= '!' if $tw and ($$tagInfo{Protected} || 0) & 0x01;
|
|
1334
|
-
$writable .= '+' if $$tagInfo{List};
|
|
1353
|
+
$writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
|
|
1335
1354
|
if (defined $$tagInfo{Permanent}) {
|
|
1336
1355
|
$writable .= '^' unless $$tagInfo{Permanent};
|
|
1337
1356
|
} elsif (defined $$table{PERMANENT}) {
|
|
@@ -1389,7 +1408,7 @@ TagID: foreach $tagID (@keys) {
|
|
|
1389
1408
|
}
|
|
1390
1409
|
$writable = "=struct" if $struct;
|
|
1391
1410
|
$writable .= '_' if defined $$tagInfo{Flat};
|
|
1392
|
-
$writable .= '+' if $$tagInfo{List};
|
|
1411
|
+
$writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
|
|
1393
1412
|
$writable .= ':' if $$tagInfo{Mandatory};
|
|
1394
1413
|
if (defined $$tagInfo{Permanent}) {
|
|
1395
1414
|
$writable .= '^' unless $$tagInfo{Permanent};
|
|
@@ -1557,7 +1576,7 @@ TagID: foreach $tagID (@keys) {
|
|
|
1557
1576
|
$writable = 'string';
|
|
1558
1577
|
}
|
|
1559
1578
|
}
|
|
1560
|
-
$writable .= '+' if $$tagInfo{List};
|
|
1579
|
+
$writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
|
|
1561
1580
|
push @vals, "($$tagInfo{Notes})" if $$tagInfo{Notes};
|
|
1562
1581
|
# handle PrintConv lookups in Structure elements
|
|
1563
1582
|
my $printConv = $$tagInfo{PrintConv};
|
|
@@ -1774,9 +1793,10 @@ sub NumbersFirst($$)
|
|
|
1774
1793
|
$rtnVal = $numbersFirst;
|
|
1775
1794
|
} else {
|
|
1776
1795
|
my ($a2, $b2) = ($a, $b);
|
|
1777
|
-
# expand numbers to 3 digits (with restrictions to avoid messing up
|
|
1778
|
-
|
|
1779
|
-
$
|
|
1796
|
+
# expand numbers to 3 digits (with restrictions to avoid messing up
|
|
1797
|
+
# ascii-hex tags -- Nikon LensID's are 23 characters long)
|
|
1798
|
+
$a2 =~ s/(\d+)/sprintf("%.3d",$1)/eg if $a2 =~ /^(APP|DMC-\w+ |dvtm_.*)?[.0-9 ]*$/ and length($a2)<23;
|
|
1799
|
+
$b2 =~ s/(\d+)/sprintf("%.3d",$1)/eg if $b2 =~ /^(APP|DMC-\w+ |dvtm_.*)?[.0-9 ]*$/ and length($b2)<23;
|
|
1780
1800
|
$caseInsensitive and $rtnVal = (lc($a2) cmp lc($b2));
|
|
1781
1801
|
$rtnVal or $rtnVal = ($a2 cmp $b2);
|
|
1782
1802
|
}
|
|
@@ -2802,7 +2822,7 @@ Returned list of writable pseudo tags.
|
|
|
2802
2822
|
|
|
2803
2823
|
=head1 AUTHOR
|
|
2804
2824
|
|
|
2805
|
-
Copyright 2003-
|
|
2825
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2806
2826
|
|
|
2807
2827
|
This library is free software; you can redistribute it and/or modify it
|
|
2808
2828
|
under the same terms as Perl itself.
|
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
17
17
|
use Image::ExifTool::JSON;
|
|
18
18
|
|
|
19
|
-
$VERSION = '1.
|
|
19
|
+
$VERSION = '1.03';
|
|
20
20
|
|
|
21
21
|
sub ProcessCBOR($$$);
|
|
22
22
|
sub ReadCBORValue($$$$);
|
|
@@ -160,6 +160,7 @@ sub ReadCBORValue($$$$)
|
|
|
160
160
|
Start => $dumpStart,
|
|
161
161
|
DataPos => $$et{cbor_datapos},
|
|
162
162
|
Prefix => $$et{INDENT},
|
|
163
|
+
Out => $et->Options('TextOut'),
|
|
163
164
|
) if $verbose > 2;
|
|
164
165
|
while ($num) {
|
|
165
166
|
$$et{cbor_pre} = "$i) ";
|
|
@@ -200,6 +201,7 @@ sub ReadCBORValue($$$$)
|
|
|
200
201
|
Start => $dumpStart,
|
|
201
202
|
DataPos => $$et{cbor_datapos},
|
|
202
203
|
Prefix => $$et{INDENT} . ' ',
|
|
204
|
+
Out => $et->Options('TextOut'),
|
|
203
205
|
) if $verbose > 2;
|
|
204
206
|
}
|
|
205
207
|
# read next value (note: in the case of multiple tags,
|
|
@@ -259,6 +261,7 @@ sub ReadCBORValue($$$$)
|
|
|
259
261
|
DataPos => $$et{cbor_datapos},
|
|
260
262
|
Prefix => $$et{INDENT} . ' ',
|
|
261
263
|
MaxLen => $verbose < 5 ? ($verbose == 3 ? 96 : 2048) : undef,
|
|
264
|
+
Out => $et->Options('TextOut'),
|
|
262
265
|
) if $verbose > 2;
|
|
263
266
|
return($val, $err, $pos);
|
|
264
267
|
}
|
|
@@ -321,7 +324,7 @@ specification.
|
|
|
321
324
|
|
|
322
325
|
=head1 AUTHOR
|
|
323
326
|
|
|
324
|
-
Copyright 2003-
|
|
327
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
325
328
|
|
|
326
329
|
This library is free software; you can redistribute it and/or modify it
|
|
327
330
|
under the same terms as Perl itself.
|
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '4.
|
|
91
|
+
$VERSION = '4.89';
|
|
92
92
|
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
|
@@ -527,7 +527,8 @@ $VERSION = '4.82';
|
|
|
527
527
|
748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens', #JR (1.4x Mk III)
|
|
528
528
|
748.1 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 1.4x', #IB
|
|
529
529
|
748.2 => 'Tamron 70-210mm f/4 Di VC USD (A034) + 2x', #IB
|
|
530
|
-
749 => '
|
|
530
|
+
749 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 2x or Tamron Lens', #PH
|
|
531
|
+
749.1 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x', #IB
|
|
531
532
|
750 => 'Canon EF 35mm f/1.4L II USM or Tamron Lens', #42
|
|
532
533
|
750.1 => 'Tamron SP 85mm f/1.8 Di VC USD (F016)', #Exiv2#1072
|
|
533
534
|
750.2 => 'Tamron SP 45mm f/1.8 Di VC USD (F013)', #PH
|
|
@@ -631,6 +632,12 @@ $VERSION = '4.82';
|
|
|
631
632
|
'61182.54' => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
|
|
632
633
|
'61182.55' => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
|
|
633
634
|
'61182.56' => 'Canon RF 35mm F1.4 L VCM', #42
|
|
635
|
+
'61182.57' => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
|
|
636
|
+
'61182.58' => 'Canon RF 70-200mm F2.8 L IS USM Z + RF1.4x', #42
|
|
637
|
+
'61182.59' => 'Canon RF 70-200mm F2.8 L IS USM Z + RF2x', #42
|
|
638
|
+
'61182.60' => 'Canon RF 16-28mm F2.8 IS STM', #42
|
|
639
|
+
'61182.61' => 'Canon RF 50mm F1.4 L VCM', #42
|
|
640
|
+
'61182.62' => 'Canon RF 24mm F1.4 L VCM', #42
|
|
634
641
|
65535 => 'n/a',
|
|
635
642
|
);
|
|
636
643
|
|
|
@@ -1401,6 +1408,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
1401
1408
|
Condition => '$$self{Model} =~ /\bEOS R[56]$/',
|
|
1402
1409
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoR6' },
|
|
1403
1410
|
},
|
|
1411
|
+
{
|
|
1412
|
+
Name => 'CanonCameraInfoR6m2',
|
|
1413
|
+
Condition => '$$self{Model} =~ /\bEOS R6m2$/',
|
|
1414
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoR6m2' },
|
|
1415
|
+
},
|
|
1404
1416
|
{
|
|
1405
1417
|
Name => 'CanonCameraInfoG5XII',
|
|
1406
1418
|
Condition => '$$self{Model} =~ /\bG5 X Mark II$/',
|
|
@@ -4749,6 +4761,19 @@ my %ciMaxFocal = (
|
|
|
4749
4761
|
# 0x0bb7 - counts down during focus stack (ref forum16111)
|
|
4750
4762
|
);
|
|
4751
4763
|
|
|
4764
|
+
%Image::ExifTool::Canon::CameraInfoR6m2 = (
|
|
4765
|
+
%binaryDataAttrs,
|
|
4766
|
+
FIRST_ENTRY => 0,
|
|
4767
|
+
PRIORITY => 0,
|
|
4768
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
4769
|
+
NOTES => 'CameraInfo tags for the EOS R6 Mark II.',
|
|
4770
|
+
0x0d29 => { #AgostonKapitany
|
|
4771
|
+
Name => 'ShutterCount',
|
|
4772
|
+
Format => 'int32u',
|
|
4773
|
+
Notes => 'includes electronic + mechanical shutter',
|
|
4774
|
+
},
|
|
4775
|
+
);
|
|
4776
|
+
|
|
4752
4777
|
# ref https://exiftool.org/forum/index.php?topic=15356.0
|
|
4753
4778
|
%Image::ExifTool::Canon::CameraInfoG5XII = (
|
|
4754
4779
|
%binaryDataAttrs,
|
|
@@ -7001,6 +7026,12 @@ my %ciMaxFocal = (
|
|
|
7001
7026
|
316 => 'Canon RF 35mm F1.4 L VCM', #42
|
|
7002
7027
|
317 => 'Canon RF-S 3.9mm F3.5 STM DUAL FISHEYE', #42
|
|
7003
7028
|
318 => 'Canon RF 28-70mm F2.8 IS STM', #42
|
|
7029
|
+
319 => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
|
|
7030
|
+
320 => 'Canon RF 70-200mm F2.8 L IS USM Z + RF1.4x', #42
|
|
7031
|
+
321 => 'Canon RF 70-200mm F2.8 L IS USM Z + RF2x', #42
|
|
7032
|
+
323 => 'Canon RF 16-28mm F2.8 IS STM', #42
|
|
7033
|
+
325 => 'Canon RF 50mm F1.4 L VCM', #42
|
|
7034
|
+
326 => 'Canon RF 24mm F1.4 L VCM', #42
|
|
7004
7035
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
|
7005
7036
|
},
|
|
7006
7037
|
},
|
|
@@ -9830,35 +9861,39 @@ sub LensWithTC($$)
|
|
|
9830
9861
|
|
|
9831
9862
|
#------------------------------------------------------------------------------
|
|
9832
9863
|
# Attempt to calculate sensor size for Canon cameras
|
|
9833
|
-
# Inputs: 0
|
|
9864
|
+
# Inputs: 0) ExifTool ref
|
|
9834
9865
|
# Returns: Sensor diagonal size in mm, or undef
|
|
9835
9866
|
# Notes: This algorithm is fairly reliable, but has been found to give incorrect
|
|
9836
9867
|
# values for some firmware versions of the EOS 20D, A310, SD40 and IXUS 65
|
|
9837
9868
|
# (ref http://wyw.dcweb.cn/download.asp?path=&file=jhead-2.96-ccdwidth_hack.zip)
|
|
9838
|
-
sub CalcSensorDiag(
|
|
9869
|
+
sub CalcSensorDiag($)
|
|
9839
9870
|
{
|
|
9840
|
-
my
|
|
9841
|
-
#
|
|
9842
|
-
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
|
|
9849
|
-
|
|
9850
|
-
|
|
9851
|
-
|
|
9852
|
-
|
|
9853
|
-
|
|
9854
|
-
|
|
9855
|
-
|
|
9856
|
-
|
|
9857
|
-
|
|
9858
|
-
|
|
9859
|
-
|
|
9860
|
-
|
|
9861
|
-
|
|
9871
|
+
my $et = shift;
|
|
9872
|
+
# calculation is based on the rational value of FocalPlaneX/YResolution
|
|
9873
|
+
# (most Canon cameras store the sensor size in the denominator)
|
|
9874
|
+
return undef unless $$et{TAG_EXTRA}{FocalPlaneXResolution} and
|
|
9875
|
+
$$et{TAG_EXTRA}{FocalPlaneYResolution};
|
|
9876
|
+
my $xres = $$et{TAG_EXTRA}{FocalPlaneXResolution}{Rational};
|
|
9877
|
+
my $yres = $$et{TAG_EXTRA}{FocalPlaneYResolution}{Rational};
|
|
9878
|
+
return undef unless $xres and $yres;
|
|
9879
|
+
# assumptions: 1) numerators are image width/height * 1000
|
|
9880
|
+
# 2) denominators are sensor width/height in inches * 1000
|
|
9881
|
+
my @xres = split /[ \/]/, $xres;
|
|
9882
|
+
my @yres = split /[ \/]/, $yres;
|
|
9883
|
+
# verify assumptions as best we can:
|
|
9884
|
+
# numerators are always divisible by 1000
|
|
9885
|
+
if ($xres[0] % 1000 == 0 and $yres[0] % 1000 == 0 and
|
|
9886
|
+
# at least 640x480 pixels (DC models - PH)
|
|
9887
|
+
$xres[0] >= 640000 and $yres[0] >= 480000 and
|
|
9888
|
+
# ... but not too big!
|
|
9889
|
+
$xres[0] < 10000000 and $yres[0] < 10000000 and
|
|
9890
|
+
# minimum sensor size is 0.061 inches (DC models - PH)
|
|
9891
|
+
$xres[1] >= 61 and $xres[1] < 1500 and
|
|
9892
|
+
$yres[1] >= 61 and $yres[1] < 1000 and
|
|
9893
|
+
# sensor isn't square (may happen if rationals have been reduced)
|
|
9894
|
+
$xres[1] != $yres[1])
|
|
9895
|
+
{
|
|
9896
|
+
return sqrt($xres[1]*$xres[1] + $yres[1]*$yres[1]) * 0.0254;
|
|
9862
9897
|
}
|
|
9863
9898
|
return undef;
|
|
9864
9899
|
}
|
|
@@ -10251,7 +10286,11 @@ sub ProcessSerialData($$$)
|
|
|
10251
10286
|
$et->ProcessDirectory(\%dirInfo, $subTablePtr);
|
|
10252
10287
|
} elsif (not $$tagInfo{Unknown} or $unknown) {
|
|
10253
10288
|
# don't extract zero-length information
|
|
10254
|
-
$et->FoundTag($tagInfo, $val) if $count;
|
|
10289
|
+
my $key = $et->FoundTag($tagInfo, $val) if $count;
|
|
10290
|
+
if ($key) {
|
|
10291
|
+
$$et{TAG_EXTRA}{$key}{G6} = $format if $$et{OPTIONS}{SaveFormat};
|
|
10292
|
+
$$et{TAG_EXTRA}{$key}{BinVal} = substr($$dataPt, $pos+$offset, $len) if $$et{OPTIONS}{SaveBin};
|
|
10293
|
+
}
|
|
10255
10294
|
}
|
|
10256
10295
|
$pos += $len;
|
|
10257
10296
|
}
|
|
@@ -10448,6 +10487,7 @@ sub ProcessCTMD($$$)
|
|
|
10448
10487
|
Start => $pos + 6,
|
|
10449
10488
|
Addr => $$dirInfo{Base} + $pos + 6,
|
|
10450
10489
|
Prefix => $$et{INDENT},
|
|
10490
|
+
Out => $et->Options('TextOut'),
|
|
10451
10491
|
) if $verbose > 2;
|
|
10452
10492
|
if ($$tagTablePtr{$type}) {
|
|
10453
10493
|
$et->HandleTag($tagTablePtr, $type, undef,
|
|
@@ -10558,7 +10598,7 @@ Canon maker notes in EXIF information.
|
|
|
10558
10598
|
|
|
10559
10599
|
=head1 AUTHOR
|
|
10560
10600
|
|
|
10561
|
-
Copyright 2003-
|
|
10601
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
10562
10602
|
|
|
10563
10603
|
This library is free software; you can redistribute it and/or modify it
|
|
10564
10604
|
under the same terms as Perl itself.
|
|
@@ -2873,7 +2873,7 @@ Image::ExifTool to read this information.
|
|
|
2873
2873
|
|
|
2874
2874
|
=head1 AUTHOR
|
|
2875
2875
|
|
|
2876
|
-
Copyright 2003-
|
|
2876
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2877
2877
|
|
|
2878
2878
|
This library is free software; you can redistribute it and/or modify it
|
|
2879
2879
|
under the same terms as Perl itself.
|
|
@@ -888,7 +888,7 @@ tags.)
|
|
|
888
888
|
|
|
889
889
|
=head1 AUTHOR
|
|
890
890
|
|
|
891
|
-
Copyright 2003-
|
|
891
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
892
892
|
|
|
893
893
|
This library is free software; you can redistribute it and/or modify it
|
|
894
894
|
under the same terms as Perl itself.
|
|
@@ -2288,7 +2288,7 @@ files, and as a trailer in JPEG, CRW, CR2 and TIFF images.
|
|
|
2288
2288
|
|
|
2289
2289
|
=head1 AUTHOR
|
|
2290
2290
|
|
|
2291
|
-
Copyright 2003-
|
|
2291
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2292
2292
|
|
|
2293
2293
|
This library is free software; you can redistribute it and/or modify it
|
|
2294
2294
|
under the same terms as Perl itself.
|
|
@@ -221,7 +221,7 @@ settings files (COS).
|
|
|
221
221
|
|
|
222
222
|
=head1 AUTHOR
|
|
223
223
|
|
|
224
|
-
Copyright 2003-
|
|
224
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
225
225
|
|
|
226
226
|
This library is free software; you can redistribute it and/or modify it
|
|
227
227
|
under the same terms as Perl itself.
|
|
@@ -2034,7 +2034,7 @@ Casio maker notes in EXIF information.
|
|
|
2034
2034
|
|
|
2035
2035
|
=head1 AUTHOR
|
|
2036
2036
|
|
|
2037
|
-
Copyright 2003-
|
|
2037
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
2038
2038
|
|
|
2039
2039
|
This library is free software; you can redistribute it and/or modify it
|
|
2040
2040
|
under the same terms as Perl itself.
|
|
@@ -422,7 +422,7 @@ when decoding certain types of information.
|
|
|
422
422
|
|
|
423
423
|
=head1 AUTHOR
|
|
424
424
|
|
|
425
|
-
Copyright 2003-
|
|
425
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
426
426
|
|
|
427
427
|
This library is free software; you can redistribute it and/or modify it
|
|
428
428
|
under the same terms as Perl itself.
|
|
@@ -3853,7 +3853,7 @@ No translation of special characters sets is done.
|
|
|
3853
3853
|
|
|
3854
3854
|
=head1 AUTHOR
|
|
3855
3855
|
|
|
3856
|
-
Copyright 2003-
|
|
3856
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
|
3857
3857
|
|
|
3858
3858
|
This library is free software; you can redistribute it and/or modify it
|
|
3859
3859
|
under the same terms as Perl itself.
|