Module java.desktop
Package javax.imageio

Class ImageTypeSpecifier



  • public class ImageTypeSpecifier
    extends Object
    A class that allows the format of an image (in particular, its SampleModel and ColorModel) to be specified in a convenient manner.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static ImageTypeSpecifier createBanded​(ColorSpace colorSpace, int[] bankIndices, int[] bandOffsets, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied)
      Returns a specifier for a banded image format that will use a ComponentColorModel and a BandedSampleModel to store each channel in a separate array.
      BufferedImage createBufferedImage​(int width, int height)
      Creates a BufferedImage with a given width and height according to the specification embodied in this object.
      static ImageTypeSpecifier createFromBufferedImageType​(int bufferedImageType)
      Returns an ImageTypeSpecifier that encodes one of the standard BufferedImage types (other than TYPE_CUSTOM).
      static ImageTypeSpecifier createFromRenderedImage​(RenderedImage image)
      Returns an ImageTypeSpecifier that encodes the layout of a RenderedImage (which may be a BufferedImage).
      static ImageTypeSpecifier createGrayscale​(int bits, int dataType, boolean isSigned)
      Returns a specifier for a grayscale image format that will pack pixels of the given bit depth into array elements of the specified data type.
      static ImageTypeSpecifier createGrayscale​(int bits, int dataType, boolean isSigned, boolean isAlphaPremultiplied)
      Returns a specifier for a grayscale plus alpha image format that will pack pixels of the given bit depth into array elements of the specified data type.
      static ImageTypeSpecifier createIndexed​(byte[] redLUT, byte[] greenLUT, byte[] blueLUT, byte[] alphaLUT, int bits, int dataType)
      Returns a specifier for an indexed-color image format that will pack index values of the given bit depth into array elements of the specified data type.
      static ImageTypeSpecifier createInterleaved​(ColorSpace colorSpace, int[] bandOffsets, int dataType, boolean hasAlpha, boolean isAlphaPremultiplied)
      Returns a specifier for an interleaved image format that will use a ComponentColorModel and a PixelInterleavedSampleModel to store each pixel component in a separate byte, short, or int.
      static ImageTypeSpecifier createPacked​(ColorSpace colorSpace, int redMask, int greenMask, int blueMask, int alphaMask, int transferType, boolean isAlphaPremultiplied)
      Returns a specifier for a packed image format that will use a DirectColorModel and a packed SampleModel to store each pixel packed into in a single byte, short, or int.
      boolean equals​(Object o)
      Returns true if the given Object is an ImageTypeSpecifier and has a SampleModel and ColorModel that are equal to those of this object.
      int getBitsPerBand​(int band)
      Return the number of bits used to represent samples of the given band.
      int getBufferedImageType​()
      Returns an int containing one of the enumerated constant values describing image formats from BufferedImage.
      ColorModel getColorModel​()
      Returns the ColorModel specified by this object.
      int getNumBands​()
      Return the number of bands specified by this object.
      int getNumComponents​()
      Return the number of color components specified by this object.
      SampleModel getSampleModel​()
      Returns a SampleModel based on the settings encapsulated within this object.
      SampleModel getSampleModel​(int width, int height)
      Returns a SampleModel based on the settings encapsulated within this object.
      int hashCode​()
      Returns the hash code for this ImageTypeSpecifier.
    • Field Detail

      • colorModel

        protected ColorModel colorModel
        The ColorModel to be used as a prototype.
      • sampleModel

        protected SampleModel sampleModel
        A SampleModel to be used as a prototype.
    • Constructor Detail

      • ImageTypeSpecifier

        public ImageTypeSpecifier​(ColorModel colorModel,
                                  SampleModel sampleModel)
        Constructs an ImageTypeSpecifier directly from a ColorModel and a SampleModel. It is the caller's responsibility to supply compatible parameters.
        Parameters:
        colorModel - a ColorModel.
        sampleModel - a SampleModel.
        Throws:
        IllegalArgumentException - if either parameter is null.
        IllegalArgumentException - if sampleModel is not compatible with colorModel.
      • ImageTypeSpecifier

        public ImageTypeSpecifier​(RenderedImage image)
        Constructs an ImageTypeSpecifier from a RenderedImage. If a BufferedImage is being used, one of the factory methods createFromRenderedImage or createFromBufferedImageType should be used instead in order to get a more accurate result.
        Parameters:
        image - a RenderedImage.
        Throws:
        IllegalArgumentException - if the argument is null.
    • Method Detail

      • createPacked

        public static ImageTypeSpecifier createPacked​(ColorSpace colorSpace,
                                                      int redMask,
                                                      int greenMask,
                                                      int blueMask,
                                                      int alphaMask,
                                                      int transferType,
                                                      boolean isAlphaPremultiplied)
        Returns a specifier for a packed image format that will use a DirectColorModel and a packed SampleModel to store each pixel packed into in a single byte, short, or int.
        Parameters:
        colorSpace - the desired ColorSpace.
        redMask - a contiguous mask indicated the position of the red channel.
        greenMask - a contiguous mask indicated the position of the green channel.
        blueMask - a contiguous mask indicated the position of the blue channel.
        alphaMask - a contiguous mask indicated the position of the alpha channel.
        transferType - the desired SampleModel transfer type.
        isAlphaPremultiplied - true if the color channels will be premultipled by the alpha channel.
        Returns:
        an ImageTypeSpecifier with the desired characteristics.
        Throws:
        IllegalArgumentException - if colorSpace is null.
        IllegalArgumentException - if colorSpace is not of type TYPE_RGB.
        IllegalArgumentException - if no mask has at least 1 bit set.
        IllegalArgumentException - if transferType if not one of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
      • createInterleaved

        public static ImageTypeSpecifier createInterleaved​(ColorSpace colorSpace,
                                                           int[] bandOffsets,
                                                           int dataType,
                                                           boolean hasAlpha,
                                                           boolean isAlphaPremultiplied)
        Returns a specifier for an interleaved image format that will use a ComponentColorModel and a PixelInterleavedSampleModel to store each pixel component in a separate byte, short, or int.
        Parameters:
        colorSpace - the desired ColorSpace.
        bandOffsets - an array of ints indicating the offsets for each band.
        dataType - the desired data type, as one of the enumerations from the DataBuffer class.
        hasAlpha - true if an alpha channel is desired.
        isAlphaPremultiplied - true if the color channels will be premultipled by the alpha channel.
        Returns:
        an ImageTypeSpecifier with the desired characteristics.
        Throws:
        IllegalArgumentException - if colorSpace is null.
        IllegalArgumentException - if bandOffsets is null.
        IllegalArgumentException - if dataType is not one of the legal DataBuffer.TYPE_* constants.
        IllegalArgumentException - if bandOffsets.length does not equal the number of color space components, plus 1 if hasAlpha is true.
      • createBanded

        public static ImageTypeSpecifier createBanded​(ColorSpace colorSpace,
                                                      int[] bankIndices,
                                                      int[] bandOffsets,
                                                      int dataType,
                                                      boolean hasAlpha,
                                                      boolean isAlphaPremultiplied)
        Returns a specifier for a banded image format that will use a ComponentColorModel and a BandedSampleModel to store each channel in a separate array.
        Parameters:
        colorSpace - the desired ColorSpace.
        bankIndices - an array of ints indicating the bank in which each band will be stored.
        bandOffsets - an array of ints indicating the starting offset of each band within its bank.
        dataType - the desired data type, as one of the enumerations from the DataBuffer class.
        hasAlpha - true if an alpha channel is desired.
        isAlphaPremultiplied - true if the color channels will be premultipled by the alpha channel.
        Returns:
        an ImageTypeSpecifier with the desired characteristics.
        Throws:
        IllegalArgumentException - if colorSpace is null.
        IllegalArgumentException - if bankIndices is null.
        IllegalArgumentException - if bandOffsets is null.
        IllegalArgumentException - if the lengths of bankIndices and bandOffsets differ.
        IllegalArgumentException - if bandOffsets.length does not equal the number of color space components, plus 1 if hasAlpha is true.
        IllegalArgumentException - if dataType is not one of the legal DataBuffer.TYPE_* constants.
      • createGrayscale

        public static ImageTypeSpecifier createGrayscale​(int bits,
                                                         int dataType,
                                                         boolean isSigned)
        Returns a specifier for a grayscale image format that will pack pixels of the given bit depth into array elements of the specified data type.
        Parameters:
        bits - the number of bits per gray value (1, 2, 4, 8, or 16).
        dataType - the desired data type, as one of the enumerations from the DataBuffer class.
        isSigned - true if negative values are to be represented.
        Returns:
        an ImageTypeSpecifier with the desired characteristics.
        Throws:
        IllegalArgumentException - if bits is not one of 1, 2, 4, 8, or 16.
        IllegalArgumentException - if dataType is not one of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_SHORT, or DataBuffer.TYPE_USHORT.
        IllegalArgumentException - if bits is larger than the bit size of the given dataType.
      • createGrayscale

        public static ImageTypeSpecifier createGrayscale​(int bits,
                                                         int dataType,
                                                         boolean isSigned,
                                                         boolean isAlphaPremultiplied)
        Returns a specifier for a grayscale plus alpha image format that will pack pixels of the given bit depth into array elements of the specified data type.
        Parameters:
        bits - the number of bits per gray value (1, 2, 4, 8, or 16).
        dataType - the desired data type, as one of the enumerations from the DataBuffer class.
        isSigned - true if negative values are to be represented.
        isAlphaPremultiplied - true if the luminance channel will be premultipled by the alpha channel.
        Returns:
        an ImageTypeSpecifier with the desired characteristics.
        Throws:
        IllegalArgumentException - if bits is not one of 1, 2, 4, 8, or 16.
        IllegalArgumentException - if dataType is not one of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_SHORT, or DataBuffer.TYPE_USHORT.
        IllegalArgumentException - if bits is larger than the bit size of the given dataType.
      • createIndexed

        public static ImageTypeSpecifier createIndexed​(byte[] redLUT,
                                                       byte[] greenLUT,
                                                       byte[] blueLUT,
                                                       byte[] alphaLUT,
                                                       int bits,
                                                       int dataType)
        Returns a specifier for an indexed-color image format that will pack index values of the given bit depth into array elements of the specified data type.
        Parameters:
        redLUT - an array of bytes containing the red values for each index.
        greenLUT - an array of bytes containing * the green values for each index.
        blueLUT - an array of bytes containing the blue values for each index.
        alphaLUT - an array of bytes containing the alpha values for each index, or null to create a fully opaque LUT.
        bits - the number of bits in each index.
        dataType - the desired output type, as one of the enumerations from the DataBuffer class.
        Returns:
        an ImageTypeSpecifier with the desired characteristics.
        Throws:
        IllegalArgumentException - if redLUT is null.
        IllegalArgumentException - if greenLUT is null.
        IllegalArgumentException - if blueLUT is null.
        IllegalArgumentException - if bits is not one of 1, 2, 4, 8, or 16.
        IllegalArgumentException - if the non-null LUT parameters do not have lengths of exactly 1 << bits.
        IllegalArgumentException - if dataType is not one of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT.
        IllegalArgumentException - if bits is larger than the bit size of the given dataType.
      • createFromRenderedImage

        public static ImageTypeSpecifier createFromRenderedImage​(RenderedImage image)
        Returns an ImageTypeSpecifier that encodes the layout of a RenderedImage (which may be a BufferedImage).
        Parameters:
        image - a RenderedImage.
        Returns:
        an ImageTypeSpecifier with the desired characteristics.
        Throws:
        IllegalArgumentException - if image is null.
      • getNumComponents

        public int getNumComponents​()
        Return the number of color components specified by this object. This is the same value as returned by ColorModel.getNumComponents
        Returns:
        the number of components in the image.
      • getNumBands

        public int getNumBands​()
        Return the number of bands specified by this object. This is the same value as returned by SampleModel.getNumBands
        Returns:
        the number of bands in the image.
      • getBitsPerBand

        public int getBitsPerBand​(int band)
        Return the number of bits used to represent samples of the given band.
        Parameters:
        band - the index of the band to be queried, as an int.
        Returns:
        an int specifying a number of bits.
        Throws:
        IllegalArgumentException - if band is negative or greater than the largest band index.
      • getSampleModel

        public SampleModel getSampleModel​()
        Returns a SampleModel based on the settings encapsulated within this object. The width and height of the SampleModel will be set to arbitrary values.
        Returns:
        a SampleModel with arbitrary dimensions.
      • getSampleModel

        public SampleModel getSampleModel​(int width,
                                          int height)
        Returns a SampleModel based on the settings encapsulated within this object. The width and height of the SampleModel will be set to the supplied values.
        Parameters:
        width - the desired width of the returned SampleModel.
        height - the desired height of the returned SampleModel.
        Returns:
        a SampleModel with the given dimensions.
        Throws:
        IllegalArgumentException - if either width or height are negative or zero.
        IllegalArgumentException - if the product of width and height is greater than Integer.MAX_VALUE
      • getColorModel

        public ColorModel getColorModel​()
        Returns the ColorModel specified by this object.
        Returns:
        a ColorModel.
      • createBufferedImage

        public BufferedImage createBufferedImage​(int width,
                                                 int height)
        Creates a BufferedImage with a given width and height according to the specification embodied in this object.
        Parameters:
        width - the desired width of the returned BufferedImage.
        height - the desired height of the returned BufferedImage.
        Returns:
        a new BufferedImage
        Throws:
        IllegalArgumentException - if either width or height are negative or zero.
        IllegalArgumentException - if the product of width and height is greater than Integer.MAX_VALUE, or if the number of array elements needed to store the image is greater than Integer.MAX_VALUE.
      • equals

        public boolean equals​(Object o)
        Returns true if the given Object is an ImageTypeSpecifier and has a SampleModel and ColorModel that are equal to those of this object.
        Overrides:
        equals in class Object
        Parameters:
        o - the Object to be compared for equality.
        Returns:
        true if the given object is an equivalent ImageTypeSpecifier.
        See Also:
        Object.hashCode(), HashMap