exiftool_vendored 12.50.0 → 12.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +69 -3
- data/bin/MANIFEST +2 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +12 -9
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +197 -27
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +1 -1
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +3 -3
- data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +14 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +9 -9
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +4 -4
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +1 -1
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/DPX.pm +1 -1
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +5 -16
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +7 -6
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/Font.pm +1 -1
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +20 -13
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- data/bin/lib/Image/ExifTool/GPS.pm +12 -6
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -5
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ICO.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +1 -1
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +1 -1
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +2 -1
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +35 -8
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LIF.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +6016 -760
- data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sk.pm +1806 -0
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
- data/bin/lib/Image/ExifTool/MIE.pm +1 -1
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MISB.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MPF.pm +1 -1
- data/bin/lib/Image/ExifTool/MRC.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +262 -46
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +658 -276
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +140 -107
- data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +4 -3
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/Other.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +1 -1
- data/bin/lib/Image/ExifTool/PDF.pm +1 -1
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +12 -7
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +9 -2
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +8 -4
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +63 -15
- data/bin/lib/Image/ExifTool/README +2 -1
- data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- data/bin/lib/Image/ExifTool/Red.pm +1 -1
- data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +3 -1
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +7 -7
- data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- data/bin/lib/Image/ExifTool/Stim.pm +1 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +13 -8
- data/bin/lib/Image/ExifTool/TagLookup.pm +4599 -4505
- data/bin/lib/Image/ExifTool/TagNames.pod +313 -39
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +1 -1
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +14 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +5 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -14
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +16 -2
- data/bin/lib/Image/ExifTool/Writer.pl +35 -15
- data/bin/lib/Image/ExifTool/XMP.pm +23 -3
- data/bin/lib/Image/ExifTool/XMP2.pl +20 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +20 -8
- data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +38 -16
- data/bin/lib/Image/ExifTool.pod +39 -38
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -53,6 +53,19 @@ my %mandatory = (
|
|
53
53
|
},
|
54
54
|
);
|
55
55
|
|
56
|
+
#------------------------------------------------------------------------------
|
57
|
+
# Inverse print conversion for OffsetTime tags
|
58
|
+
# Inputs: 0) input time zone or date/time value, 1) ExifTool ref
|
59
|
+
# Returns: Time zone string for writing to EXIF
|
60
|
+
sub InverseOffsetTime($$)
|
61
|
+
{
|
62
|
+
my ($val, $et) = @_;
|
63
|
+
$val = $et->TimeNow() if lc($val) eq 'now';
|
64
|
+
return '+00:00' if $val =~ /Z$/;
|
65
|
+
return sprintf('%s%.2d:%.2d',$1,$2,$3) if $val =~ /([-+])(\d{1,2}):?(\d{2})/;
|
66
|
+
return undef;
|
67
|
+
}
|
68
|
+
|
56
69
|
#------------------------------------------------------------------------------
|
57
70
|
# Inverse print conversion for LensInfo
|
58
71
|
# Inputs: 0) lens info string
|
@@ -2640,7 +2653,7 @@ This file contains routines to write EXIF metadata.
|
|
2640
2653
|
|
2641
2654
|
=head1 AUTHOR
|
2642
2655
|
|
2643
|
-
Copyright 2003-
|
2656
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
2644
2657
|
|
2645
2658
|
This library is free software; you can redistribute it and/or modify it
|
2646
2659
|
under the same terms as Perl itself.
|
@@ -711,7 +711,7 @@ seldom-used routines.
|
|
711
711
|
|
712
712
|
=head1 AUTHOR
|
713
713
|
|
714
|
-
Copyright 2003-
|
714
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
715
715
|
|
716
716
|
This library is free software; you can redistribute it and/or modify it
|
717
717
|
under the same terms as Perl itself.
|
@@ -395,6 +395,10 @@ sub WritePDF($$)
|
|
395
395
|
|
396
396
|
# must pre-determine Info reference to be used in encryption
|
397
397
|
my $infoRef = $prevInfoRef || \ "$nextObject 0 R";
|
398
|
+
unless (ref $infoRef eq 'SCALAR') {
|
399
|
+
$et->Error("Info dictionary is not an indirect object");
|
400
|
+
return $rtn;
|
401
|
+
}
|
398
402
|
$keyExt = $$infoRef;
|
399
403
|
|
400
404
|
# must encrypt all values in dictionary if they came from an encrypted stream
|
@@ -750,7 +754,7 @@ C<PDF-update> pseudo group).
|
|
750
754
|
|
751
755
|
=head1 AUTHOR
|
752
756
|
|
753
|
-
Copyright 2003-
|
757
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
754
758
|
|
755
759
|
This library is free software; you can redistribute it and/or modify it
|
756
760
|
under the same terms as Perl itself.
|
@@ -401,7 +401,7 @@ strings).
|
|
401
401
|
|
402
402
|
=head1 AUTHOR
|
403
403
|
|
404
|
-
Copyright 2003-
|
404
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
405
405
|
|
406
406
|
This library is free software; you can redistribute it and/or modify it
|
407
407
|
under the same terms as Perl itself.
|
@@ -257,7 +257,7 @@ default resource name, and applied if no appended name is provided.
|
|
257
257
|
|
258
258
|
=head1 AUTHOR
|
259
259
|
|
260
|
-
Copyright 2003-
|
260
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
261
261
|
|
262
262
|
This library is free software; you can redistribute it and/or modify it
|
263
263
|
under the same terms as Perl itself.
|
@@ -687,7 +687,7 @@ Thanks to Tim Kordick for his help testing the EPS writer.
|
|
687
687
|
|
688
688
|
=head1 AUTHOR
|
689
689
|
|
690
|
-
Copyright 2003-
|
690
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
691
691
|
|
692
692
|
This library is free software; you can redistribute it and/or modify it
|
693
693
|
under the same terms as Perl itself.
|
@@ -306,14 +306,17 @@ sub CheckQTValue($$$)
|
|
306
306
|
|
307
307
|
#------------------------------------------------------------------------------
|
308
308
|
# Format QuickTime value for writing
|
309
|
-
# Inputs: 0) ExifTool ref, 1) value ref, 2)
|
310
|
-
# Returns: Flags for QT data type, and reformats value as required
|
309
|
+
# Inputs: 0) ExifTool ref, 1) value ref, 2) tagInfo ref, 3) Format (or undef)
|
310
|
+
# Returns: Flags for QT data type, and reformats value as required (sets to undef on error)
|
311
311
|
sub FormatQTValue($$;$$)
|
312
312
|
{
|
313
|
-
my ($et, $valPt, $
|
313
|
+
my ($et, $valPt, $tagInfo, $format) = @_;
|
314
|
+
my $writable = $$tagInfo{Writable};
|
315
|
+
my $count = $$tagInfo{Count};
|
314
316
|
my $flags;
|
317
|
+
$format or $format = $$tagInfo{Format};
|
315
318
|
if ($format and $format ne 'string' or not $format and $writable and $writable ne 'string') {
|
316
|
-
$$valPt = WriteValue($$valPt, $format || $writable);
|
319
|
+
$$valPt = WriteValue($$valPt, $format || $writable, $count);
|
317
320
|
if ($writable and $qtFormat{$writable}) {
|
318
321
|
$flags = $qtFormat{$writable};
|
319
322
|
} else {
|
@@ -329,6 +332,7 @@ sub FormatQTValue($$;$$)
|
|
329
332
|
$flags = 0x01; # UTF8
|
330
333
|
$$valPt = $et->Encode($$valPt, 'UTF8');
|
331
334
|
}
|
335
|
+
defined $$valPt or $et->WarnOnce("Error converting value for $$tagInfo{Name}");
|
332
336
|
return $flags;
|
333
337
|
}
|
334
338
|
|
@@ -1139,7 +1143,7 @@ sub WriteQuickTime($$$)
|
|
1139
1143
|
my $newVal = $et->GetNewValue($nvHash);
|
1140
1144
|
next unless defined $newVal;
|
1141
1145
|
my $prVal = $newVal;
|
1142
|
-
my $flags = FormatQTValue($et, \$newVal, $
|
1146
|
+
my $flags = FormatQTValue($et, \$newVal, $tagInfo, $format);
|
1143
1147
|
next unless defined $newVal;
|
1144
1148
|
my ($ctry, $lang) = (0, 0);
|
1145
1149
|
if ($$ti{LangCode}) {
|
@@ -1220,7 +1224,8 @@ sub WriteQuickTime($$$)
|
|
1220
1224
|
}
|
1221
1225
|
my $prVal = $newVal;
|
1222
1226
|
# format new value for writing (and get new flags)
|
1223
|
-
$flags = FormatQTValue($et, \$newVal, $
|
1227
|
+
$flags = FormatQTValue($et, \$newVal, $tagInfo, $format);
|
1228
|
+
next unless defined $newVal;
|
1224
1229
|
my $grp = $et->GetGroup($langInfo, 1);
|
1225
1230
|
$et->VerboseValue("- $grp:$$langInfo{Name}", $val);
|
1226
1231
|
$et->VerboseValue("+ $grp:$$langInfo{Name}", $prVal);
|
@@ -1463,7 +1468,7 @@ sub WriteQuickTime($$$)
|
|
1463
1468
|
my $newVal = $et->GetNewValue($nvHash);
|
1464
1469
|
next unless defined $newVal;
|
1465
1470
|
my $prVal = $newVal;
|
1466
|
-
my $flags = FormatQTValue($et, \$newVal,
|
1471
|
+
my $flags = FormatQTValue($et, \$newVal, $tagInfo);
|
1467
1472
|
next unless defined $newVal;
|
1468
1473
|
my ($ctry, $lang) = (0, 0);
|
1469
1474
|
# handle alternate languages
|
@@ -1662,12 +1667,18 @@ sub WriteQuickTime($$$)
|
|
1662
1667
|
# edit size of mdat in header if necessary
|
1663
1668
|
if ($diff) {
|
1664
1669
|
if (length($$hdrChunk[2]) == 8) {
|
1665
|
-
my $size = Get32u(\$$hdrChunk[2], 0)
|
1666
|
-
$size
|
1667
|
-
|
1670
|
+
my $size = Get32u(\$$hdrChunk[2], 0);
|
1671
|
+
if ($size) { # (0 size = extends to end of file)
|
1672
|
+
$size += $diff;
|
1673
|
+
$size > 0xffffffff and $et->Error("Can't yet grow mdat across 4GB boundary"), return $rtnVal;
|
1674
|
+
Set32u($size, \$$hdrChunk[2], 0);
|
1675
|
+
}
|
1668
1676
|
} elsif (length($$hdrChunk[2]) == 16) {
|
1669
|
-
my $size = Get64u(\$$hdrChunk[2], 8)
|
1670
|
-
|
1677
|
+
my $size = Get64u(\$$hdrChunk[2], 8);
|
1678
|
+
if ($size) {
|
1679
|
+
$size += $diff;
|
1680
|
+
Set64u($size, \$$hdrChunk[2], 8);
|
1681
|
+
}
|
1671
1682
|
} else {
|
1672
1683
|
$et->Error('Internal error. Invalid mdat header');
|
1673
1684
|
return $rtnVal;
|
@@ -1894,7 +1905,12 @@ sub WriteMOV($$)
|
|
1894
1905
|
$ftype = 'MOV';
|
1895
1906
|
}
|
1896
1907
|
$et->SetFileType($ftype); # need to set "FileType" tag for a Condition
|
1897
|
-
|
1908
|
+
if ($ftype eq 'HEIC') {
|
1909
|
+
# EXIF is preferred in HEIC files
|
1910
|
+
$et->InitWriteDirs($dirMap{$ftype}, 'EXIF', 'QuickTime');
|
1911
|
+
} else {
|
1912
|
+
$et->InitWriteDirs($dirMap{$ftype}, 'XMP', 'QuickTime');
|
1913
|
+
}
|
1898
1914
|
$$et{DirMap} = $dirMap{$ftype}; # need access to directory map when writing
|
1899
1915
|
# track tags globally to avoid creating multiple tags in the case of duplicate directories
|
1900
1916
|
$$et{DidTag} = { };
|
@@ -1927,7 +1943,7 @@ QuickTime-based file formats like MOV and MP4.
|
|
1927
1943
|
|
1928
1944
|
=head1 AUTHOR
|
1929
1945
|
|
1930
|
-
Copyright 2003-
|
1946
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
1931
1947
|
|
1932
1948
|
This library is free software; you can redistribute it and/or modify it
|
1933
1949
|
under the same terms as Perl itself.
|
@@ -338,7 +338,7 @@ Currently writes only WebP files.
|
|
338
338
|
|
339
339
|
=head1 AUTHOR
|
340
340
|
|
341
|
-
Copyright 2003-
|
341
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
342
342
|
|
343
343
|
This library is free software; you can redistribute it and/or modify it
|
344
344
|
under the same terms as Perl itself.
|
@@ -561,7 +561,21 @@ sub AddStructType($$$$;$)
|
|
561
561
|
}
|
562
562
|
|
563
563
|
#------------------------------------------------------------------------------
|
564
|
-
#
|
564
|
+
# Process SphericalVideoXML (see XMP-GSpherical tags documentation)
|
565
|
+
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
566
|
+
# Returns: SphericalVideoXML data
|
567
|
+
sub ProcessGSpherical($$$)
|
568
|
+
{
|
569
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
570
|
+
# extract SphericalVideoXML as a block if requested
|
571
|
+
if ($$et{REQ_TAG_LOOKUP}{sphericalvideoxml}) {
|
572
|
+
$et->FoundTag(SphericalVideoXML => substr(${$$dirInfo{DataPt}}, 16));
|
573
|
+
}
|
574
|
+
return Image::ExifTool::XMP::ProcessXMP($et, $dirInfo, $tagTablePtr);
|
575
|
+
}
|
576
|
+
|
577
|
+
#------------------------------------------------------------------------------
|
578
|
+
# Hack to use XMP writer for SphericalVideoXML (see XMP-GSpherical tags documentation)
|
565
579
|
# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
|
566
580
|
# Returns: SphericalVideoXML data
|
567
581
|
sub WriteGSpherical($$$)
|
@@ -1621,7 +1635,7 @@ This file contains routines to write XMP metadata.
|
|
1621
1635
|
|
1622
1636
|
=head1 AUTHOR
|
1623
1637
|
|
1624
|
-
Copyright 2003-
|
1638
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
1625
1639
|
|
1626
1640
|
This library is free software; you can redistribute it and/or modify it
|
1627
1641
|
under the same terms as Perl itself.
|
@@ -242,7 +242,7 @@ my %intRange = (
|
|
242
242
|
'int64s' => [-9223372036854775808, 9223372036854775807],
|
243
243
|
);
|
244
244
|
# lookup for file types with block-writable EXIF
|
245
|
-
my %blockExifTypes = map { $_ => 1 } qw(JPEG PNG JP2 MIE EXIF FLIF MOV MP4 RIFF);
|
245
|
+
my %blockExifTypes = map { $_ => 1 } qw(JPEG PNG JP2 JXL MIE EXIF FLIF MOV MP4 RIFF);
|
246
246
|
|
247
247
|
my $maxSegmentLen = 0xfffd; # maximum length of data in a JPEG segment
|
248
248
|
my $maxXMPLen = $maxSegmentLen; # maximum length of XMP data in JPEG
|
@@ -707,9 +707,13 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
707
707
|
$writeGroup or $writeGroup = $group0;
|
708
708
|
# get priority for this group
|
709
709
|
unless ($priority) {
|
710
|
-
|
711
|
-
|
712
|
-
|
710
|
+
if ($$tagInfo{Avoid} and $$tagInfo{WriteAlso}) {
|
711
|
+
$priority = 0;
|
712
|
+
} else {
|
713
|
+
$priority = $$self{WRITE_PRIORITY}{lc($writeGroup)};
|
714
|
+
unless ($priority) {
|
715
|
+
$priority = $$self{WRITE_PRIORITY}{lc($group0)} || 0;
|
716
|
+
}
|
713
717
|
}
|
714
718
|
}
|
715
719
|
# adjust priority based on Preferred level for this tag
|
@@ -830,6 +834,8 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
830
834
|
$tag = $$tagInfo{Name}; # get tag name for warnings
|
831
835
|
my $lcTag = lc $tag;
|
832
836
|
my $pref = $preferred{$lcTag} || { };
|
837
|
+
# don't write Avoid-ed tags with side effect unless preferred
|
838
|
+
next if not $$pref{$tagInfo} and $$tagInfo{Avoid} and $$tagInfo{WriteAlso};
|
833
839
|
my $shift = $options{Shift};
|
834
840
|
my $addValue = $options{AddValue};
|
835
841
|
if (defined $shift) {
|
@@ -971,6 +977,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
971
977
|
$self->GetNewValueHash($tagInfo, $writeGroup, 'delete', $options{ProtectSaved});
|
972
978
|
# also delete related tag previous new values
|
973
979
|
if ($$tagInfo{WriteAlso}) {
|
980
|
+
$$self{INDENT2} = '+';
|
974
981
|
my ($wgrp, $wtag);
|
975
982
|
if ($$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All' and $writeGroup) {
|
976
983
|
$wgrp = $writeGroup . ':';
|
@@ -981,6 +988,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
981
988
|
my ($n,$e) = $self->SetNewValue($wgrp . $wtag, undef, Replace=>2);
|
982
989
|
$numSet += $n;
|
983
990
|
}
|
991
|
+
$$self{INDENT2} = '';
|
984
992
|
}
|
985
993
|
$options{Replace} == 2 and ++$numSet, next;
|
986
994
|
}
|
@@ -1022,7 +1030,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
1022
1030
|
require 'Image/ExifTool/XMPStruct.pl';
|
1023
1031
|
$_ = Image::ExifTool::XMP::SerializeStruct($_);
|
1024
1032
|
}
|
1025
|
-
print $out "$verb $wgrp1:$tag$fromList if value is '${_}'\n";
|
1033
|
+
print $out "$$self{INDENT2}$verb $wgrp1:$tag$fromList if value is '${_}'\n";
|
1026
1034
|
}
|
1027
1035
|
}
|
1028
1036
|
}
|
@@ -1086,15 +1094,25 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
1086
1094
|
push @{$$nvHash{Value}}, ref $val eq 'ARRAY' ? @$val : $val;
|
1087
1095
|
}
|
1088
1096
|
if ($verbose > 1) {
|
1089
|
-
my $ifExists
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1097
|
+
my $ifExists;
|
1098
|
+
if ($$tagInfo{IsComposite}) {
|
1099
|
+
# (composite tags don't technically exist in the file)
|
1100
|
+
if ($$tagInfo{WriteAlso}) {
|
1101
|
+
$ifExists = ' (+' . join(',+',sort keys %{$$tagInfo{WriteAlso}}) . '):';
|
1102
|
+
} else {
|
1103
|
+
$ifExists = '';
|
1104
|
+
}
|
1105
|
+
} else {
|
1106
|
+
$ifExists = $$nvHash{IsCreating} ? ( $createOnly ?
|
1107
|
+
($$nvHash{IsCreating} == 2 ?
|
1108
|
+
" if $writeGroup exists and tag doesn't" :
|
1109
|
+
" if tag doesn't exist") :
|
1110
|
+
($$nvHash{IsCreating} == 2 ? " if $writeGroup exists" : '')) :
|
1094
1111
|
(($$nvHash{DelValue} and @{$$nvHash{DelValue}}) ?
|
1095
|
-
|
1112
|
+
' if tag was deleted' : ' if tag exists');
|
1113
|
+
}
|
1096
1114
|
my $verb = ($shift ? 'Shifting' : ($addValue ? 'Adding' : 'Writing'));
|
1097
|
-
print $out "$verb $wgrp1:$tag$ifExists\n";
|
1115
|
+
print $out "$$self{INDENT2}$verb $wgrp1:$tag$ifExists\n";
|
1098
1116
|
}
|
1099
1117
|
}
|
1100
1118
|
} elsif ($permanent) {
|
@@ -1109,7 +1127,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
1109
1127
|
$self->GetNewValueHash($tagInfo, $writeGroup, 'delete');
|
1110
1128
|
my $nvHash = $self->GetNewValueHash($tagInfo, $writeGroup, 'create');
|
1111
1129
|
$$nvHash{WantGroup} = $wantGroup;
|
1112
|
-
$verbose > 1 and print $out "Deleting $wgrp1:$tag\n";
|
1130
|
+
$verbose > 1 and print $out "$$self{INDENT2}Deleting $wgrp1:$tag\n";
|
1113
1131
|
}
|
1114
1132
|
$$setTags{$tagInfo} = 1 if $setTags;
|
1115
1133
|
$prioritySet = 1 if $$pref{$tagInfo};
|
@@ -1118,6 +1136,7 @@ WriteAlso:
|
|
1118
1136
|
# also write related tags
|
1119
1137
|
my $writeAlso = $$tagInfo{WriteAlso};
|
1120
1138
|
if ($writeAlso) {
|
1139
|
+
$$self{INDENT2} = '+'; # indicate related tag with a leading "+"
|
1121
1140
|
my ($wgrp, $wtag, $n);
|
1122
1141
|
if ($$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All' and $writeGroup) {
|
1123
1142
|
$wgrp = $writeGroup . ':';
|
@@ -1137,7 +1156,7 @@ WriteAlso:
|
|
1137
1156
|
SetTags => \%alsoWrote, # remember tags already written
|
1138
1157
|
);
|
1139
1158
|
undef $evalWarning;
|
1140
|
-
#### eval WriteAlso ($val)
|
1159
|
+
#### eval WriteAlso ($val,%opts)
|
1141
1160
|
my $v = eval $$writeAlso{$wtag};
|
1142
1161
|
# we wanted to do the eval in case there are side effect, but we
|
1143
1162
|
# don't want to write a value for a tag that is being deleted:
|
@@ -1159,6 +1178,7 @@ WriteAlso:
|
|
1159
1178
|
}
|
1160
1179
|
}
|
1161
1180
|
}
|
1181
|
+
$$self{INDENT2} = '';
|
1162
1182
|
}
|
1163
1183
|
}
|
1164
1184
|
# print warning if we couldn't set our priority tag
|
@@ -7045,7 +7065,7 @@ used routines.
|
|
7045
7065
|
|
7046
7066
|
=head1 AUTHOR
|
7047
7067
|
|
7048
|
-
Copyright 2003-
|
7068
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
7049
7069
|
|
7050
7070
|
This library is free software; you can redistribute it and/or modify it
|
7051
7071
|
under the same terms as Perl itself.
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
require Exporter;
|
52
52
|
|
53
|
-
$VERSION = '3.
|
53
|
+
$VERSION = '3.56';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -87,6 +87,7 @@ my %stdPath = (
|
|
87
87
|
'MicrosoftPhoto' => 'microsoft',
|
88
88
|
'prismusagerights' => 'pur',
|
89
89
|
'GettyImagesGIFT' => 'getty',
|
90
|
+
'hdr_metadata' => 'hdr',
|
90
91
|
);
|
91
92
|
|
92
93
|
# translate ExifTool XMP family 1 group names back to standard XMP namespace prefixes
|
@@ -197,6 +198,7 @@ my %xmpNS = (
|
|
197
198
|
sdc => 'http://ns.nikon.com/sdc/1.0/',
|
198
199
|
ast => 'http://ns.nikon.com/asteroid/1.0/',
|
199
200
|
nine => 'http://ns.nikon.com/nine/1.0/',
|
201
|
+
hdr_metadata => 'http://ns.adobe.com/hdr-metadata/1.0/',
|
200
202
|
);
|
201
203
|
|
202
204
|
# build reverse namespace lookup
|
@@ -895,6 +897,10 @@ my %sRangeMask = (
|
|
895
897
|
Name => 'nine',
|
896
898
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::nine' },
|
897
899
|
},
|
900
|
+
hdr => {
|
901
|
+
Name => 'hdr',
|
902
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::hdr' },
|
903
|
+
},
|
898
904
|
);
|
899
905
|
|
900
906
|
# hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
|
@@ -1728,6 +1734,14 @@ my %sPantryItem = (
|
|
1728
1734
|
List => 'Seq',
|
1729
1735
|
},
|
1730
1736
|
RangeMaskMapInfo => { Name => 'RangeMask', Struct => \%sRangeMask, FlatName => 'RangeMask' },
|
1737
|
+
# new for ACR 15.1 (not sure if these are integer or real, so just guess)
|
1738
|
+
HDREditMode => { Writable => 'integer' },
|
1739
|
+
SDRBrightness => { Writable => 'real' },
|
1740
|
+
SDRContrast => { Writable => 'real' },
|
1741
|
+
SDRHighlights => { Writable => 'real' },
|
1742
|
+
SDRShadows => { Writable => 'real' },
|
1743
|
+
SDRWhites => { Writable => 'real' },
|
1744
|
+
SDRBlend => { Writable => 'real' },
|
1731
1745
|
);
|
1732
1746
|
|
1733
1747
|
# Tiff namespace properties (tiff)
|
@@ -2279,7 +2293,13 @@ my %sPantryItem = (
|
|
2279
2293
|
PrintConvInv => '$val=~s/\s*m$//; $val',
|
2280
2294
|
},
|
2281
2295
|
NativeDigest => { }, #PH
|
2282
|
-
#
|
2296
|
+
# the following written incorrectly by ACR 15.1
|
2297
|
+
# SubSecTime (should not be written according to Exif4XMP 2.32 specification)
|
2298
|
+
# SubSecTimeOriginal (should not be written according to Exif4XMP 2.32 specification)
|
2299
|
+
# SubSecTimeDigitized (should not be written according to Exif4XMP 2.32 specification)
|
2300
|
+
# SerialNumber (should be BodySerialNumber)
|
2301
|
+
# Lens (should be XMP-aux)
|
2302
|
+
# LensInfo (should be XMP-aux)
|
2283
2303
|
);
|
2284
2304
|
|
2285
2305
|
# Exif extended properties (exifEX, ref 12)
|
@@ -4392,7 +4412,7 @@ information.
|
|
4392
4412
|
|
4393
4413
|
=head1 AUTHOR
|
4394
4414
|
|
4395
|
-
Copyright 2003-
|
4415
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
4396
4416
|
|
4397
4417
|
This library is free software; you can redistribute it and/or modify it
|
4398
4418
|
under the same terms as Perl itself.
|
@@ -2074,6 +2074,25 @@ my %sSubVersion = (
|
|
2074
2074
|
},
|
2075
2075
|
);
|
2076
2076
|
|
2077
|
+
# hdr metadata namespace used by ACR 15.1
|
2078
|
+
%Image::ExifTool::XMP::hdr = (
|
2079
|
+
%xmpTableDefaults,
|
2080
|
+
GROUPS => { 1 => 'XMP-hdr', 2 => 'Image' },
|
2081
|
+
NAMESPACE => 'hdr_metadata',
|
2082
|
+
TABLE_DESC => 'XMP HDR Metadata',
|
2083
|
+
NOTES => q{
|
2084
|
+
HDR metadata namespace tags written by ACR 15.1. The actual namespace
|
2085
|
+
prefix is "hdr_metadata", which is the prefix recorded in the file, but
|
2086
|
+
ExifTool shortens this for the family 1 group name.
|
2087
|
+
},
|
2088
|
+
ccv_primaries_xy => { Name => 'CCVPrimariesXY' }, # (comma-separated string of 6 reals)
|
2089
|
+
ccv_white_xy => { Name => 'CCVWhiteXY' }, # (comma-separated string of 2 reals)
|
2090
|
+
ccv_min_luminance_nits => { Name => 'CCVMinLuminanceNits', Writable => 'real' },
|
2091
|
+
ccv_max_luminance_nits => { Name => 'CCVMaxLuminanceNits', Writable => 'real' },
|
2092
|
+
ccv_avg_luminance_nits => { Name => 'CCVAvgLuminanceNits', Writable => 'real' },
|
2093
|
+
scene_referred => { Name => 'SceneReferred', Writable => 'boolean' },
|
2094
|
+
);
|
2095
|
+
|
2077
2096
|
# SVG namespace properties (ref 9)
|
2078
2097
|
%Image::ExifTool::XMP::SVG = (
|
2079
2098
|
GROUPS => { 0 => 'SVG', 1 => 'SVG', 2 => 'Image' },
|
@@ -2141,7 +2160,7 @@ This file contains definitions for less common XMP namespaces.
|
|
2141
2160
|
|
2142
2161
|
=head1 AUTHOR
|
2143
2162
|
|
2144
|
-
Copyright 2003-
|
2163
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
2145
2164
|
|
2146
2165
|
This library is free software; you can redistribute it and/or modify it
|
2147
2166
|
under the same terms as Perl itself.
|
@@ -869,7 +869,7 @@ information.
|
|
869
869
|
|
870
870
|
=head1 AUTHOR
|
871
871
|
|
872
|
-
Copyright 2003-
|
872
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
873
873
|
|
874
874
|
This library is free software; you can redistribute it and/or modify it
|
875
875
|
under the same terms as Perl itself.
|
@@ -19,7 +19,7 @@ use strict;
|
|
19
19
|
use vars qw($VERSION $warnString);
|
20
20
|
use Image::ExifTool qw(:DataAccess :Utils);
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.28';
|
23
23
|
|
24
24
|
sub WarnProc($) { $warnString = $_[0]; }
|
25
25
|
|
@@ -385,6 +385,18 @@ sub HandleMember($$;$)
|
|
385
385
|
$et->HandleTag($tagTablePtr, '_com', $com) if defined $com and length $com;
|
386
386
|
}
|
387
387
|
|
388
|
+
#------------------------------------------------------------------------------
|
389
|
+
# Extract file from ZIP archive
|
390
|
+
# Inputs: 0) ExifTool ref, 1) Zip object ref, 2) file name
|
391
|
+
# Returns: zip member or undef it it didn't exist
|
392
|
+
sub ExtractFile($$$)
|
393
|
+
{
|
394
|
+
my ($et, $zip, $file) = @_;
|
395
|
+
my $result = $zip->memberNamed($file);
|
396
|
+
$et->VPrint(1, " (Extracting '${file}' from zip archive)\n");
|
397
|
+
return $result;
|
398
|
+
}
|
399
|
+
|
388
400
|
#------------------------------------------------------------------------------
|
389
401
|
# Extract information from a ZIP file
|
390
402
|
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
@@ -460,7 +472,7 @@ sub ProcessZIP($$)
|
|
460
472
|
# check for an Office Open file (DOCX, etc)
|
461
473
|
# --> read '[Content_Types].xml' to determine the file type
|
462
474
|
my ($mime, @members);
|
463
|
-
my $cType = $zip
|
475
|
+
my $cType = ExtractFile($et, $zip, '[Content_Types].xml');
|
464
476
|
if ($cType) {
|
465
477
|
($buff, $status) = $zip->contents($cType);
|
466
478
|
if (not $status and (
|
@@ -501,7 +513,7 @@ sub ProcessZIP($$)
|
|
501
513
|
}
|
502
514
|
|
503
515
|
# check for an Open Document, IDML or EPUB file
|
504
|
-
my $mType = $zip
|
516
|
+
my $mType = ExtractFile($et, $zip, 'mimetype');
|
505
517
|
if ($mType) {
|
506
518
|
($mime, $status) = $zip->contents($mType);
|
507
519
|
if (not $status and $mime =~ /([\x21-\xfe]+)/s) {
|
@@ -510,9 +522,9 @@ sub ProcessZIP($$)
|
|
510
522
|
$et->SetFileType($openDocType{$mime} || 'ZIP', $mime);
|
511
523
|
$et->Warn("Unrecognized MIMEType $mime") unless $openDocType{$mime};
|
512
524
|
# extract Open Document metadata from "meta.xml"
|
513
|
-
my $meta = $zip
|
525
|
+
my $meta = ExtractFile($et, $zip, 'meta.xml');
|
514
526
|
# IDML files have metadata in a different place (ref 6)
|
515
|
-
$meta or $meta = $zip
|
527
|
+
$meta or $meta = ExtractFile($et, $zip, 'META-INF/metadata.xml');
|
516
528
|
if ($meta) {
|
517
529
|
($buff, $status) = $zip->contents($meta);
|
518
530
|
unless ($status) {
|
@@ -532,7 +544,7 @@ sub ProcessZIP($$)
|
|
532
544
|
# process rootfile of EPUB container if applicable
|
533
545
|
for (;;) {
|
534
546
|
last if $meta and $mime ne 'application/epub+zip';
|
535
|
-
my $container = $zip
|
547
|
+
my $container = ExtractFile($et, $zip, 'META-INF/container.xml');
|
536
548
|
($buff, $status) = $zip->contents($container);
|
537
549
|
last if $status;
|
538
550
|
$buff =~ /<rootfile\s+[^>]*?\bfull-path=(['"])(.*?)\1/s or last;
|
@@ -570,7 +582,7 @@ sub ProcessZIP($$)
|
|
570
582
|
my $type;
|
571
583
|
my %tag = ( jpg => 'PreviewImage', png => 'PreviewPNG' );
|
572
584
|
foreach $type ('jpg', 'png') {
|
573
|
-
my $thumb = $zip
|
585
|
+
my $thumb = ExtractFile($et, $zip, "Thumbnails/thumbnail.$type");
|
574
586
|
next unless $thumb;
|
575
587
|
($buff, $status) = $zip->contents($thumb);
|
576
588
|
$et->FoundTag($tag{$type}, $buff) unless $status;
|
@@ -708,7 +720,7 @@ Electronic Publication (EPUB), and Sketch design files (SKETCH).
|
|
708
720
|
|
709
721
|
=head1 AUTHOR
|
710
722
|
|
711
|
-
Copyright 2003-
|
723
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
712
724
|
|
713
725
|
This library is free software; you can redistribute it and/or modify it
|
714
726
|
under the same terms as Perl itself.
|
@@ -220,7 +220,7 @@ metadata from Zeiss Integrated Software RAW (ZISRAW) CZI files.
|
|
220
220
|
|
221
221
|
=head1 AUTHOR
|
222
222
|
|
223
|
-
Copyright 2003-
|
223
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
224
224
|
|
225
225
|
This library is free software; you can redistribute it and/or modify it
|
226
226
|
under the same terms as Perl itself.
|
@@ -215,7 +215,7 @@ information from Apple iWork '09 XML+ZIP files.
|
|
215
215
|
|
216
216
|
=head1 AUTHOR
|
217
217
|
|
218
|
-
Copyright 2003-
|
218
|
+
Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
|
219
219
|
|
220
220
|
This library is free software; you can redistribute it and/or modify it
|
221
221
|
under the same terms as Perl itself.
|