public class

GIFImageReader

extends ImageReader
java.lang.Object
   ↳ javax.imageio.ImageReader
     ↳ com.sun.imageio.plugins.gif.GIFImageReader

Summary

[Expand]
Inherited Fields
From class javax.imageio.ImageReader
Public Constructors
GIFImageReader(ImageReaderSpi originatingProvider)
Public Methods
ImageReadParam getDefaultReadParam()
Returns a default ImageReadParam object appropriate for this format.
int getHeight(int imageIndex)
Returns the height in pixels of the given image within the input source.
IIOMetadata getImageMetadata(int imageIndex)
Returns an IIOMetadata object containing metadata associated with the given image, or null if the reader does not support reading metadata, is set to ignore metadata, or if no metadata is available.
Iterator getImageTypes(int imageIndex)
Returns an Iterator containing possible image types to which the given image may be decoded, in the form of ImageTypeSpecifierss.
int getNumImages(boolean allowSearch)
Returns the number of images, not including thumbnails, available from the current input source.
IIOMetadata getStreamMetadata()
Returns an IIOMetadata object representing the metadata associated with the input source as a whole (i.e., not associated with any particular image), or null if the reader does not support reading metadata, is set to ignore metadata, or if no metadata is available.
int getWidth(int imageIndex)
Returns the width in pixels of the given image within the input source.
void initializeStringTable(int[] prefix, byte[] suffix, byte[] initial, int[] length)
BufferedImage read(int imageIndex, ImageReadParam param)
Reads the image indexed by imageIndex and returns it as a complete BufferedImage, using a supplied ImageReadParam.
void reset()
Remove all settings including global settings such as Locales and listeners, as well as stream settings.
void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
Sets the input source to use to the given ImageInputStream or other Object.
[Expand]
Inherited Methods
From class javax.imageio.ImageReader
From class java.lang.Object

Public Constructors

public GIFImageReader (ImageReaderSpi originatingProvider)

Public Methods

public ImageReadParam getDefaultReadParam ()

Returns a default ImageReadParam object appropriate for this format. All subclasses should define a set of default values for all parameters and return them with this call. This method may be called before the input source is set.

