Class RawImageInputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.DataInput, java.lang.AutoCloseable, javax.imageio.stream.ImageInputStream

    public class RawImageInputStream
    extends java.lang.Object
    implements javax.imageio.stream.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 Summary

      Fields 
      Modifier and Type Field Description
      private java.awt.Dimension[] imageDimensions
      The image sizes.
      private long[] imageOffsets
      The position of the first sample for each image.
      private static java.lang.String[] preDefinedColorSpaces  
      private static int[] preDefinedTypes  
      private javax.imageio.stream.ImageInputStream source
      The wrapperred ImageInputStream.
      private javax.imageio.ImageTypeSpecifier type
      The image type for all the images in the stream.
    • Constructor Summary

      Constructors 
      Constructor Description
      RawImageInputStream​(javax.imageio.stream.ImageInputStream source, java.awt.image.SampleModel sampleModel, long[] imageOffsets, java.awt.Dimension[] imageDimensions)
      Constructor.
      RawImageInputStream​(javax.imageio.stream.ImageInputStream source, javax.imageio.ImageTypeSpecifier type, long[] imageOffsets, java.awt.Dimension[] imageDimensions)
      Constructor.
      RawImageInputStream​(javax.imageio.stream.ImageInputStream source, org.xml.sax.InputSource xmlSource)
      Constructor.
    • Field Detail

      • preDefinedColorSpaces

        private static final java.lang.String[] preDefinedColorSpaces
      • preDefinedTypes

        private static final int[] preDefinedTypes
      • source

        private javax.imageio.stream.ImageInputStream source
        The wrapperred ImageInputStream.
      • type

        private javax.imageio.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 java.awt.Dimension[] imageDimensions
        The image sizes.
    • Constructor Detail

      • RawImageInputStream

        public RawImageInputStream​(javax.imageio.stream.ImageInputStream source,
                                   javax.imageio.ImageTypeSpecifier type,
                                   long[] imageOffsets,
                                   java.awt.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:
        java.lang.IllegalArgumentException - If the sizes of imageOffsets and imageDimensions are different or if either array is null.
      • RawImageInputStream

        public RawImageInputStream​(javax.imageio.stream.ImageInputStream source,
                                   java.awt.image.SampleModel sampleModel,
                                   long[] imageOffsets,
                                   java.awt.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 1 << 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:
        java.lang.IllegalArgumentException - If sampleModel is null.
        java.lang.IllegalArgumentException - If the sizes of imageOffsets and imageDimensions are different or if either array is null.
        java.lang.IllegalArgumentException - If it is not possible to create a ColorModel from the supplied SampleModel.
      • RawImageInputStream

        public RawImageInputStream​(javax.imageio.stream.ImageInputStream source,
                                   org.xml.sax.InputSource xmlSource)
                            throws org.xml.sax.SAXException,
                                   java.io.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:
        java.lang.RuntimeException - If the parse configuration isn't correct.
        java.lang.IllegalArgumentException - If the number of "width" elements isn't the same as the number of "height" elements.
        org.xml.sax.SAXException - If one is thrown in parsing.
        java.io.IOException - If one is thrown in parsing, or creating color space from a URL.
    • Method Detail

      • getAttribute

        private static java.lang.String getAttribute​(org.w3c.dom.Node node,
                                                     java.lang.String name)
        Gets the attribute from the node.
      • getBoolean

        private static boolean getBoolean​(org.w3c.dom.Node node,
                                          java.lang.String name)
        Gets the boolean type attribute.
      • getInt

        private static int getInt​(org.w3c.dom.Node node,
                                  java.lang.String name)
        Gets the integer type attribute.
      • getByteArray

        private static byte[] getByteArray​(org.w3c.dom.Node node,
                                           java.lang.String name)
        Gets the integer type attribute.
      • getIntArray

        private static int[] getIntArray​(org.w3c.dom.Node node,
                                         java.lang.String name)
        Gets the integer type attribute.
      • getTransparency

        private static int getTransparency​(java.lang.String s)
      • getColorSpace

        private static java.awt.color.ColorSpace getColorSpace​(org.w3c.dom.Node node)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • getImageType

        public javax.imageio.ImageTypeSpecifier getImageType()
        Retrieves the image type.
        Returns:
        the image type
      • getImageOffset

        public long getImageOffset​(int imageIndex)
        Retrieves the image offset of the imageIndexth image.
        Parameters:
        imageIndex - the index of the image of interest.
        Returns:
        the offset in the stream to the specified image.
        Throws:
        java.lang.IllegalArgumentException - If the provided parameter is out of range.
      • getImageDimension

        public java.awt.Dimension getImageDimension​(int imageIndex)
        Retrieves the dimnsion of the imageIndexth image.
        Parameters:
        imageIndex - the index of the image of interest.
        Returns:
        the size of the specified image.
        Throws:
        java.lang.IllegalArgumentException - If the provided parameter is out of rangle.
      • getNumImages

        public int getNumImages()
        Retrieves the number of images in the ImageInputStream.
        Returns:
        the number of image in the stream.
      • setByteOrder

        public void setByteOrder​(java.nio.ByteOrder byteOrder)
        Specified by:
        setByteOrder in interface javax.imageio.stream.ImageInputStream
      • getByteOrder

        public java.nio.ByteOrder getByteOrder()
        Specified by:
        getByteOrder in interface javax.imageio.stream.ImageInputStream
      • read

        public int read()
                 throws java.io.IOException
        Specified by:
        read in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b)
                 throws java.io.IOException
        Specified by:
        read in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Specified by:
        read in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readBytes

        public void readBytes​(javax.imageio.stream.IIOByteBuffer buf,
                              int len)
                       throws java.io.IOException
        Specified by:
        readBytes in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readBoolean

        public boolean readBoolean()
                            throws java.io.IOException
        Specified by:
        readBoolean in interface java.io.DataInput
        Specified by:
        readBoolean in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readByte

        public byte readByte()
                      throws java.io.IOException
        Specified by:
        readByte in interface java.io.DataInput
        Specified by:
        readByte in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readUnsignedByte

        public int readUnsignedByte()
                             throws java.io.IOException
        Specified by:
        readUnsignedByte in interface java.io.DataInput
        Specified by:
        readUnsignedByte in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readShort

        public short readShort()
                        throws java.io.IOException
        Specified by:
        readShort in interface java.io.DataInput
        Specified by:
        readShort in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readUnsignedShort

        public int readUnsignedShort()
                              throws java.io.IOException
        Specified by:
        readUnsignedShort in interface java.io.DataInput
        Specified by:
        readUnsignedShort in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readChar

        public char readChar()
                      throws java.io.IOException
        Specified by:
        readChar in interface java.io.DataInput
        Specified by:
        readChar in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readInt

        public int readInt()
                    throws java.io.IOException
        Specified by:
        readInt in interface java.io.DataInput
        Specified by:
        readInt in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readUnsignedInt

        public long readUnsignedInt()
                             throws java.io.IOException
        Specified by:
        readUnsignedInt in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readLong

        public long readLong()
                      throws java.io.IOException
        Specified by:
        readLong in interface java.io.DataInput
        Specified by:
        readLong in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFloat

        public float readFloat()
                        throws java.io.IOException
        Specified by:
        readFloat in interface java.io.DataInput
        Specified by:
        readFloat in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readDouble

        public double readDouble()
                          throws java.io.IOException
        Specified by:
        readDouble in interface java.io.DataInput
        Specified by:
        readDouble in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readLine

        public java.lang.String readLine()
                                  throws java.io.IOException
        Specified by:
        readLine in interface java.io.DataInput
        Specified by:
        readLine in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readUTF

        public java.lang.String readUTF()
                                 throws java.io.IOException
        Specified by:
        readUTF in interface java.io.DataInput
        Specified by:
        readUTF in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(byte[] b,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface java.io.DataInput
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(byte[] b)
                       throws java.io.IOException
        Specified by:
        readFully in interface java.io.DataInput
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(short[] s,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(char[] c,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(int[] i,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(long[] l,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(float[] f,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(double[] d,
                              int off,
                              int len)
                       throws java.io.IOException
        Specified by:
        readFully in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • getStreamPosition

        public long getStreamPosition()
                               throws java.io.IOException
        Specified by:
        getStreamPosition in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • getBitOffset

        public int getBitOffset()
                         throws java.io.IOException
        Specified by:
        getBitOffset in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • setBitOffset

        public void setBitOffset​(int bitOffset)
                          throws java.io.IOException
        Specified by:
        setBitOffset in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readBit

        public int readBit()
                    throws java.io.IOException
        Specified by:
        readBit in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • readBits

        public long readBits​(int numBits)
                      throws java.io.IOException
        Specified by:
        readBits in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • length

        public long length()
                    throws java.io.IOException
        Specified by:
        length in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • skipBytes

        public int skipBytes​(int n)
                      throws java.io.IOException
        Specified by:
        skipBytes in interface java.io.DataInput
        Specified by:
        skipBytes in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • skipBytes

        public long skipBytes​(long n)
                       throws java.io.IOException
        Specified by:
        skipBytes in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • seek

        public void seek​(long pos)
                  throws java.io.IOException
        Specified by:
        seek in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • mark

        public void mark()
        Specified by:
        mark in interface javax.imageio.stream.ImageInputStream
      • reset

        public void reset()
                   throws java.io.IOException
        Specified by:
        reset in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • flushBefore

        public void flushBefore​(long pos)
                         throws java.io.IOException
        Specified by:
        flushBefore in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • flush

        public void flush()
                   throws java.io.IOException
        Specified by:
        flush in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException
      • getFlushedPosition

        public long getFlushedPosition()
        Specified by:
        getFlushedPosition in interface javax.imageio.stream.ImageInputStream
      • isCached

        public boolean isCached()
        Specified by:
        isCached in interface javax.imageio.stream.ImageInputStream
      • isCachedMemory

        public boolean isCachedMemory()
        Specified by:
        isCachedMemory in interface javax.imageio.stream.ImageInputStream
      • isCachedFile

        public boolean isCachedFile()
        Specified by:
        isCachedFile in interface javax.imageio.stream.ImageInputStream
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface javax.imageio.stream.ImageInputStream
        Throws:
        java.io.IOException