#FEATURE by exept
class: TIFFReader class
added: #hasValidImageHeader:
changed: #isValidImageFile:
--- a/TIFFReader.st Tue Sep 10 09:38:19 2019 +0200
+++ b/TIFFReader.st Tue Sep 10 09:38:36 2019 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1991 by Claus Gittinger
All Rights Reserved
@@ -21,22 +23,21 @@
tileByteCounts tileWidth tileLength sampleFormat minSampleValue
maxSampleValue subIfds decodeMetaTags loadFullResolutionImage
isDNGImage'
- classVariableNames:'Verbose COMPRESSION_NONE COMPRESSION_CCITTRLE
- COMPRESSION_CCITTFAX3 COMPRESSION_CCITTFAX4 COMPRESSION_LZW
- COMPRESSION_OJPEG COMPRESSION_JPEG COMPRESSION_ADOBE_DEFLATE
- COMPRESSION_JBIG_T85 COMPRESSION_JBIG_T43 COMPRESSION_NEXT
- COMPRESSION_CCITTRLEW COMPRESSION_PACKBITS
- COMPRESSION_THUNDERSCAN COMPRESSION_IT8CTPAD COMPRESSION_IT8LW
- COMPRESSION_IT8MP COMPRESSION_IT8BL COMPRESSION_PIXARFILM
- COMPRESSION_PIXARLOG COMPRESSION_DEFLATE COMPRESSION_DCS
- COMPRESSION_JBIG COMPRESSION_JPEG2000 COMPRESSION_NIKON_NEF
- COMPRESSION_JBIG2 COMPRESSION_NEXT_JPEG SAMPLEFORMAT_UINT
- SAMPLEFORMAT_INT SAMPLEFORMAT_IEEEFP SAMPLEFORMAT_VOID
- SAMPLEFORMAT_COMPLEXINT SAMPLEFORMAT_COMPLEXIEEEFP
- COMPRESSION_SGILOG COMPRESSION_SGILOG24 PLANARCONFIG_CONTIG
- PLANARCONFIG_SEPARATE FILETYPE_MASK_REDUCEDIMAGE
- FILETYPE_MASK_PAGE FILETYPE_MASK_MASK FILLORDER_MSB2LSB
- FILLORDER_LSB2MSB'
+ classVariableNames:'COMPRESSION_ADOBE_DEFLATE COMPRESSION_CCITTFAX3
+ COMPRESSION_CCITTFAX4 COMPRESSION_CCITTRLE COMPRESSION_CCITTRLEW
+ COMPRESSION_DCS COMPRESSION_DEFLATE COMPRESSION_IT8BL
+ COMPRESSION_IT8CTPAD COMPRESSION_IT8LW COMPRESSION_IT8MP
+ COMPRESSION_JBIG COMPRESSION_JBIG2 COMPRESSION_JBIG_T43
+ COMPRESSION_JBIG_T85 COMPRESSION_JPEG COMPRESSION_JPEG2000
+ COMPRESSION_LZW COMPRESSION_NEXT COMPRESSION_NEXT_JPEG
+ COMPRESSION_NIKON_NEF COMPRESSION_NONE COMPRESSION_OJPEG
+ COMPRESSION_PACKBITS COMPRESSION_PIXARFILM COMPRESSION_PIXARLOG
+ COMPRESSION_SGILOG COMPRESSION_SGILOG24 COMPRESSION_THUNDERSCAN
+ FILETYPE_MASK_MASK FILETYPE_MASK_PAGE FILETYPE_MASK_REDUCEDIMAGE
+ FILLORDER_LSB2MSB FILLORDER_MSB2LSB PLANARCONFIG_CONTIG
+ PLANARCONFIG_SEPARATE SAMPLEFORMAT_COMPLEXIEEEFP
+ SAMPLEFORMAT_COMPLEXINT SAMPLEFORMAT_IEEEFP SAMPLEFORMAT_INT
+ SAMPLEFORMAT_UINT SAMPLEFORMAT_VOID Verbose'
poolDictionaries:''
category:'Graphics-Images-Readers'
!
@@ -714,18 +715,16 @@
^ true
!
-isValidImageFile:aFileName
- "return true, if aFileName contains a TIFF image"
-
- |inStream bytes1_2 byte3 byte4 versionLow versionHi|
-
- inStream := self streamReadingFile:aFileName.
- inStream isNil ifTrue:[^ false].
-
- bytes1_2 := inStream next:2.
- byte3 := inStream nextByte.
- byte4 := inStream nextByte.
- inStream close.
+hasValidImageHeader:someHeaderBytes
+ "return true, if someHeaderBytes
+ (which does not need to be the whole data, but large enough
+ to detect the header) contains a valid TIFF image header"
+
+ |bytes1_2 byte3 byte4 versionLow versionHi|
+
+ bytes1_2 := (someHeaderBytes copyFrom:1 to:2) asString.
+ byte3 := someHeaderBytes at:3.
+ byte4 := someHeaderBytes at:4.
((bytes1_2 = 'II' "tiff") or:[bytes1_2 = 'PE' "mdi"]) ifTrue:[
"/ intel byte order (lsb)
@@ -745,6 +744,22 @@
^ false.
"Modified: / 26-08-2017 / 15:31:08 / cg"
+!
+
+isValidImageFile:aFileName
+ "return true, if aFileName contains a TIFF image"
+
+ |inStream bytes1To4|
+
+ inStream := self streamReadingFile:aFileName.
+ inStream isNil ifTrue:[^ false].
+
+ bytes1To4 := inStream nextBytes:4.
+ inStream close.
+
+ ^ self hasValidImageHeader:bytes1To4
+
+ "Modified: / 26-08-2017 / 15:31:08 / cg"
! !
!TIFFReader methodsFor:'accessing'!