Class RawImageInputStream

java.lang.Object
com.github.jaiimageio.stream.RawImageInputStream
All Implemented Interfaces:
Closeable, DataInput, AutoCloseable, ImageInputStream

public class RawImageInputStream extends Object implements ImageInputStream
This class defines the content of the ImageInputStream containing several raw images with the same image type: the number of the images, the image type, the offset for the first sample of each image, and the image size information.

ImageInputStream methods are not commented individually. These methods merely forward the call to the ImageInputStream specified when the RawImageInputStream is constructed.

  • Field Details

    • preDefinedColorSpaces

      private static final String[] preDefinedColorSpaces
    • preDefinedTypes

      private static final int[] preDefinedTypes
    • source

      private ImageInputStream source
      The wrapperred ImageInputStream.
    • type

      private ImageTypeSpecifier type
      The image type for all the images in the stream.
    • imageOffsets

      private long[] imageOffsets
      The position of the first sample for each image.
    • imageDimensions

      private Dimension[] imageDimensions
      The image sizes.
  • Constructor Details

    • RawImageInputStream

      public RawImageInputStream(ImageInputStream source, ImageTypeSpecifier type, long[] imageOffsets, Dimension[] imageDimensions)
      Constructor.
      Parameters:
      source - The ImageInputStream containing all the raw images.
      type - The ImageTypeSpecifier for all the images in the stream.
      imageOffsets - The position of the first sample for each image in the stream.
      imageDimensions - The image size for each image in the stream.
      Throws:
      IllegalArgumentException - If the sizes of imageOffsets and imageDimensions are different or if either array is null.
    • RawImageInputStream

      public RawImageInputStream(ImageInputStream source, SampleModel sampleModel, long[] imageOffsets, Dimension[] imageDimensions)
      Constructor.

      This constructor is the same as RawImageInputStream(ImageInputStream,ImageTypeSpecifier, long[],Dimension[]) except that a SampleModel is supplied instead of an ImageTypeSpecifier. This constructor creates a ColorModel for the supplied SampleModel and then creates an ImageTypeSpecifier.

      Suitable ColorModels are guaranteed to exist for all instances of ComponentSampleModel. For 1- and 3- banded SampleModels, the ColorModel will be opaque. For 2- and 4-banded SampleModels, the output will use alpha transparency which is not premultiplied. 1- and 2-banded data will use a grayscale ColorSpace, and 3- and 4-banded data a sRGB ColorSpace. Data with 5 or more bands will use a ColorSpace which satisfies compatibility constraints but is merely a placeholder and does not perform correct color conversion to and from the C.I.E. XYZ and sRGB color spaces.

      An instance of DirectColorModel will be created for instances of SinglePixelPackedSampleModel with no more than 4 bands.

      An instance of IndexColorModel will be created for instances of MultiPixelPackedSampleModel. The colormap will be a grayscale ramp with invalid input: '<'invalid input: '<' numberOfBits entries ranging from zero to at most 255.

      Parameters:
      source - The ImageInputStream containing all the raw images.
      sampleModel - The SampleModel for all the images in the stream.
      imageOffsets - The position of the first sample for each image in the stream.
      imageDimensions - The image size for each image in the stream.
      Throws:
      IllegalArgumentException - If sampleModel is null.
      IllegalArgumentException - If the sizes of imageOffsets and imageDimensions are different or if either array is null.
      IllegalArgumentException - If it is not possible to create a ColorModel from the supplied SampleModel.
    • RawImageInputStream

      public RawImageInputStream(ImageInputStream source, InputSource xmlSource) throws SAXException, IOException
      Constructor. The xmlSource must adhere to the following DTD:
      <!DOCTYPE "com_sun_media_imageio_stream_raw_1.0" [
      
        <!ELEMENT com_sun_media_imageio_stream_raw_1.0
          (byteOrder?, offset?, width?, height?,
           (ComponentSampleModel |
            MultiPixelPackedSampleModel |
            SinglePixelPackedSampleModel),
           (ComponentColorModel |
            DirectColorModel |
            IndexColorModel)?)>
      
          <!ATTLIST com_sun_media_imageio_stream_raw_1.0
            xmlns CDATA #FIXED "http://com/sun/media/imageio">
      
        <!ELEMENT byteOrder (#PCDATA)>
          <!-- Byte order of data stream -->
          <!-- Either "NETWORK" or "REVERSE" -->
          <!-- Data type: String -->
      
        <!ELEMENT offset (#PCDATA)>
          <!-- Byte offset to the image data in the stream -->
          <!-- Data type: long -->
      
        <!ELEMENT width (#PCDATA)>
          <!-- Image width; default value is SampleModel width -->
          <!-- Data type: int -->
      
        <!ELEMENT height (#PCDATA)>
          <!-- Image height; default value is SampleModel height -->
          <!-- Data type: int -->
      
        <!ELEMENT ComponentSampleModel EMPTY>
          <!-- ComponentSampleModel -->
      
          <!ATTLIST ComponentSampleModel
            dataType (BYTE | USHORT | SHORT | INT | FLOAT | DOUBLE) #REQUIRED
              <!-- Data type: String -->
            w              CDATA #REQUIRED
              <!-- SampleModel width -->
              <!-- Data type: int -->
            h              CDATA #REQUIRED
              <!-- SampleModel height -->
              <!-- Data type: int -->
            pixelStride    CDATA "1"
              <!-- SampleModel pixel stride -->
              <!-- Data type: int -->
            scanlineStride CDATA #REQUIRED
              <!-- SampleModel line stride -->
              <!-- Data type: int -->
            bankIndices    CDATA #IMPLIED
              <!-- SampleModel bank indices -->
              <!-- Data type: int array -->
            bandOffsets    CDATA #REQUIRED>
              <!-- SampleModel band offsets -->
              <!-- Data type: int array -->
      
        <!ELEMENT MultiPixelPackedSampleModel EMPTY>
          <!-- MultiPixelPackedSampleModel -->
      
          <!ATTLIST MultiPixelPackedSampleModel
            dataType       (BYTE | USHORT | INT) #REQUIRED
              <!-- Data type: String -->
            w              CDATA #REQUIRED
              <!-- SampleModel width -->
              <!-- Data type: int -->
            h              CDATA #REQUIRED
              <!-- SampleModel height -->
              <!-- Data type: int -->
            numberOfBits   CDATA #REQUIRED
              <!-- Number of bits per pixel -->
              <!-- Data type: int -->
            scanlineStride CDATA #REQUIRED
              <!-- SampleModel line stride -->
              <!-- Data type: int -->
            dataBitOffset  CDATA "0">
              <!-- Offset to first valid bit in a line -->
              <!-- Data type: int -->
      
        <!ELEMENT SinglePixelPackedSampleModel EMPTY>
          <!-- SinglePixelPackedSampleModel -->
      
          <!ATTLIST SinglePixelPackedSampleModel
            dataType       (BYTE | USHORT | INT) #REQUIRED
              <!-- Data type: String -->
            w              CDATA #REQUIRED
              <!-- SampleModel width -->
              <!-- Data type: int -->
            h              CDATA #REQUIRED
              <!-- SampleModel height -->
              <!-- Data type: int -->
            scanlineStride CDATA #REQUIRED
              <!-- SampleModel line stride -->
              <!-- Data type: int -->
            bitMasks       CDATA #REQUIRED>
              <!-- Masks indicating RGBA positions -->
              <!-- Data type: int -->
      
        <!ELEMENT ComponentColorModel EMPTY>
          <!-- ComponentColorModel -->
      
          <!ATTLIST ComponentColorModel
            colorSpace (CIEXYZ | GRAY | LINEAR_RGB | PYCC | sRGB | URL)
                           #REQUIRED
              <!-- A string representing a predefined ColorSpace or a URI
                      representing the location of any ICC profile from which
                      a ColorSpace may be created. -->
              <!-- Data type: String -->
            bits                 CDATA          #IMPLIED
              <!-- Number of bits per color component -->
              <!-- Data type: int -->
            hasAlpha             (true | false) #REQUIRED
              <!-- Whether an alpha channel is present -->
              <!-- Data type: boolean -->
            isAlphaPremultiplied (true | false) #REQUIRED
              <!-- Whether any alpha channel is premultiplied -->
              <!-- Data type: boolean -->
            transparency         (BITMASK | OPAQUE | TRANSLUCENT) #REQUIRED
              <!-- The type of transparency -->
            transferType (BYTE | USHORT | SHORT | INT | FLOAT | DOUBLE)
                           #REQUIRED>
              <!-- The data transfer type -->
      
        <!ELEMENT DirectColorModel EMPTY>
          <!-- DirectColorModel -->
      
          <!ATTLIST DirectColorModel
            colorSpace           (LINEAR_RGB | sRGB | URL) #IMPLIED
              <!-- A string representing a predefined RGB ColorSpace or a
                      URL representing the location of any ICC profile from
                      which an RGB ColorSpace may be created. -->
              <!-- Data type: String -->
            bits       CDATA #REQUIRED
              <!-- Number of bits per color component -->
              <!-- Data type: int -->
            rmask      CDATA #REQUIRED
              <!-- Bitmask of the red component -->
              <!-- Data type: int -->
            gmask      CDATA #REQUIRED
              <!-- Bitmask of the grenn component -->
              <!-- Data type: int -->
            bmask      CDATA #REQUIRED
              <!-- Bitmask of the blue component -->
              <!-- Data type: int -->
            amask      CDATA "0">
              <!-- Bitmask of the alpha component -->
              <!-- Data type: int -->
      
        <!ELEMENT IndexColorModel EMPTY>
          <!-- IndexColorModel -->
      
          <!ATTLIST IndexColorModel
            bits CDATA #REQUIRED
              <!-- Number of bits per color component -->
              <!-- Data type: int -->
            size CDATA #REQUIRED
              <!-- Number of elements in the colormap -->
              <!-- Data type: int -->
            r    CDATA #REQUIRED
              <!-- Red elements of the colormap -->
              <!-- Data type: byte array -->
            g    CDATA #REQUIRED
              <!-- Green elements of the colormap -->
              <!-- Data type: byte array -->
            b    CDATA #REQUIRED
              <!-- Blue elements of the colormap -->
              <!-- Data type: byte array -->
            a    CDATA #IMPLIED>
              <!-- Alpha elements of the colormap -->
              <!-- Data type: byte array -->
      ]>
      
      Parameters:
      source - The ImageInputStream containing all the raw images.
      xmlSource - The org.xml.sax.InputSource to provide the xml document in which the stream structure is defined.
      Throws:
      RuntimeException - If the parse configuration isn't correct.
      IllegalArgumentException - If the number of "width" elements isn't the same as the number of "height" elements.
      SAXException - If one is thrown in parsing.
      IOException - If one is thrown in parsing, or creating color space from a URL.
  • Method Details