org.apache.xmlgraphics.image.codec.util

## Class ImageDecoderImpl

- java.lang.Object
- - org.apache.xmlgraphics.image.codec.util.ImageDecoderImpl

- All Implemented Interfaces:
    ImageDecoder
  Direct Known Subclasses:
    PNGImageDecoder, TIFFImageDecoder

      public abstract class ImageDecoderImpl
      extends java.lang.Object
      implements ImageDecoder

  A partial implementation of the `ImageDecoder` interface useful for subclassing.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected SeekableStream` | `input` The `SeekableStream` associcted with this `ImageEncoder`.
    `protected ImageDecodeParam` | `param` The `ImageDecodeParam` object associated with this `ImageEncoder`.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ImageDecoderImpl(java.io.InputStream input, ImageDecodeParam param)` Constructs an `ImageDecoderImpl` with a given `InputStream` and `ImageDecodeParam` instance.
    `ImageDecoderImpl(SeekableStream input, ImageDecodeParam param)` Constructs an `ImageDecoderImpl` with a given `SeekableStream` and `ImageDecodeParam` instance.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.awt.image.Raster` | `decodeAsRaster()` Returns a `Raster` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`.
    `java.awt.image.Raster` | `decodeAsRaster(int page)` Returns a `Raster` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`.
    `java.awt.image.RenderedImage` | `decodeAsRenderedImage()` Returns a `RenderedImage` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`.
    `abstract java.awt.image.RenderedImage` | `decodeAsRenderedImage(int page)` Returns a `RenderedImage` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`.
    `SeekableStream` | `getInputStream()` Returns the `SeekableStream` associated with this `ImageDecoder`.
    `int` | `getNumPages()` Returns the number of pages present in the current stream.
    `ImageDecodeParam` | `getParam()` Returns the current parameters as an instance of the `ImageDecodeParam` interface.
    `void` | `setParam(ImageDecodeParam param)` Sets the current parameters to an instance of the `ImageDecodeParam` interface.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### input

          protected SeekableStream input

      The `SeekableStream` associcted with this `ImageEncoder`.

    - #### param

          protected ImageDecodeParam param

      The `ImageDecodeParam` object associated with this `ImageEncoder`.

  - ### Constructor Detail

    - #### ImageDecoderImpl

          public ImageDecoderImpl(SeekableStream input,
                                  ImageDecodeParam param)

      Constructs an `ImageDecoderImpl` with a given `SeekableStream` and `ImageDecodeParam` instance.

    - #### ImageDecoderImpl

          public ImageDecoderImpl(java.io.InputStream input,
                                  ImageDecodeParam param)

      Constructs an `ImageDecoderImpl` with a given `InputStream` and `ImageDecodeParam` instance. The `input` parameter will be used to construct a `ForwardSeekableStream`; if the ability to seek backwards is required, the caller should construct an instance of `SeekableStream` and make use of the other contructor.

  - ### Method Detail

    - #### getParam

          public ImageDecodeParam getParam()

      Returns the current parameters as an instance of the `ImageDecodeParam` interface. Concrete implementations of this interface will return corresponding concrete implementations of the `ImageDecodeParam` interface. For example, a `JPEGImageDecoder` will return an instance of `JPEGDecodeParam`.
      Specified by:
        `getParam` in interface `ImageDecoder`

    - #### setParam

          public void setParam(ImageDecodeParam param)

      Sets the current parameters to an instance of the `ImageDecodeParam` interface. Concrete implementations of `ImageDecoder` may throw a `RuntimeException` if the `param` argument is not an instance of the appropriate subclass or subinterface. For example, a `JPEGImageDecoder` will expect `param` to be an instance of `JPEGDecodeParam`.
      Specified by:
        `setParam` in interface `ImageDecoder`

    - #### getInputStream

          public SeekableStream getInputStream()

      Returns the `SeekableStream` associated with this `ImageDecoder`.
      Specified by:
        `getInputStream` in interface `ImageDecoder`

    - #### getNumPages

          public int getNumPages()
                          throws java.io.IOException

      Returns the number of pages present in the current stream. By default, the return value is 1. Subclasses that deal with multi-page formats should override this method.
      Specified by:
        `getNumPages` in interface `ImageDecoder`
      Throws:
        `java.io.IOException`

    - #### decodeAsRaster

          public java.awt.image.Raster decodeAsRaster()
                                               throws java.io.IOException

      Returns a `Raster` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`. Only the first page of a multi-page image is decoded.
      Specified by:
        `decodeAsRaster` in interface `ImageDecoder`
      Throws:
        `java.io.IOException`

    - #### decodeAsRaster

          public java.awt.image.Raster decodeAsRaster(int page)
                                               throws java.io.IOException

      Returns a `Raster` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`. The given page of a multi-page image is decoded. If the page does not exist, an IOException will be thrown. Page numbering begins at zero.
      Specified by:
        `decodeAsRaster` in interface `ImageDecoder`
      Parameters:
        `page` - The page to be decoded.
      Throws:
        `java.io.IOException`

    - #### decodeAsRenderedImage

          public java.awt.image.RenderedImage decodeAsRenderedImage()
                                                             throws java.io.IOException

      Returns a `RenderedImage` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`. Only the first page of a multi-page image is decoded.
      Specified by:
        `decodeAsRenderedImage` in interface `ImageDecoder`
      Throws:
        `java.io.IOException`

    - #### decodeAsRenderedImage

          public abstract java.awt.image.RenderedImage decodeAsRenderedImage(int page)
                                                                      throws java.io.IOException

      Returns a `RenderedImage` that contains the decoded contents of the `SeekableStream` associated with this `ImageDecoder`. The given page of a multi-page image is decoded. If the page does not exist, an IOException will be thrown. Page numbering begins at zero.
      Specified by:
        `decodeAsRenderedImage` in interface `ImageDecoder`
      Parameters:
        `page` - The page to be decoded.
      Throws:
        `java.io.IOException`

Copyright 1999-2025 The Apache Software Foundation. All Rights Reserved.