The default implementation constructs and returns a new ImageReadParam object that does not allow source scaling (i.e., it returns new ImageReadParam().

Returns
  • an ImageReadParam object which may be used to control the decoding process using a set of default settings.

public int getHeight (int imageIndex)

Returns the height in pixels of the given image within the input source.

If the image can be rendered to a user-specified size, then this method returns the default height.

Parameters
imageIndex the index of the image to be queried.
Returns
  • the height of the image, as an int.
Throws
IIOException

public IIOMetadata getImageMetadata (int imageIndex)

Returns an IIOMetadata object containing metadata associated with the given image, or null if the reader does not support reading metadata, is set to ignore metadata, or if no metadata is available.

Parameters
imageIndex the index of the image whose metadata is to be retrieved.
Returns
  • an IIOMetadata object, or null.
Throws
IIOException

public Iterator getImageTypes (int imageIndex)

Returns an Iterator containing possible image types to which the given image may be decoded, in the form of ImageTypeSpecifierss. At least one legal image type will be returned.

The first element of the iterator should be the most "natural" type for decoding the image with as little loss as possible. For example, for a JPEG image the first entry should be an RGB image, even though the image data is stored internally in a YCbCr color space.

Parameters
imageIndex the index of the image to be retrieved.
Returns
  • an Iterator containing at least one ImageTypeSpecifier representing suggested image types for decoding the current given image.
Throws
IIOException

public int getNumImages (boolean allowSearch)

Returns the number of images, not including thumbnails, available from the current input source.

Note that some image formats (such as animated GIF) do not specify how many images are present in the stream. Thus determining the number of images will require the entire stream to be scanned and may require memory for buffering. If images are to be processed in order, it may be more efficient to simply call read with increasing indices until an IndexOutOfBoundsException is thrown to indicate that no more images are available. The allowSearch parameter may be set to false to indicate that an exhaustive search is not desired; the return value will be -1 to indicate that a search is necessary. If the input has been specified with seekForwardOnly set to true, this method throws an IllegalStateException if allowSearch is set to true.

Parameters
allowSearch if true, the true number of images will be returned even if a search is required. If false, the reader may return -1 without performing the search.
Returns
  • the number of images, as an int, or -1 if allowSearch is false and a search would be required.
Throws
IIOException

public IIOMetadata getStreamMetadata ()

Returns an IIOMetadata object representing the metadata associated with the input source as a whole (i.e., not associated with any particular image), or null if the reader does not support reading metadata, is set to ignore metadata, or if no metadata is available.

Returns
  • an IIOMetadata object, or null.
Throws
IIOException

public int getWidth (int imageIndex)

Returns the width in pixels of the given image within the input source.

If the image can be rendered to a user-specified size, then this method returns the default width.

Parameters
imageIndex the index of the image to be queried.
Returns
  • the width of the image, as an int.
Throws
IIOException

public void initializeStringTable (int[] prefix, byte[] suffix, byte[] initial, int[] length)

public BufferedImage read (int imageIndex, ImageReadParam param)

Reads the image indexed by imageIndex and returns it as a complete BufferedImage, using a supplied ImageReadParam.

The actual BufferedImage returned will be chosen using the algorithm defined by the getDestination method.

Any registered IIOReadProgressListener objects will be notified by calling their imageStarted method, followed by calls to their imageProgress method as the read progresses. Finally their imageComplete method will be called. IIOReadUpdateListener objects may be updated at other times during the read as pixels are decoded. Finally, IIOReadWarningListener objects will receive notification of any non-fatal warnings that occur during decoding.

The set of source bands to be read and destination bands to be written is determined by calling getSourceBands and getDestinationBands on the supplied ImageReadParam. If the lengths of the arrays returned by these methods differ, the set of source bands contains an index larger that the largest available source index, or the set of destination bands contains an index larger than the largest legal destination index, an IllegalArgumentException is thrown.

If the supplied ImageReadParam contains optional setting values not supported by this reader (e.g. source render size or any format-specific settings), they will be ignored.

Parameters
imageIndex the index of the image to be retrieved.
param an ImageReadParam used to control the reading process, or null.
Returns
  • the desired portion of the image as a BufferedImage.
Throws
IIOException

public void reset ()

Remove all settings including global settings such as Locales and listeners, as well as stream settings.

public void setInput (Object input, boolean seekForwardOnly, boolean ignoreMetadata)

Sets the input source to use to the given ImageInputStream or other Object. The input source must be set before any of the query or read methods are used. If input is null, any currently set input source will be removed. In any case, the value of minIndex will be initialized to 0.

The seekForwardOnly parameter controls whether the value returned by getMinIndex will be increased as each image (or thumbnail, or image metadata) is read. If seekForwardOnly is true, then a call to read(index) will throw an IndexOutOfBoundsException if index < this.minIndex; otherwise, the value of minIndex will be set to index. If seekForwardOnly is false, the value of minIndex will remain 0 regardless of any read operations.

The ignoreMetadata parameter, if set to true, allows the reader to disregard any metadata encountered during the read. Subsequent calls to the getStreamMetadata and getImageMetadata methods may return null, and an IIOImage returned from readAll may return null from their getMetadata method. Setting this parameter may allow the reader to work more efficiently. The reader may choose to disregard this setting and return metadata normally.

Subclasses should take care to remove any cached information based on the previous stream, such as header information or partially decoded image data.

Use of a general Object other than an ImageInputStream is intended for readers that interact directly with a capture device or imaging protocol. The set of legal classes is advertised by the reader's service provider's getInputTypes method; most readers will return a single-element array containing only ImageInputStream.class to indicate that they accept only an ImageInputStream.

The default implementation checks the input argument against the list returned by originatingProvider.getInputTypes() and fails if the argument is not an instance of one of the classes in the list. If the originating provider is set to null, the input is accepted only if it is an ImageInputStream.

Parameters
input the ImageInputStream or other Object to use for future decoding.
seekForwardOnly if true, images and metadata may only be read in ascending order from this input source.
ignoreMetadata if true, metadata may be ignored during reads.