Class GIFDecoder

All Implemented Interfaces:
Decoder, AutoCloseable

public final class GIFDecoder extends AbstractImageIODecoder implements Decoder
Implementation wrapping the default JDK Image I/O GIF ImageReader.
  • Constructor Details

    • GIFDecoder

      public GIFDecoder()
  • Method Details

    • canSeek

      public boolean canSeek()
      Specified by:
      canSeek in class AbstractImageIODecoder
    • detectFormat

      public Format detectFormat() throws IOException
      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 return Format.UNKNOWN.

      Specified by:
      detectFormat in interface Decoder
      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 the format 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 class AbstractImageIODecoder
    • getPreferredIIOImplementations

      protected String[] getPreferredIIOImplementations()
      Description copied from class: AbstractImageIODecoder
      N.B.: This method returns a list of strings rather than classes because some readers reside under the com.sun package, which is encapsulated.
      Specified by:
      getPreferredIIOImplementations in class AbstractImageIODecoder
      Returns:
      Preferred reader implementation classes, in order of highest to lowest priority, or an empty array if there is no preference.
    • getSupportedFormats

      public Set<Format> getSupportedFormats()
      Specified by:
      getSupportedFormats in interface Decoder
      Specified by:
      getSupportedFormats in class AbstractImageIODecoder
      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) throws IOException
      Description copied from class: AbstractImageIODecoder
      Expedient but not necessarily efficient method that reads a whole image (excluding subimages) in one shot.
      Specified by:
      decode in interface Decoder
      Overrides:
      decode in class AbstractImageIODecoder
      Throws:
      IOException
    • decode

      public BufferedImage decode(int imageIndex, Region region, double[] scales, ReductionFactor reductionFactor, double[] diffScales, Set<DecoderHint> decoderHints) throws IOException
      Description copied from class: AbstractImageIODecoder

      Attempts to read an image as efficiently as possible, exploiting its tile layout, if possible.

      This implementation is optimized for mono-resolution images.

      After reading, clients should check the decoder hints to see whether the returned image will require cropping.

      Specified by:
      decode in interface Decoder
      Overrides:
      decode in class AbstractImageIODecoder
      Parameters:
      imageIndex - Image index.
      region - May be null.
      scales - May be null.
      reductionFactor - The ReductionFactor.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).
      decoderHints - 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

      public Metadata readMetadata(int imageIndex) throws IOException
      Description copied from interface: Decoder
      Reads metadata pertaining to the image at the given index.
      Specified by:
      readMetadata in interface Decoder
      Specified by:
      readMetadata in class AbstractImageIODecoder
      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.