- Timestamp:
- 2021-02-26T19:39:51+13:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cpan/Image/ExifTool/Rawzor.pm
r24107 r34921 15 15 use Image::ExifTool qw(:DataAccess :Utils); 16 16 17 $VERSION = '1.0 1';17 $VERSION = '1.05'; 18 18 19 19 # currently support this version Rawzor images … … 52 52 sub ProcessRWZ($$) 53 53 { 54 my ($e xifTool, $dirInfo) = @_;54 my ($et, $dirInfo) = @_; 55 55 my $raf = $$dirInfo{RAF}; 56 56 my ($buff, $buf2); … … 72 72 my $origSize = Get64u(\$buff, 18); 73 73 my $tagTablePtr = GetTagTable('Image::ExifTool::Rawzor::Main'); 74 $e xifTool->HandleTag($tagTablePtr, RawzorRequiredVersion => $reqVers);75 $e xifTool->HandleTag($tagTablePtr, RawzorCreatorVersion => $creatorVers);76 $e xifTool->HandleTag($tagTablePtr, OriginalFileSize => $origSize);77 $e xifTool->HandleTag($tagTablePtr, CompressionFactor => $origSize/$rwzSize) if $rwzSize;74 $et->HandleTag($tagTablePtr, RawzorRequiredVersion => $reqVers); 75 $et->HandleTag($tagTablePtr, RawzorCreatorVersion => $creatorVers); 76 $et->HandleTag($tagTablePtr, OriginalFileSize => $origSize); 77 $et->HandleTag($tagTablePtr, CompressionFactor => $origSize/$rwzSize) if $rwzSize; 78 78 # check version numbers 79 79 if ($reqVers > $implementedRawzorVersion) { 80 $e xifTool->Warn("Version $reqVers Rawzor images not yet supported");80 $et->Warn("Version $reqVers Rawzor images not yet supported"); 81 81 return 1; 82 82 } 83 83 my $metaOffset = Get64u(\$buff, 38); 84 84 if ($metaOffset > 0x7fffffff) { 85 $e xifTool->Warn('Bad metadata offset');85 $et->Warn('Bad metadata offset'); 86 86 return 1; 87 87 } 88 88 # check for the ability to uncompress the information 89 unless (eval 'require IO::Uncompress::Bunzip2') {90 $e xifTool->Warn('Install IO::Compress::Bzip2 to decode Rawzor bzip2 compression');89 unless (eval { require IO::Uncompress::Bunzip2 }) { 90 $et->Warn('Install IO::Compress::Bzip2 to decode Rawzor bzip2 compression'); 91 91 return 1; 92 92 } … … 100 100 # 40 int32u - compressed metadata size 101 101 unless ($raf->Seek($metaOffset, 0) and $raf->Read($buff, 44) == 44) { 102 $e xifTool->Warn('Error reading metadata header');102 $et->Warn('Error reading metadata header'); 103 103 return 1; 104 104 } 105 105 my $metaSize = Get32u(\$buff, 36); 106 106 if ($metaSize) { 107 $$et{DontValidateImageData} = 1; 107 108 # validate the metadata header and read the compressed metadata 108 109 my $end0 = Get64u(\$buff, 0); … … 115 116 $end0 <= $pos1 and $pos1 <= $end1 and $end1 <= $pos2) 116 117 { 117 $e xifTool->Warn('Error reading image metadata');118 $et->Warn('Error reading image metadata'); 118 119 return 1; 119 120 } … … 122 123 length($buf2) eq $metaSize) 123 124 { 124 $e xifTool->Warn('Error uncompressing image metadata');125 $et->Warn('Error uncompressing image metadata'); 125 126 return 1; 126 127 } … … 133 134 134 135 # extract original information by calling ExtractInfo recursively 135 $e xifTool->ExtractInfo(\$buff, { ReEntry => 1 });136 $et->ExtractInfo(\$buff, { ReEntry => 1 }); 136 137 undef $buff; 137 138 } 138 139 # set OriginalFileType from FileType of original file 139 140 # then change FileType and MIMEType to indicate a Rawzor image 140 my $origFileType = $ exifTool->{VALUE}->{FileType};141 my $origFileType = $$et{VALUE}{FileType}; 141 142 if ($origFileType) { 142 $exifTool->HandleTag($tagTablePtr, OriginalFileType => $origFileType); 143 $exifTool->{VALUE}->{FileType} = 'RWZ'; 144 $exifTool->{VALUE}->{MIMEType} = 'image/x-rawzor'; 143 $et->HandleTag($tagTablePtr, OriginalFileType => $origFileType); 144 $et->OverrideFileType('RWZ'); 145 145 } else { 146 $e xifTool->HandleTag($tagTablePtr, OriginalFileType => 'Unknown');147 $e xifTool->SetFileType();146 $et->HandleTag($tagTablePtr, OriginalFileType => 'Unknown'); 147 $et->SetFileType(); 148 148 } 149 149 return 1; … … 169 169 =head1 AUTHOR 170 170 171 Copyright 2003-20 11, Phil Harvey (phil at owl.phy.queensu.ca)171 Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com) 172 172 173 173 This library is free software; you can redistribute it and/or modify it
Note:
See TracChangeset
for help on using the changeset viewer.