Class TIFFDecoder
- All Implemented Interfaces:
Decoder
,AutoCloseable
ImageReader
.-
Field Summary
Fields inherited from class is.galia.codec.AbstractImageIODecoder
iioReader
Fields inherited from class is.galia.codec.AbstractDecoder
arena, imageFile, inputStream
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
canSeek()
decode
(int imageIndex, Region region, double[] scales, ReductionFactor reductionFactor, double[] diffScales, Set<DecoderHint> hints) Override that is multi-resolution- and tile-aware.Decodes a sequence of images into memoryCalled after a source has been set.protected org.slf4j.Logger
int
Only a pyramidal TIFF will have more than one resolution; but there is no simple flag in a pyramidal TIFF that indicates that it's pyramidal.protected String[]
N.B.: This method returns a list of strings rather thanclasses
because some readers reside under thecom.sun
package, which is encapsulated.readMetadata
(int imageIndex) Reads metadata pertaining to the image at the given index.Methods inherited from class is.galia.codec.AbstractImageIODecoder
close, decode, dispose, getNumImages, getNumThumbnails, getSize, getThumbnailSize, getTileSize, handle, initializeInputStream, readMonoResolution, readSmallestUsableSubimage, readThumbnail
Methods inherited from class is.galia.codec.AbstractDecoder
setArena, setSource, setSource
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface is.galia.codec.Decoder
close, decode, getNumImages, getNumThumbnails, getSize, getThumbnailSize, getTileSize, readThumbnail, setArena, setSource, setSource
-
Constructor Details
-
TIFFDecoder
public TIFFDecoder()
-
-
Method Details
-
canSeek
public boolean canSeek()- Specified by:
canSeek
in classAbstractImageIODecoder
-
detectFormat
Description copied from interface:Decoder
Called after a source has been set.
If reading from a
Decoder.setSource(ImageInputStream)
stream}, the stream position is reset to 0 before returning.Unlike many of the other interface methods, implementations should not throw a
SourceFormatException
, and instead just returnFormat.UNKNOWN
.- Specified by:
detectFormat
in interfaceDecoder
- Returns:
- Format of the image to decode, if supported by the instance;
otherwise
Format.UNKNOWN
. The implementation must create the instance from scratch and not obtain it from theformat registry
, which may be empty at the time this method is invoked. - Throws:
IOException
- if there is some other error reading the image.
-
getLogger
protected org.slf4j.Logger getLogger()- Specified by:
getLogger
in classAbstractImageIODecoder
-
getNumResolutions
Only a pyramidal TIFF will have more than one resolution; but there is no simple flag in a pyramidal TIFF that indicates that it's pyramidal. For files that contain multiple images, this method checks the dimensions of each, and if they look like they comprise a pyramid based on their dimensions, returns their count. If not, it returns1
.- Specified by:
getNumResolutions
in interfaceDecoder
- Overrides:
getNumResolutions
in classAbstractImageIODecoder
- Returns:
1
.- Throws:
IOException
- if there is some other error reading the number of resolutions.
-
getPreferredIIOImplementations
Description copied from class:AbstractImageIODecoder
N.B.: This method returns a list of strings rather thanclasses
because some readers reside under thecom.sun
package, which is encapsulated.- Specified by:
getPreferredIIOImplementations
in classAbstractImageIODecoder
- Returns:
- Preferred reader implementation classes, in order of highest to lowest priority, or an empty array if there is no preference.
-
getSupportedFormats
- Specified by:
getSupportedFormats
in interfaceDecoder
- Specified by:
getSupportedFormats
in classAbstractImageIODecoder
- Returns:
- All formats supported by the implementation. The instances must
be created from scratch and not obtained from
the
format registry
, which may be empty at the time this method is invoked.
-
decode
public BufferedImage decode(int imageIndex, Region region, double[] scales, ReductionFactor reductionFactor, double[] diffScales, Set<DecoderHint> hints) throws IOException Override that is multi-resolution- and tile-aware.
After reading, clients should check the decoder hints to see whether the returned image will require additional scaling.
- Specified by:
decode
in interfaceDecoder
- Overrides:
decode
in classAbstractImageIODecoder
- Parameters:
imageIndex
- Image index.region
- May benull
.scales
- May benull
.reductionFactor
- TheReductionFactor.factor
property will be modified to reflect the reduction factor of the returned image.diffScales
- Two-element array that will be populated with the X and Y axis differential scales used during reading (if the decoder supports this).hints
- Will be populated by information returned from the reader.- Returns:
- Image best matching the given arguments.
- Throws:
IOException
- if there is some other error reading the image.
-
readMetadata
Description copied from interface:Decoder
Reads metadata pertaining to the image at the given index.- Specified by:
readMetadata
in interfaceDecoder
- Specified by:
readMetadata
in classAbstractImageIODecoder
- Returns:
- Metadata for the image at the given index. If there is none, an
EmptyMetadata
can be returned. - Throws:
IOException
- if there is some other error reading the metadata.
-
decodeSequence
Description copied from interface:Decoder
Decodes a sequence of images into memory
This method is meant to support short animations (e.g. animated GIF). It is not meant to support video formats, which could fill up all available memory and then some. These should simply throw an
UnsupportedOperationException
, which is what this default implementation does.- Specified by:
decodeSequence
in interfaceDecoder
- Overrides:
decodeSequence
in classAbstractImageIODecoder
- Throws:
IOException
- if there is some other error reading the sequence.
-