Class ImageReaderBase

java.lang.Object
javax.imageio.ImageReader
com.twelvemonkeys.imageio.ImageReaderBase
Direct Known Subclasses:
BMPImageReader, DCXImageReader, DDSImageReader, DIBImageReader, EXIFUtilities.DisplayHelper, HDRImageReader, ICNSImageReader, IFFImageReader, JPEGImageReader, PCXImageReader, PICTImageReader, PNMImageReader, PNTGImageReader, PSDImageReader, SGIImageReader, SVGImageReader, TGAImageReader, ThumbsDBImageReader, TIFFImageReader, WebPImageReader, WMFImageReader, XWDImageReader

public abstract class ImageReaderBase extends ImageReader
Abstract base class for image readers.
Version:
$Id: ImageReaderBase.java,v 1.0 Sep 20, 2007 5:28:37 PM haraldk Exp$
  • Field Details

  • Constructor Details

    • ImageReaderBase

      protected ImageReaderBase(ImageReaderSpi provider)
      Constructs an ImageReader and sets its originatingProvider field to the supplied value.

      Subclasses that make use of extensions should provide a constructor with signature (ImageReaderSpi, Object) in order to retrieve the extension object. If the extension object is unsuitable, an IllegalArgumentException should be thrown.

      Parameters:
      provider - the ImageReaderSpi that is invoking this constructor, or null.
  • Method Details

    • setInput

      public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
      Overrides setInput, to allow easy access to the input, in case it is an ImageInputStream.
      Overrides:
      setInput in class ImageReader
      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.
      Throws:
      IllegalArgumentException - if input is not an instance of one of the classes returned by the originating service provider's getInputTypes method, or is not an ImageInputStream.
      See Also:
    • dispose

      public void dispose()
      Overrides:
      dispose in class ImageReader
    • reset

      public void reset()
      Overrides:
      reset in class ImageReader
    • resetMembers

      protected abstract void resetMembers()
      Resets all member variables. This method is by default invoked from:
    • getImageMetadata

      public IIOMetadata getImageMetadata(int imageIndex) throws IOException
      Default implementation that always returns null.
      Specified by:
      getImageMetadata in class ImageReader
      Parameters:
      imageIndex - ignored, unless overridden
      Returns:
      null, unless overridden
      Throws:
      IOException - never, unless overridden.
    • getStreamMetadata

      public IIOMetadata getStreamMetadata() throws IOException
      Default implementation that always returns null.
      Specified by:
      getStreamMetadata in class ImageReader
      Returns:
      null, unless overridden
      Throws:
      IOException - never, unless overridden.
    • getNumImages

      public int getNumImages(boolean allowSearch) throws IOException
      Default implementation that always returns 1.
      Specified by:
      getNumImages in class ImageReader
      Parameters:
      allowSearch - ignored, unless overridden
      Returns:
      1, unless overridden
      Throws:
      IOException - never, unless overridden
    • checkBounds

      protected void checkBounds(int index) throws IOException
      Convenience method to make sure image index is within bounds.
      Parameters:
      index - the image index
      Throws:
      IOException - if an error occurs during reading
      IndexOutOfBoundsException - if not minIndex <= index < numImages
    • assertInput

      protected void assertInput()
      Makes sure input is set.
      Throws:
      IllegalStateException - if getInput() == null.
    • getDestination

      public static BufferedImage getDestination(ImageReadParam param, Iterator<ImageTypeSpecifier> types, int width, int height) throws IIOException
      Returns the BufferedImage to which decoded pixel data should be written.

      As ImageReader.getDestination(ImageReadParam, Iterator, int, int) but tests if the explicit destination image (if set) is valid according to the ImageTypeSpecifiers given in types.

      Parameters:
      param - an ImageReadParam to be used to get the destination image or image type, or null.
      types - an Iterator of ImageTypeSpecifiers indicating the legal image types, with the default first.
      width - the true width of the image or tile begin decoded.
      height - the true width of the image or tile being decoded.
      Returns:
      the BufferedImage to which decoded pixel data should be written.
      Throws:
      IIOException - if the ImageTypeSpecifier or BufferedImage specified by param does not match any of the legal ones from types.
      IllegalArgumentException - if types is null or empty, or if an object not of type ImageTypeSpecifier is retrieved from it. Or, if the resulting image would have a width or height less than 1, or if the product of width and height of the resulting image is greater than Integer.MAX_VALUE.
    • fakeAOI

      protected static BufferedImage fakeAOI(BufferedImage pImage, ImageReadParam pParam)
      Utility method for getting the area of interest (AOI) of an image. The AOI is defined by the IIOParam.setSourceRegion(java.awt.Rectangle) method.

      Note: If it is possible for the reader to read the AOI directly, such a method should be used instead, for efficiency.

      Parameters:
      pImage - the image to get AOI from
      pParam - the param optionally specifying the AOI
      Returns:
      a BufferedImage containing the area of interest (source region), or the original image, if no source region was set, or pParam was null
    • fakeSubsampling

      protected static Image fakeSubsampling(Image pImage, ImageReadParam pParam)
      Utility method for getting the subsampled image. The subsampling is defined by the IIOParam.setSourceSubsampling(int, int, int, int) method.

      NOTE: This method does not take the subsampling offsets into consideration.

      Note: If it is possible for the reader to subsample directly, such a method should be used instead, for efficiency.

      Parameters:
      pImage - the image to subsample
      pParam - the param optionally specifying subsampling
      Returns:
      an Image containing the subsampled image, or the original image, if no subsampling was specified, or pParam was null
    • hasExplicitDestination

      protected static boolean hasExplicitDestination(ImageReadParam pParam)
      Tests if param has explicit destination.
      Parameters:
      pParam - the image read parameter, or null
      Returns:
      true if pParam is non-null and either its getDestination, getDestinationType returns a non-null value, or getDestinationOffset returns a Point that is not the upper left corner (0, 0).
    • main

      public static void main(String[] pArgs) throws IOException
      Throws:
      IOException
    • showIt

      protected static void showIt(BufferedImage pImage, String pTitle)