exiftool_vendored 10.65.0 → 11.41.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +818 -19
- data/bin/MANIFEST +38 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +48 -44
- data/bin/arg_files/exif2xmp.args +4 -1
- data/bin/arg_files/gps2xmp.args +4 -1
- data/bin/arg_files/iptcCore.args +8 -0
- data/bin/arg_files/xmp2exif.args +4 -1
- data/bin/arg_files/xmp2gps.args +4 -1
- data/bin/config_files/dji.config +131 -0
- data/bin/config_files/example.config +6 -2
- data/bin/config_files/gps2utm.config +256 -256
- data/bin/config_files/nksc.config +146 -0
- data/bin/config_files/picasa_faces.config +382 -382
- data/bin/exiftool +688 -408
- data/bin/fmt_files/gpx.fmt +10 -6
- data/bin/fmt_files/gpx_wpt.fmt +10 -6
- data/bin/fmt_files/kml.fmt +8 -5
- data/bin/lib/File/RandomAccess.pm +48 -8
- data/bin/lib/File/RandomAccess.pod +21 -2
- data/bin/lib/Image/ExifTool.pm +645 -256
- data/bin/lib/Image/ExifTool.pod +219 -164
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +3 -8
- data/bin/lib/Image/ExifTool/AIFF.pm +12 -4
- 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 +19 -6
- data/bin/lib/Image/ExifTool/Apple.pm +13 -5
- 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 +17 -15
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +30 -15
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +103 -52
- data/bin/lib/Image/ExifTool/Canon.pm +684 -112
- data/bin/lib/Image/ExifTool/CanonCustom.pm +119 -9
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +13 -26
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +12 -5
- data/bin/lib/Image/ExifTool/DJI.pm +51 -3
- data/bin/lib/Image/ExifTool/DNG.pm +15 -8
- 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 +63 -23
- data/bin/lib/Image/ExifTool/DjVu.pm +4 -2
- data/bin/lib/Image/ExifTool/EXE.pm +30 -6
- data/bin/lib/Image/ExifTool/Exif.pm +351 -109
- data/bin/lib/Image/ExifTool/FITS.pm +148 -0
- data/bin/lib/Image/ExifTool/FLAC.pm +2 -2
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +109 -13
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +3 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +433 -9
- data/bin/lib/Image/ExifTool/Font.pm +2 -2
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +336 -16
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +5 -7
- data/bin/lib/Image/ExifTool/GIMP.pm +39 -3
- data/bin/lib/Image/ExifTool/GPS.pm +48 -22
- data/bin/lib/Image/ExifTool/GeoTiff.pm +23 -23
- data/bin/lib/Image/ExifTool/Geotag.pm +80 -45
- data/bin/lib/Image/ExifTool/GoPro.pm +709 -0
- data/bin/lib/Image/ExifTool/H264.pm +40 -18
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +19 -12
- data/bin/lib/Image/ExifTool/HtmlDump.pm +37 -26
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +297 -23
- data/bin/lib/Image/ExifTool/ID3.pm +12 -7
- data/bin/lib/Image/ExifTool/IPTC.pm +48 -19
- 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 +13 -9
- data/bin/lib/Image/ExifTool/InDesign.pm +3 -5
- data/bin/lib/Image/ExifTool/JPEG.pm +22 -11
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +3 -3
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +2 -2
- data/bin/lib/Image/ExifTool/Kodak.pm +1233 -58
- data/bin/lib/Image/ExifTool/KyoceraRaw.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 +33 -24
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +64 -2
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +64 -2
- data/bin/lib/Image/ExifTool/Lang/es.pm +8 -4
- data/bin/lib/Image/ExifTool/Lang/fi.pm +46 -4
- data/bin/lib/Image/ExifTool/Lang/fr.pm +5 -3
- data/bin/lib/Image/ExifTool/Lang/it.pm +6 -3
- data/bin/lib/Image/ExifTool/Lang/ja.pm +15 -3
- data/bin/lib/Image/ExifTool/Lang/ko.pm +5 -2
- data/bin/lib/Image/ExifTool/Lang/nl.pm +6 -3
- data/bin/lib/Image/ExifTool/Lang/pl.pm +2 -2
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +4 -2
- 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 +4 -8
- data/bin/lib/Image/ExifTool/M2TS.pm +10 -9
- data/bin/lib/Image/ExifTool/MIE.pm +12 -8
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.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 +2 -3
- data/bin/lib/Image/ExifTool/MPF.pm +6 -6
- data/bin/lib/Image/ExifTool/MWG.pm +4 -4
- data/bin/lib/Image/ExifTool/MXF.pm +2 -2
- data/bin/lib/Image/ExifTool/MacOS.pm +184 -34
- data/bin/lib/Image/ExifTool/MakerNotes.pm +101 -18
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +5 -3
- data/bin/lib/Image/ExifTool/Minolta.pm +89 -62
- 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 +1511 -380
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +2758 -2935
- 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 +47 -8
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +138 -0
- data/bin/lib/Image/ExifTool/PDF.pm +58 -42
- 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 -5
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +108 -10
- data/bin/lib/Image/ExifTool/PPM.pm +3 -3
- 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 +299 -31
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +201 -19
- data/bin/lib/Image/ExifTool/Pentax.pm +164 -143
- data/bin/lib/Image/ExifTool/PhaseOne.pm +12 -5
- data/bin/lib/Image/ExifTool/PhotoCD.pm +9 -10
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +230 -60
- data/bin/lib/Image/ExifTool/PostScript.pm +29 -4
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +1539 -279
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1857 -0
- data/bin/lib/Image/ExifTool/README +84 -46
- data/bin/lib/Image/ExifTool/RIFF.pm +116 -23
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +6 -4
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +3 -2
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +261 -7
- data/bin/lib/Image/ExifTool/Red.pm +325 -0
- data/bin/lib/Image/ExifTool/Ricoh.pm +3 -7
- data/bin/lib/Image/ExifTool/Samsung.pm +95 -25
- 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 +26 -12
- data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -2
- data/bin/lib/Image/ExifTool/Sigma.pm +36 -30
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +3 -8
- data/bin/lib/Image/ExifTool/Sony.pm +531 -177
- data/bin/lib/Image/ExifTool/SonyIDC.pm +63 -3
- data/bin/lib/Image/ExifTool/Stim.pm +2 -2
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +23 -23
- data/bin/lib/Image/ExifTool/TagLookup.pm +6352 -5062
- data/bin/lib/Image/ExifTool/TagNames.pod +3024 -565
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -2
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +47 -9
- data/bin/lib/Image/ExifTool/Validate.pm +391 -99
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +319 -0
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +91 -18
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +6 -6
- data/bin/lib/Image/ExifTool/WritePDF.pl +13 -12
- 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 +2 -2
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +764 -121
- data/bin/lib/Image/ExifTool/WriteXMP.pl +176 -67
- data/bin/lib/Image/ExifTool/Writer.pl +490 -246
- data/bin/lib/Image/ExifTool/XMP.pm +216 -76
- data/bin/lib/Image/ExifTool/XMP2.pl +54 -10
- data/bin/lib/Image/ExifTool/XMPStruct.pl +14 -11
- data/bin/lib/Image/ExifTool/ZIP.pm +60 -15
- data/bin/lib/Image/ExifTool/iWork.pm +12 -5
- data/bin/perl-Image-ExifTool.spec +46 -44
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +14 -4
@@ -25,7 +25,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
25
25
|
use Image::ExifTool::Exif;
|
26
26
|
use Image::ExifTool::GPS;
|
27
27
|
|
28
|
-
$VERSION = '1.
|
28
|
+
$VERSION = '1.17';
|
29
29
|
|
30
30
|
sub ProcessSEI($$);
|
31
31
|
|
@@ -433,24 +433,24 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
|
|
433
433
|
1.1 => {
|
434
434
|
Name => 'ExposureProgram',
|
435
435
|
Mask => 0xf0,
|
436
|
-
ValueConv => '$val ==
|
436
|
+
ValueConv => '$val == 15 ? undef : $val',
|
437
437
|
PrintConv => {
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
438
|
+
0 => 'Program AE',
|
439
|
+
1 => 'Gain', #?
|
440
|
+
2 => 'Shutter speed priority AE',
|
441
|
+
3 => 'Aperture-priority AE',
|
442
|
+
4 => 'Manual',
|
443
443
|
},
|
444
444
|
},
|
445
445
|
2.1 => {
|
446
446
|
Name => 'WhiteBalance',
|
447
447
|
Mask => 0xe0,
|
448
|
-
ValueConv => '$val ==
|
448
|
+
ValueConv => '$val == 7 ? undef : $val',
|
449
449
|
PrintConv => {
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
450
|
+
0 => 'Auto',
|
451
|
+
1 => 'Hold',
|
452
|
+
2 => '1-Push',
|
453
|
+
3 => 'Daylight',
|
454
454
|
},
|
455
455
|
},
|
456
456
|
3 => {
|
@@ -710,7 +710,8 @@ sub DecodeScalingMatrices($)
|
|
710
710
|
|
711
711
|
#------------------------------------------------------------------------------
|
712
712
|
# Parse H.264 sequence parameter set RBSP (ref 1)
|
713
|
-
# Inputs
|
713
|
+
# Inputs: 0) ExifTool ref, 1) tag table ref, 2) data ref
|
714
|
+
# Notes: All this just to get the image size!
|
714
715
|
sub ParseSeqParamSet($$$)
|
715
716
|
{
|
716
717
|
my ($et, $tagTablePtr, $dataPt) = @_;
|
@@ -832,7 +833,9 @@ sub ParseSeqParamSet($$$)
|
|
832
833
|
|
833
834
|
#------------------------------------------------------------------------------
|
834
835
|
# Parse H.264 picture timing SEI message (payload type 1) (ref 1)
|
835
|
-
# Inputs
|
836
|
+
# Inputs: 0) ExifTool ref, 1) data ref
|
837
|
+
# Notes: this routine is for test purposes only, and not called unless the
|
838
|
+
# $parsePictureTiming flag is set
|
836
839
|
sub ParsePictureTiming($$)
|
837
840
|
{
|
838
841
|
my ($et, $dataPt) = @_;
|
@@ -889,6 +892,26 @@ sub ParsePictureTiming($$)
|
|
889
892
|
# Process H.264 Supplementary Enhancement Information (ref 1/PH)
|
890
893
|
# Inputs: 0) Exiftool ref, 1) dirInfo ref, 2) tag table ref
|
891
894
|
# Returns: 1 if we processed payload type 5
|
895
|
+
# Payload types:
|
896
|
+
# 0 - buffer period
|
897
|
+
# 1 - pic timing
|
898
|
+
# 2 - pan scan rect
|
899
|
+
# 3 - filler payload
|
900
|
+
# 4 - user data registered itu t t35
|
901
|
+
# 5 - user data unregistered
|
902
|
+
# 6 - recovery point
|
903
|
+
# 7 - dec ref pic marking repetition
|
904
|
+
# 8 - spare pic
|
905
|
+
# 9 - sene info
|
906
|
+
# 10 - sub seq info
|
907
|
+
# 11 - sub seq layer characteristics
|
908
|
+
# 12 - sub seq characteristics
|
909
|
+
# 13 - full frame freeze
|
910
|
+
# 14 - full frame freeze release
|
911
|
+
# 15 - full frame snapshot
|
912
|
+
# 16 - progressive refinement segment start
|
913
|
+
# 17 - progressive refinement segment end
|
914
|
+
# 18 - motion constrained slice group set
|
892
915
|
sub ProcessSEI($$)
|
893
916
|
{
|
894
917
|
my ($et, $dirInfo) = @_;
|
@@ -915,6 +938,7 @@ sub ProcessSEI($$)
|
|
915
938
|
last unless $t == 255;
|
916
939
|
}
|
917
940
|
return 0 if $pos + $size > $end;
|
941
|
+
$et->VPrint(1," (SEI type $type)\n");
|
918
942
|
if ($type == 1) { # picture timing information
|
919
943
|
if ($parsePictureTiming) {
|
920
944
|
my $buff = substr($$dataPt, $pos, $size);
|
@@ -1031,9 +1055,7 @@ sub ParseH264Video($$)
|
|
1031
1055
|
$buff .= substr($$dataPt, $pos, $end - $pos);
|
1032
1056
|
if ($verbose > 1) {
|
1033
1057
|
printf $out " NAL Unit Type: 0x%x (%d bytes)\n",$nal_unit_type, length $buff;
|
1034
|
-
|
1035
|
-
$parms{MaxLen} = 96 if $verbose < 4;
|
1036
|
-
HexDump(\$buff, undef, %parms) if $verbose > 2;
|
1058
|
+
$et->VerboseDump(\$buff);
|
1037
1059
|
}
|
1038
1060
|
pos($$dataPt) = $pos = $nextPos;
|
1039
1061
|
|
@@ -1086,7 +1108,7 @@ information from H.264 video streams.
|
|
1086
1108
|
|
1087
1109
|
=head1 AUTHOR
|
1088
1110
|
|
1089
|
-
Copyright 2003-
|
1111
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
1090
1112
|
|
1091
1113
|
This library is free software; you can redistribute it and/or modify it
|
1092
1114
|
under the same terms as Perl itself.
|
@@ -250,7 +250,7 @@ Hewlett-Packard maker notes.
|
|
250
250
|
|
251
251
|
=head1 AUTHOR
|
252
252
|
|
253
|
-
Copyright 2003-
|
253
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
254
254
|
|
255
255
|
This library is free software; you can redistribute it and/or modify it
|
256
256
|
under the same terms as Perl itself.
|
@@ -20,7 +20,7 @@ use Image::ExifTool::PostScript;
|
|
20
20
|
use Image::ExifTool::XMP qw(EscapeXML UnescapeXML);
|
21
21
|
require Exporter;
|
22
22
|
|
23
|
-
$VERSION = '1.
|
23
|
+
$VERSION = '1.16';
|
24
24
|
@ISA = qw(Exporter);
|
25
25
|
@EXPORT_OK = qw(EscapeHTML UnescapeHTML);
|
26
26
|
|
@@ -363,11 +363,11 @@ sub EscapeChar($)
|
|
363
363
|
|
364
364
|
#------------------------------------------------------------------------------
|
365
365
|
# Escape any special characters for HTML
|
366
|
-
# Inputs: 0)
|
366
|
+
# Inputs: 0) string to be escaped, 1) optional string encoding (default 'UTF8')
|
367
367
|
# Returns: escaped string
|
368
|
-
sub EscapeHTML(
|
368
|
+
sub EscapeHTML($;$)
|
369
369
|
{
|
370
|
-
my $str =
|
370
|
+
my ($str, $enc) = @_;
|
371
371
|
# escape XML characters
|
372
372
|
$str = EscapeXML($str);
|
373
373
|
# escape other special characters if they exist
|
@@ -382,19 +382,26 @@ sub EscapeHTML($)
|
|
382
382
|
}
|
383
383
|
# suppress warnings
|
384
384
|
local $SIG{'__WARN__'} = sub { 1 };
|
385
|
-
|
386
|
-
|
385
|
+
if ($enc and $enc ne 'UTF8') {
|
386
|
+
$str = Image::ExifTool::Decode(undef, $str, $enc, undef, 'UTF8');
|
387
|
+
$str =~ s/([\xc2-\xf7][\x80-\xbf]+)/EscapeChar($1)/sge;
|
388
|
+
$str = Image::ExifTool::Decode(undef, $str, 'UTF8', undef, $enc);
|
389
|
+
} else {
|
390
|
+
# escape any non-ascii characters for HTML
|
391
|
+
$str =~ s/([\xc2-\xf7][\x80-\xbf]+)/EscapeChar($1)/sge;
|
392
|
+
}
|
387
393
|
}
|
388
394
|
return $str;
|
389
395
|
}
|
390
396
|
|
391
397
|
#------------------------------------------------------------------------------
|
392
398
|
# Unescape all HTML character references
|
393
|
-
# Inputs: 0) string to be unescaped
|
399
|
+
# Inputs: 0) string to be unescaped, 1) optional string encoding (default 'UTF8')
|
394
400
|
# Returns: unescaped string
|
395
|
-
sub UnescapeHTML(
|
401
|
+
sub UnescapeHTML($;$)
|
396
402
|
{
|
397
|
-
|
403
|
+
my ($str, $enc) = @_;
|
404
|
+
return UnescapeXML($str, \%entityNum, $enc);
|
398
405
|
}
|
399
406
|
|
400
407
|
#------------------------------------------------------------------------------
|
@@ -502,7 +509,7 @@ sub ProcessHTML($$)
|
|
502
509
|
$name =~ s/\s(.)/\U$1/g; # capitalize all words in tag name
|
503
510
|
$name =~ tr/-_a-zA-Z0-9//dc; # remove illegal characters (also hex code wide chars)
|
504
511
|
AddTagToTable($table, $tag, { Name => $name });
|
505
|
-
$et->VPrint(0, " [adding $tag '$name']\n");
|
512
|
+
$et->VPrint(0, " [adding $tag '${name}']\n");
|
506
513
|
}
|
507
514
|
$val = $et->Decode($val, $$et{HTMLCharset}) if $$et{HTMLCharset};
|
508
515
|
$et->HandleTag($table, $tag, UnescapeXML($val));
|
@@ -518,7 +525,7 @@ sub ProcessHTML($$)
|
|
518
525
|
my $info = { Name => $name, Groups => { 0 => 'HTML' } };
|
519
526
|
$info->{Groups}->{1} = ($grp eq 'http-equiv' ? 'HTTP-equiv' : "HTML-$grp") if $grp;
|
520
527
|
AddTagToTable($table, $tag, $info);
|
521
|
-
$et->VPrint(0, " [adding $tag '$tagName']\n");
|
528
|
+
$et->VPrint(0, " [adding $tag '${tagName}']\n");
|
522
529
|
}
|
523
530
|
# recode if necessary
|
524
531
|
$val = $et->Decode($val, $$et{HTMLCharset}) if $$et{HTMLCharset};
|
@@ -548,7 +555,7 @@ meta information from HTML documents.
|
|
548
555
|
|
549
556
|
=head1 AUTHOR
|
550
557
|
|
551
|
-
Copyright 2003-
|
558
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
552
559
|
|
553
560
|
This library is free software; you can redistribute it and/or modify it
|
554
561
|
under the same terms as Perl itself.
|
@@ -13,9 +13,9 @@ use vars qw($VERSION);
|
|
13
13
|
use Image::ExifTool; # only for FinishTiffDump()
|
14
14
|
use Image::ExifTool::HTML qw(EscapeHTML);
|
15
15
|
|
16
|
-
$VERSION = '1.
|
16
|
+
$VERSION = '1.37';
|
17
17
|
|
18
|
-
sub DumpTable(
|
18
|
+
sub DumpTable($$$;$$$$$$);
|
19
19
|
sub Open($$$;@);
|
20
20
|
sub Write($@);
|
21
21
|
|
@@ -32,6 +32,7 @@ _END_PART_1_
|
|
32
32
|
# Note: Don't change font-weight style because it can affect line height
|
33
33
|
my $htmlHeader2 = <<_END_PART_2_;
|
34
34
|
</title>
|
35
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
35
36
|
<style type="text/css">
|
36
37
|
<!--
|
37
38
|
/* character style ID's */
|
@@ -111,7 +112,6 @@ function GetElementsByClass(classname, tagname) {
|
|
111
112
|
}
|
112
113
|
}
|
113
114
|
}
|
114
|
-
delete list;
|
115
115
|
return found;
|
116
116
|
}
|
117
117
|
|
@@ -171,7 +171,9 @@ function high(e,on) {
|
|
171
171
|
// un-highlight current objects
|
172
172
|
if (hlist) {
|
173
173
|
for (var i=0; i<hlist.length; ++i) {
|
174
|
-
hlist[i].
|
174
|
+
for (var j=0; j<hlist[i].length; ++j) {
|
175
|
+
hlist[i][j].style.background = 'transparent';
|
176
|
+
}
|
175
177
|
}
|
176
178
|
hlist = null;
|
177
179
|
}
|
@@ -190,20 +192,25 @@ function high(e,on) {
|
|
190
192
|
}
|
191
193
|
}
|
192
194
|
// highlight anchor elements with the same name
|
193
|
-
hlist =
|
195
|
+
hlist = new Array;
|
196
|
+
hlist.push(document.getElementsByName(targ.name));
|
197
|
+
// is this an IFD pointer?
|
198
|
+
var pos = targ.className.indexOf('Offset_');
|
199
|
+
if (pos > 0) {
|
200
|
+
// add elements from this IFD to our highlight list
|
201
|
+
hlist.push(document.getElementsByClassName(targ.className.substr(pos+7)));
|
202
|
+
}
|
194
203
|
// use class name to highlight span elements if necessary
|
195
204
|
for (var i=0; i<mspan.length; ++i) {
|
196
205
|
if (mspan[i] != targ.name) continue;
|
197
|
-
|
198
|
-
|
199
|
-
for (var j=0; j<hlist.length; ++j) {
|
200
|
-
slist[slist.length] = hlist[j];
|
201
|
-
}
|
202
|
-
hlist = slist;
|
206
|
+
// add these span elements to our highlight list
|
207
|
+
hlist.push(GetElementsByClass(targ.name, 'span'));
|
203
208
|
break;
|
204
209
|
}
|
205
|
-
for (var
|
206
|
-
hlist[
|
210
|
+
for (var i=0; i<hlist.length; ++i) {
|
211
|
+
for (var j=0; j<hlist[i].length; ++j) {
|
212
|
+
hlist[i][j].style.background = '#ffcc99';
|
213
|
+
}
|
207
214
|
}
|
208
215
|
}
|
209
216
|
}
|
@@ -236,7 +243,7 @@ sub new
|
|
236
243
|
# Add information to dump
|
237
244
|
# Inputs: 0) HTML dump hash ref, 1) absolute offset in file, 2) data size,
|
238
245
|
# 3) comment string, 4) tool tip (or SAME to use previous tip),
|
239
|
-
# 5) bit flags (see below)
|
246
|
+
# 5) bit flags (see below), 6) IFD name
|
240
247
|
# Bits: 0x01 - print at start of line
|
241
248
|
# 0x02 - print red address
|
242
249
|
# 0x04 - maker notes data ('M'-class span)
|
@@ -244,9 +251,9 @@ sub new
|
|
244
251
|
# 0x10 - allow double references
|
245
252
|
# 0x100 - (reserved)
|
246
253
|
# Notes: Block will be shown in 'unused' color if comment string begins with '['
|
247
|
-
sub Add(
|
254
|
+
sub Add($$$$;$$)
|
248
255
|
{
|
249
|
-
my ($self, $start, $size, $msg, $tip, $flag) = @_;
|
256
|
+
my ($self, $start, $size, $msg, $tip, $flag, $ifd) = @_;
|
250
257
|
my $block = $$self{Block};
|
251
258
|
$$block{$start} or $$block{$start} = [ ];
|
252
259
|
my $htip;
|
@@ -263,7 +270,7 @@ sub Add($$$$;$)
|
|
263
270
|
$htip .= "<br>($size bytes)" unless $htip =~ /<br>Size:/;
|
264
271
|
++$self->{TipNum};
|
265
272
|
}
|
266
|
-
push @{$$block{$start}}, [ $size, $msg, $htip, $flag, $self->{TipNum} ];
|
273
|
+
push @{$$block{$start}}, [ $size, $msg, $htip, $flag, $self->{TipNum}, $ifd ];
|
267
274
|
}
|
268
275
|
|
269
276
|
#------------------------------------------------------------------------------
|
@@ -351,7 +358,7 @@ sub Print($$;$$$$$)
|
|
351
358
|
}
|
352
359
|
my $parms;
|
353
360
|
foreach $parms (@$parmList) {
|
354
|
-
my ($len, $msg, $tip, $flag, $tipNum) = @$parms;
|
361
|
+
my ($len, $msg, $tip, $flag, $tipNum, $ifd) = @$parms;
|
355
362
|
next unless $len > 0;
|
356
363
|
$flag = 0 unless defined $flag;
|
357
364
|
# generate same name for all blocks indexed by this tooltip
|
@@ -367,8 +374,10 @@ sub Print($$;$$$$$)
|
|
367
374
|
++$index;
|
368
375
|
}
|
369
376
|
if ($flag & 0x14) {
|
377
|
+
my $class = $flag & 0x04 ? "$name M" : $name;
|
378
|
+
$class .= " $ifd" if $ifd;
|
370
379
|
my %bkg = (
|
371
|
-
Class => $
|
380
|
+
Class => $class,
|
372
381
|
Start => $start - $dataPos,
|
373
382
|
End => $start - $dataPos + $len,
|
374
383
|
);
|
@@ -428,7 +437,7 @@ sub Print($$;$$$$$)
|
|
428
437
|
$flag |= 0x100 unless $flag & 0x01 or $nextFlag & 0x01;
|
429
438
|
}
|
430
439
|
$self->DumpTable($start-$dataPos, \$buff, $msg, $name,
|
431
|
-
$flag, $len, $pos-$dataPos);
|
440
|
+
$flag, $len, $pos-$dataPos, $ifd);
|
432
441
|
undef $buff;
|
433
442
|
$pos = $end if $pos < $end;
|
434
443
|
}
|
@@ -558,10 +567,10 @@ sub Open($$$;@)
|
|
558
567
|
# Dump a block of data in HTML table form
|
559
568
|
# Inputs: 0) HtmlDump object ref, 1) data position, 2) block pointer,
|
560
569
|
# 3) message, 4) object name, 5) flag, 6) full block length (actual
|
561
|
-
# data may be shorter), 7) data end position
|
562
|
-
sub DumpTable(
|
570
|
+
# data may be shorter), 7) data end position, 8) IFD name
|
571
|
+
sub DumpTable($$$;$$$$$$)
|
563
572
|
{
|
564
|
-
my ($self, $pos, $blockPt, $msg, $name, $flag, $len, $endPos) = @_;
|
573
|
+
my ($self, $pos, $blockPt, $msg, $name, $flag, $len, $endPos, $ifd) = @_;
|
565
574
|
$len = length $$blockPt unless defined $len;
|
566
575
|
$endPos = 0 unless $endPos;
|
567
576
|
my ($f0, $dblRef, $id);
|
@@ -588,7 +597,8 @@ sub DumpTable($$$;$$$$$)
|
|
588
597
|
}
|
589
598
|
++$id unless $dblRef;
|
590
599
|
}
|
591
|
-
$
|
600
|
+
my $class = $ifd ? "'$id $ifd'" : $id;
|
601
|
+
$name = "<a name=$name class=$class>";
|
592
602
|
$msg and $msg = "$name$msg</a>";
|
593
603
|
} else {
|
594
604
|
$name = '';
|
@@ -653,7 +663,8 @@ sub DumpTable($$$;$$$$$)
|
|
653
663
|
if ($dblRef and $p >= $endPos) {
|
654
664
|
$dblRef = 0;
|
655
665
|
++$id;
|
656
|
-
$
|
666
|
+
my $class = $ifd ? "'$id $ifd'" : $id;
|
667
|
+
$name =~ s/class=\w\b/class=$class/;
|
657
668
|
$f0 = '';
|
658
669
|
$self->Open('fgd', $f0, 0);
|
659
670
|
}
|
@@ -885,7 +896,7 @@ page.
|
|
885
896
|
|
886
897
|
=head1 AUTHOR
|
887
898
|
|
888
|
-
Copyright 2003-
|
899
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
889
900
|
|
890
901
|
This library is free software; you can redistribute it and/or modify it
|
891
902
|
under the same terms as Perl itself.
|
@@ -10,6 +10,7 @@
|
|
10
10
|
# 3) http://developer.apple.com/documentation/GraphicsImaging/Reference/ColorSync_Manager/ColorSync_Manager.pdf
|
11
11
|
# 4) http://www.color.org/privatetag2007-01.pdf
|
12
12
|
# 5) http://www.color.org/icc_specs2.xalter (approved revisions, 2010-07-16)
|
13
|
+
# 6) Eef Vreeland private communication
|
13
14
|
#
|
14
15
|
# Notes: The ICC profile information is different: the format of each
|
15
16
|
# tag is embedded in the information instead of in the directory
|
@@ -23,7 +24,7 @@ use strict;
|
|
23
24
|
use vars qw($VERSION);
|
24
25
|
use Image::ExifTool qw(:DataAccess :Utils);
|
25
26
|
|
26
|
-
$VERSION = '1.
|
27
|
+
$VERSION = '1.35';
|
27
28
|
|
28
29
|
sub ProcessICC($$);
|
29
30
|
sub ProcessICC_Profile($$$);
|
@@ -52,6 +53,283 @@ my %profileClass = (
|
|
52
53
|
nmcl => 'NamedColor Profile',
|
53
54
|
nkpf => 'Nikon Input Device Profile (NON-STANDARD!)', # (written by Nikon utilities)
|
54
55
|
);
|
56
|
+
my %manuSig = ( #6
|
57
|
+
'NONE' => 'none',
|
58
|
+
'none' => 'none', #PH
|
59
|
+
'' => '', #PH
|
60
|
+
'4d2p' => 'Erdt Systems GmbH & Co KG',
|
61
|
+
'AAMA' => 'Aamazing Technologies, Inc.',
|
62
|
+
'ACER' => 'Acer Peripherals',
|
63
|
+
'ACLT' => 'Acolyte Color Research',
|
64
|
+
'ACTI' => 'Actix Sytems, Inc.',
|
65
|
+
'ADAR' => 'Adara Technology, Inc.',
|
66
|
+
'ADBE' => 'Adobe Systems Inc.',
|
67
|
+
'ADI ' => 'ADI Systems, Inc.',
|
68
|
+
'AGFA' => 'Agfa Graphics N.V.',
|
69
|
+
'ALMD' => 'Alps Electric USA, Inc.',
|
70
|
+
'ALPS' => 'Alps Electric USA, Inc.',
|
71
|
+
'ALWN' => 'Alwan Color Expertise',
|
72
|
+
'AMTI' => 'Amiable Technologies, Inc.',
|
73
|
+
'AOC ' => 'AOC International (U.S.A), Ltd.',
|
74
|
+
'APAG' => 'Apago',
|
75
|
+
'APPL' => 'Apple Computer Inc.',
|
76
|
+
'appl' => 'Apple Computer Inc.',
|
77
|
+
'AST ' => 'AST',
|
78
|
+
'AT&T' => 'AT&T Computer Systems',
|
79
|
+
'BAEL' => 'BARBIERI electronic',
|
80
|
+
'berg' => 'bergdesign incorporated',
|
81
|
+
'bICC' => 'basICColor GmbH',
|
82
|
+
'BRCO' => 'Barco NV',
|
83
|
+
'BRKP' => 'Breakpoint Pty Limited',
|
84
|
+
'BROT' => 'Brother Industries, LTD',
|
85
|
+
'BULL' => 'Bull',
|
86
|
+
'BUS ' => 'Bus Computer Systems',
|
87
|
+
'C-IT' => 'C-Itoh',
|
88
|
+
'CAMR' => 'Intel Corporation',
|
89
|
+
'CANO' => 'Canon, Inc. (Canon Development Americas, Inc.)',
|
90
|
+
'CARR' => 'Carroll Touch',
|
91
|
+
'CASI' => 'Casio Computer Co., Ltd.',
|
92
|
+
'CBUS' => 'Colorbus PL',
|
93
|
+
'CEL ' => 'Crossfield',
|
94
|
+
'CELx' => 'Crossfield',
|
95
|
+
'ceyd' => 'Integrated Color Solutions, Inc.',
|
96
|
+
'CGS ' => 'CGS Publishing Technologies International GmbH',
|
97
|
+
'CHM ' => 'Rochester Robotics',
|
98
|
+
'CIGL' => 'Colour Imaging Group, London',
|
99
|
+
'CITI' => 'Citizen',
|
100
|
+
'CL00' => 'Candela, Ltd.',
|
101
|
+
'CLIQ' => 'Color IQ',
|
102
|
+
'clsp' => 'MacDermid ColorSpan, Inc.',
|
103
|
+
'CMCO' => 'Chromaco, Inc.',
|
104
|
+
'CMiX' => 'CHROMiX',
|
105
|
+
'COLO' => 'Colorgraphic Communications Corporation',
|
106
|
+
'COMP' => 'COMPAQ Computer Corporation',
|
107
|
+
'COMp' => 'Compeq USA/Focus Technology',
|
108
|
+
'CONR' => 'Conrac Display Products',
|
109
|
+
'CORD' => 'Cordata Technologies, Inc.',
|
110
|
+
'CPQ ' => 'Compaq Computer Corporation',
|
111
|
+
'CPRO' => 'ColorPro',
|
112
|
+
'CRN ' => 'Cornerstone',
|
113
|
+
'CTX ' => 'CTX International, Inc.',
|
114
|
+
'CVIS' => 'ColorVision',
|
115
|
+
'CWC ' => 'Fujitsu Laboratories, Ltd.',
|
116
|
+
'DARI' => 'Darius Technology, Ltd.',
|
117
|
+
'DATA' => 'Dataproducts',
|
118
|
+
'DCP ' => 'Dry Creek Photo',
|
119
|
+
'DCRC' => 'Digital Contents Resource Center, Chung-Ang University',
|
120
|
+
'DELL' => 'Dell Computer Corporation',
|
121
|
+
'DIC ' => 'Dainippon Ink and Chemicals',
|
122
|
+
'DICO' => 'Diconix',
|
123
|
+
'DIGI' => 'Digital',
|
124
|
+
'DL&C' => 'Digital Light & Color',
|
125
|
+
'DPLG' => 'Doppelganger, LLC',
|
126
|
+
'DS ' => 'Dainippon Screen',
|
127
|
+
'ds ' => 'Dainippon Screen',
|
128
|
+
'DSOL' => 'DOOSOL',
|
129
|
+
'DUPN' => 'DuPont',
|
130
|
+
'dupn' => 'DuPont',
|
131
|
+
'Eizo' => 'EIZO NANAO CORPORATION',
|
132
|
+
'EPSO' => 'Epson',
|
133
|
+
'ESKO' => 'Esko-Graphics',
|
134
|
+
'ETRI' => 'Electronics and Telecommunications Research Institute',
|
135
|
+
'EVER' => 'Everex Systems, Inc.',
|
136
|
+
'EXAC' => 'ExactCODE GmbH',
|
137
|
+
'FALC' => 'Falco Data Products, Inc.',
|
138
|
+
'FF ' => 'Fuji Photo Film Co.,LTD',
|
139
|
+
'FFEI' => 'FujiFilm Electronic Imaging, Ltd.',
|
140
|
+
'ffei' => 'FujiFilm Electronic Imaging, Ltd.',
|
141
|
+
'flux' => 'FluxData Corporation',
|
142
|
+
'FNRD' => 'fnord software',
|
143
|
+
'FORA' => 'Fora, Inc.',
|
144
|
+
'FORE' => 'Forefront Technology Corporation',
|
145
|
+
'FP ' => 'Fujitsu',
|
146
|
+
'FPA ' => 'WayTech Development, Inc.',
|
147
|
+
'FUJI' => 'Fujitsu',
|
148
|
+
'FX ' => 'Fuji Xerox Co., Ltd.',
|
149
|
+
'GCC ' => 'GCC Technologies, Inc.',
|
150
|
+
'GGSL' => 'Global Graphics Software Limited',
|
151
|
+
'GMB ' => 'Gretagmacbeth',
|
152
|
+
'GMG ' => 'GMG GmbH & Co. KG',
|
153
|
+
'GOLD' => 'GoldStar Technology, Inc.',
|
154
|
+
'GOOG' => 'Google', #PH
|
155
|
+
'GPRT' => 'Giantprint Pty Ltd',
|
156
|
+
'GTMB' => 'Gretagmacbeth',
|
157
|
+
'GVC ' => 'WayTech Development, Inc.',
|
158
|
+
'GW2K' => 'Sony Corporation',
|
159
|
+
'HCI ' => 'HCI',
|
160
|
+
'HDM ' => 'Heidelberger Druckmaschinen AG',
|
161
|
+
'HERM' => 'Hermes',
|
162
|
+
'HITA' => 'Hitachi America, Ltd.',
|
163
|
+
'HiTi' => 'HiTi Digital, Inc.',
|
164
|
+
'HP ' => 'Hewlett-Packard',
|
165
|
+
'HTC ' => 'Hitachi, Ltd.',
|
166
|
+
'IBM ' => 'IBM Corporation',
|
167
|
+
'IDNT' => 'Scitex Corporation, Ltd.',
|
168
|
+
'Idnt' => 'Scitex Corporation, Ltd.',
|
169
|
+
'IEC ' => 'Hewlett-Packard',
|
170
|
+
'IIYA' => 'Iiyama North America, Inc.',
|
171
|
+
'IKEG' => 'Ikegami Electronics, Inc.',
|
172
|
+
'IMAG' => 'Image Systems Corporation',
|
173
|
+
'IMI ' => 'Ingram Micro, Inc.',
|
174
|
+
'Inca' => 'Inca Digital Printers Ltd.',
|
175
|
+
'INTC' => 'Intel Corporation',
|
176
|
+
'INTL' => 'N/A (INTL)',
|
177
|
+
'INTR' => 'Intra Electronics USA, Inc.',
|
178
|
+
'IOCO' => 'Iocomm International Technology Corporation',
|
179
|
+
'IPS ' => 'InfoPrint Solutions Company',
|
180
|
+
'IRIS' => 'Scitex Corporation, Ltd.',
|
181
|
+
'Iris' => 'Scitex Corporation, Ltd.',
|
182
|
+
'iris' => 'Scitex Corporation, Ltd.',
|
183
|
+
'ISL ' => 'Ichikawa Soft Laboratory',
|
184
|
+
'ITNL' => 'N/A (ITNL)',
|
185
|
+
'IVM ' => 'IVM',
|
186
|
+
'IWAT' => 'Iwatsu Electric Co., Ltd.',
|
187
|
+
'JPEG' => 'Joint Photographic Experts Group', #PH
|
188
|
+
'JSFT' => 'Jetsoft Development',
|
189
|
+
'JVC ' => 'JVC Information Products Co.',
|
190
|
+
'KART' => 'Scitex Corporation, Ltd.',
|
191
|
+
'Kart' => 'Scitex Corporation, Ltd.',
|
192
|
+
'kart' => 'Scitex Corporation, Ltd.',
|
193
|
+
'KFC ' => 'KFC Computek Components Corporation',
|
194
|
+
'KLH ' => 'KLH Computers',
|
195
|
+
'KMHD' => 'Konica Minolta Holdings, Inc.',
|
196
|
+
'KNCA' => 'Konica Corporation',
|
197
|
+
'KODA' => 'Kodak',
|
198
|
+
'KYOC' => 'Kyocera',
|
199
|
+
'LCAG' => 'Leica Camera AG',
|
200
|
+
'LCCD' => 'Leeds Colour',
|
201
|
+
'lcms' => 'Little CMS', #NealKrawetz
|
202
|
+
'LDAK' => 'Left Dakota',
|
203
|
+
'LEAD' => 'Leading Technology, Inc.',
|
204
|
+
'Leaf' => 'Leaf', #PH
|
205
|
+
'LEXM' => 'Lexmark International, Inc.',
|
206
|
+
'LINK' => 'Link Computer, Inc.',
|
207
|
+
'LINO' => 'Linotronic',
|
208
|
+
'Lino' => 'Linotronic', #PH (NC)
|
209
|
+
'lino' => 'Linotronic', #PH (NC)
|
210
|
+
'LITE' => 'Lite-On, Inc.',
|
211
|
+
'MAGC' => 'Mag Computronic (USA) Inc.',
|
212
|
+
'MAGI' => 'MAG Innovision, Inc.',
|
213
|
+
'MANN' => 'Mannesmann',
|
214
|
+
'MICN' => 'Micron Technology, Inc.',
|
215
|
+
'MICR' => 'Microtek',
|
216
|
+
'MICV' => 'Microvitec, Inc.',
|
217
|
+
'MINO' => 'Minolta',
|
218
|
+
'MITS' => 'Mitsubishi Electronics America, Inc.',
|
219
|
+
'MITs' => 'Mitsuba Corporation',
|
220
|
+
'Mits' => 'Mitsubishi Electric Corporation Kyoto Works',
|
221
|
+
'MNLT' => 'Minolta',
|
222
|
+
'MODG' => 'Modgraph, Inc.',
|
223
|
+
'MONI' => 'Monitronix, Inc.',
|
224
|
+
'MONS' => 'Monaco Systems Inc.',
|
225
|
+
'MORS' => 'Morse Technology, Inc.',
|
226
|
+
'MOTI' => 'Motive Systems',
|
227
|
+
'MSFT' => 'Microsoft Corporation',
|
228
|
+
'MUTO' => 'MUTOH INDUSTRIES LTD.',
|
229
|
+
'NANA' => 'NANAO USA Corporation',
|
230
|
+
'NEC ' => 'NEC Corporation',
|
231
|
+
'NEXP' => 'NexPress Solutions LLC',
|
232
|
+
'NISS' => 'Nissei Sangyo America, Ltd.',
|
233
|
+
'NKON' => 'Nikon Corporation',
|
234
|
+
'ob4d' => 'Erdt Systems GmbH & Co KG',
|
235
|
+
'obic' => 'Medigraph GmbH',
|
236
|
+
'OCE ' => 'Oce Technologies B.V.',
|
237
|
+
'OCEC' => 'OceColor',
|
238
|
+
'OKI ' => 'Oki',
|
239
|
+
'OKID' => 'Okidata',
|
240
|
+
'OKIP' => 'Okidata',
|
241
|
+
'OLIV' => 'Olivetti',
|
242
|
+
'OLYM' => 'OLYMPUS OPTICAL CO., LTD',
|
243
|
+
'ONYX' => 'Onyx Graphics',
|
244
|
+
'OPTI' => 'Optiquest',
|
245
|
+
'PACK' => 'Packard Bell',
|
246
|
+
'PANA' => 'Matsushita Electric Industrial Co., Ltd.',
|
247
|
+
'PANT' => 'Pantone, Inc.',
|
248
|
+
'PBN ' => 'Packard Bell',
|
249
|
+
'PFU ' => 'PFU Limited',
|
250
|
+
'PHIL' => 'Philips Consumer Electronics Co.',
|
251
|
+
'PNTX' => 'HOYA Corporation PENTAX Imaging Systems Division',
|
252
|
+
'POne' => 'Phase One A/S',
|
253
|
+
'PREM' => 'Premier Computer Innovations',
|
254
|
+
'PRIN' => 'Princeton Graphic Systems',
|
255
|
+
'PRIP' => 'Princeton Publishing Labs',
|
256
|
+
'QLUX' => 'Hong Kong',
|
257
|
+
'QMS ' => 'QMS, Inc.',
|
258
|
+
'QPCD' => 'QPcard AB',
|
259
|
+
'QUAD' => 'QuadLaser',
|
260
|
+
'quby' => 'Qubyx Sarl',
|
261
|
+
'QUME' => 'Qume Corporation',
|
262
|
+
'RADI' => 'Radius, Inc.',
|
263
|
+
'RDDx' => 'Integrated Color Solutions, Inc.',
|
264
|
+
'RDG ' => 'Roland DG Corporation',
|
265
|
+
'REDM' => 'REDMS Group, Inc.',
|
266
|
+
'RELI' => 'Relisys',
|
267
|
+
'RGMS' => 'Rolf Gierling Multitools',
|
268
|
+
'RICO' => 'Ricoh Corporation',
|
269
|
+
'RNLD' => 'Edmund Ronald',
|
270
|
+
'ROYA' => 'Royal',
|
271
|
+
'RPC ' => 'Ricoh Printing Systems,Ltd.',
|
272
|
+
'RTL ' => 'Royal Information Electronics Co., Ltd.',
|
273
|
+
'SAMP' => 'Sampo Corporation of America',
|
274
|
+
'SAMS' => 'Samsung, Inc.',
|
275
|
+
'SANT' => 'Jaime Santana Pomares',
|
276
|
+
'SCIT' => 'Scitex Corporation, Ltd.',
|
277
|
+
'Scit' => 'Scitex Corporation, Ltd.',
|
278
|
+
'scit' => 'Scitex Corporation, Ltd.',
|
279
|
+
'SCRN' => 'Dainippon Screen',
|
280
|
+
'scrn' => 'Dainippon Screen',
|
281
|
+
'SDP ' => 'Scitex Corporation, Ltd.',
|
282
|
+
'Sdp ' => 'Scitex Corporation, Ltd.',
|
283
|
+
'sdp ' => 'Scitex Corporation, Ltd.',
|
284
|
+
'SEC ' => 'SAMSUNG ELECTRONICS CO.,LTD',
|
285
|
+
'SEIK' => 'Seiko Instruments U.S.A., Inc.',
|
286
|
+
'SEIk' => 'Seikosha',
|
287
|
+
'SGUY' => 'ScanGuy.com',
|
288
|
+
'SHAR' => 'Sharp Laboratories',
|
289
|
+
'SICC' => 'International Color Consortium',
|
290
|
+
'siwi' => 'SIWI GRAFIKA CORPORATION',
|
291
|
+
'SONY' => 'SONY Corporation',
|
292
|
+
'Sony' => 'Sony Corporation',
|
293
|
+
'SPCL' => 'SpectraCal',
|
294
|
+
'STAR' => 'Star',
|
295
|
+
'STC ' => 'Sampo Technology Corporation',
|
296
|
+
'TALO' => 'Talon Technology Corporation',
|
297
|
+
'TAND' => 'Tandy',
|
298
|
+
'TATU' => 'Tatung Co. of America, Inc.',
|
299
|
+
'TAXA' => 'TAXAN America, Inc.',
|
300
|
+
'TDS ' => 'Tokyo Denshi Sekei K.K.',
|
301
|
+
'TECO' => 'TECO Information Systems, Inc.',
|
302
|
+
'TEGR' => 'Tegra',
|
303
|
+
'TEKT' => 'Tektronix, Inc.',
|
304
|
+
'TI ' => 'Texas Instruments',
|
305
|
+
'TMKR' => 'TypeMaker Ltd.',
|
306
|
+
'TOSB' => 'TOSHIBA corp.',
|
307
|
+
'TOSH' => 'Toshiba, Inc.',
|
308
|
+
'TOTK' => 'TOTOKU ELECTRIC Co., LTD',
|
309
|
+
'TRIU' => 'Triumph',
|
310
|
+
'TSBT' => 'TOSHIBA TEC CORPORATION',
|
311
|
+
'TTX ' => 'TTX Computer Products, Inc.',
|
312
|
+
'TVM ' => 'TVM Professional Monitor Corporation',
|
313
|
+
'TW ' => 'TW Casper Corporation',
|
314
|
+
'ULSX' => 'Ulead Systems',
|
315
|
+
'UNIS' => 'Unisys',
|
316
|
+
'UTZF' => 'Utz Fehlau & Sohn',
|
317
|
+
'VARI' => 'Varityper',
|
318
|
+
'VIEW' => 'Viewsonic',
|
319
|
+
'VISL' => 'Visual communication',
|
320
|
+
'VIVO' => 'Vivo Mobile Communication Co., Ltd',
|
321
|
+
'WANG' => 'Wang',
|
322
|
+
'WLBR' => 'Wilbur Imaging',
|
323
|
+
'WTG2' => 'Ware To Go',
|
324
|
+
'WYSE' => 'WYSE Technology',
|
325
|
+
'XERX' => 'Xerox Corporation',
|
326
|
+
'XRIT' => 'X-Rite',
|
327
|
+
'yxym' => 'YxyMaster GmbH',
|
328
|
+
'Z123' => "Lavanya's test Company",
|
329
|
+
'Zebr' => 'Zebra Technologies Inc',
|
330
|
+
'ZRAN' => 'Zoran Corporation',
|
331
|
+
# also seen: " ",ACMS,KCMS,UCCM,etc2,SCTX
|
332
|
+
);
|
55
333
|
|
56
334
|
# ICC_Profile tag table
|
57
335
|
%Image::ExifTool::ICC_Profile::Main = (
|
@@ -85,7 +363,7 @@ my %profileClass = (
|
|
85
363
|
},
|
86
364
|
targ => {
|
87
365
|
Name => 'CharTarget',
|
88
|
-
ValueConv => 'length $val > 128 ? \$val : $val',
|
366
|
+
ValueConv => '$val=~s/\0.*//; length $val > 128 ? \$val : $val',
|
89
367
|
},
|
90
368
|
chad => 'ChromaticAdaptation',
|
91
369
|
chrm => {
|
@@ -256,6 +534,11 @@ my %profileClass = (
|
|
256
534
|
# Microsoft custom tags (ref http://msdn2.microsoft.com/en-us/library/ms536870.aspx)
|
257
535
|
MS00 => 'WCSProfiles',
|
258
536
|
|
537
|
+
psd3 => { #6
|
538
|
+
Name => 'PostScript2CRD3',
|
539
|
+
Binary => 1, # (NC)
|
540
|
+
},
|
541
|
+
|
259
542
|
# the following entry represents the ICC profile header, and doesn't
|
260
543
|
# exist as a tag in the directory. It is only in this table to provide
|
261
544
|
# a link so ExifTool can locate the header tags
|
@@ -274,7 +557,8 @@ my %profileClass = (
|
|
274
557
|
4 => {
|
275
558
|
Name => 'ProfileCMMType',
|
276
559
|
Format => 'string[4]',
|
277
|
-
|
560
|
+
SeparateTable => 'ManuSig',
|
561
|
+
PrintConv => \%manuSig,
|
278
562
|
},
|
279
563
|
8 => {
|
280
564
|
Name => 'ProfileVersion',
|
@@ -327,24 +611,13 @@ my %profileClass = (
|
|
327
611
|
48 => {
|
328
612
|
Name => 'DeviceManufacturer',
|
329
613
|
Format => 'string[4]',
|
330
|
-
|
331
|
-
|
332
|
-
# appl = Apple
|
333
|
-
# HP = HP
|
334
|
-
# CANO = Canon
|
335
|
-
# ISL = ?
|
336
|
-
# JPEG = JPEG
|
337
|
-
# Leaf = Leaf
|
338
|
-
# MNLT = ?
|
339
|
-
# MSFT = Microsoft
|
340
|
-
# POne = ?
|
341
|
-
# etc2 = ?
|
342
|
-
# lcms = ?
|
614
|
+
SeparateTable => 'ManuSig',
|
615
|
+
PrintConv => \%manuSig,
|
343
616
|
},
|
344
617
|
52 => {
|
345
618
|
Name => 'DeviceModel',
|
346
619
|
Format => 'string[4]',
|
347
|
-
# ROMM =
|
620
|
+
# ROMM = Reference Output Medium Metric
|
348
621
|
},
|
349
622
|
56 => {
|
350
623
|
Name => 'DeviceAttributes',
|
@@ -374,7 +647,8 @@ my %profileClass = (
|
|
374
647
|
80 => {
|
375
648
|
Name => 'ProfileCreator',
|
376
649
|
Format => 'string[4]',
|
377
|
-
|
650
|
+
SeparateTable => 'ManuSig',
|
651
|
+
PrintConv => \%manuSig,
|
378
652
|
},
|
379
653
|
84 => {
|
380
654
|
Name => 'ProfileID',
|
@@ -530,7 +804,7 @@ my %profileClass = (
|
|
530
804
|
);
|
531
805
|
|
532
806
|
#------------------------------------------------------------------------------
|
533
|
-
#
|
807
|
+
# Print ICC Profile ID in hex
|
534
808
|
# Inputs: 1) string of numbers
|
535
809
|
# Returns: string of hex digits
|
536
810
|
sub HexID($)
|
@@ -545,7 +819,7 @@ sub HexID($)
|
|
545
819
|
}
|
546
820
|
|
547
821
|
#------------------------------------------------------------------------------
|
548
|
-
#
|
822
|
+
# Get formatted value from ICC tag (which has the type embedded)
|
549
823
|
# Inputs: 0) data reference, 1) offset to tag data, 2) tag data size
|
550
824
|
# Returns: Formatted value or undefined if format not supported
|
551
825
|
# Notes: The following types are handled by BinaryTables:
|
@@ -906,7 +1180,7 @@ sub ProcessICC_Profile($$$)
|
|
906
1180
|
DataPt => $dataPt,
|
907
1181
|
Size => $strLen,
|
908
1182
|
Start => $valuePtr + $strPos,
|
909
|
-
Format => "type '$fmt'",
|
1183
|
+
Format => "type '${fmt}'",
|
910
1184
|
);
|
911
1185
|
}
|
912
1186
|
$et->Warn("Corrupted $$tagInfo{Name} data") if $i < $count;
|
@@ -923,7 +1197,7 @@ sub ProcessICC_Profile($$$)
|
|
923
1197
|
DataPt => $dataPt,
|
924
1198
|
Size => $size,
|
925
1199
|
Start => $valuePtr,
|
926
|
-
Format => "type '$fmt'",
|
1200
|
+
Format => "type '${fmt}'",
|
927
1201
|
);
|
928
1202
|
if ($subdir) {
|
929
1203
|
my $name = $$tagInfo{Name};
|
@@ -990,7 +1264,7 @@ data created on one device into another device's native color space.
|
|
990
1264
|
|
991
1265
|
=head1 AUTHOR
|
992
1266
|
|
993
|
-
Copyright 2003-
|
1267
|
+
Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
|
994
1268
|
|
995
1269
|
This library is free software; you can redistribute it and/or modify it
|
996
1270
|
under the same terms as Perl itself.
|