- java.lang.Object
-
- javax.imageio.ImageTypeSpecifier
-
public class ImageTypeSpecifier extends Object
A class that allows the format of an image (in particular, itsSampleModel
andColorModel
) to be specified in a convenient manner.
-
-
Field Summary
Fields Modifier and Type Field Description protected ColorModel
colorModel
TheColorModel
to be used as a prototype.protected SampleModel
sampleModel
ASampleModel
to be used as a prototype.
-
Constructor Summary
Constructors Constructor Description ImageTypeSpecifier(ColorModel colorModel, SampleModel sampleModel)
Constructs anImageTypeSpecifier
directly from aColorModel
and aSampleModel
.ImageTypeSpecifier(RenderedImage image)
Constructs anImageTypeSpecifier
from aRenderedImage
.
-
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 aComponentColorModel
and aBandedSampleModel
to store each channel in a separate array.BufferedImage
createBufferedImage(int width, int height)
Creates aBufferedImage
with a given width and height according to the specification embodied in this object.static ImageTypeSpecifier
createFromBufferedImageType(int bufferedImageType)
Returns anImageTypeSpecifier
that encodes one of the standardBufferedImage
types (other thanTYPE_CUSTOM
).static ImageTypeSpecifier
createFromRenderedImage(RenderedImage image)
Returns anImageTypeSpecifier
that encodes the layout of aRenderedImage
(which may be aBufferedImage
).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 aComponentColorModel
and aPixelInterleavedSampleModel
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 aDirectColorModel
and a packedSampleModel
to store each pixel packed into in a single byte, short, or int.boolean
equals(Object o)
Returnstrue
if the givenObject
is anImageTypeSpecifier
and has aSampleModel
andColorModel
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 fromBufferedImage
.ColorModel
getColorModel()
Returns theColorModel
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 aSampleModel
based on the settings encapsulated within this object.SampleModel
getSampleModel(int width, int height)
Returns aSampleModel
based on the settings encapsulated within this object.int
hashCode()
Returns the hash code for this ImageTypeSpecifier.
-
-
-
Field Detail
-
colorModel
protected ColorModel colorModel
TheColorModel
to be used as a prototype.
-
sampleModel
protected SampleModel sampleModel
ASampleModel
to be used as a prototype.
-
-
Constructor Detail
-
ImageTypeSpecifier
public ImageTypeSpecifier(ColorModel colorModel, SampleModel sampleModel)
Constructs anImageTypeSpecifier
directly from aColorModel
and aSampleModel
. It is the caller's responsibility to supply compatible parameters.- Parameters:
colorModel
- aColorModel
.sampleModel
- aSampleModel
.- Throws:
IllegalArgumentException
- if either parameter isnull
.IllegalArgumentException
- ifsampleModel
is not compatible withcolorModel
.
-
ImageTypeSpecifier
public ImageTypeSpecifier(RenderedImage image)
Constructs anImageTypeSpecifier
from aRenderedImage
. If aBufferedImage
is being used, one of the factory methodscreateFromRenderedImage
orcreateFromBufferedImageType
should be used instead in order to get a more accurate result.- Parameters:
image
- aRenderedImage
.- Throws:
IllegalArgumentException
- if the argument isnull
.
-
-
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 aDirectColorModel
and a packedSampleModel
to store each pixel packed into in a single byte, short, or int.- Parameters:
colorSpace
- the desiredColorSpace
.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 desiredSampleModel
transfer type.isAlphaPremultiplied
-true
if the color channels will be premultipled by the alpha channel.- Returns:
- an
ImageTypeSpecifier
with the desired characteristics. - Throws:
IllegalArgumentException
- ifcolorSpace
isnull
.IllegalArgumentException
- ifcolorSpace
is not of typeTYPE_RGB
.IllegalArgumentException
- if no mask has at least 1 bit set.IllegalArgumentException
- iftransferType
if not one ofDataBuffer.TYPE_BYTE
,DataBuffer.TYPE_USHORT
, orDataBuffer.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 aComponentColorModel
and aPixelInterleavedSampleModel
to store each pixel component in a separate byte, short, or int.- Parameters:
colorSpace
- the desiredColorSpace
.bandOffsets
- an array ofint
s indicating the offsets for each band.dataType
- the desired data type, as one of the enumerations from theDataBuffer
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
- ifcolorSpace
isnull
.IllegalArgumentException
- ifbandOffsets
isnull
.IllegalArgumentException
- ifdataType
is not one of the legalDataBuffer.TYPE_*
constants.IllegalArgumentException
- ifbandOffsets.length
does not equal the number of color space components, plus 1 ifhasAlpha
istrue
.
-
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 aComponentColorModel
and aBandedSampleModel
to store each channel in a separate array.- Parameters:
colorSpace
- the desiredColorSpace
.bankIndices
- an array ofint
s indicating the bank in which each band will be stored.bandOffsets
- an array ofint
s indicating the starting offset of each band within its bank.dataType
- the desired data type, as one of the enumerations from theDataBuffer
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
- ifcolorSpace
isnull
.IllegalArgumentException
- ifbankIndices
isnull
.IllegalArgumentException
- ifbandOffsets
isnull
.IllegalArgumentException
- if the lengths ofbankIndices
andbandOffsets
differ.IllegalArgumentException
- ifbandOffsets.length
does not equal the number of color space components, plus 1 ifhasAlpha
istrue
.IllegalArgumentException
- ifdataType
is not one of the legalDataBuffer.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 theDataBuffer
class.isSigned
-true
if negative values are to be represented.- Returns:
- an
ImageTypeSpecifier
with the desired characteristics. - Throws:
IllegalArgumentException
- ifbits
is not one of 1, 2, 4, 8, or 16.IllegalArgumentException
- ifdataType
is not one ofDataBuffer.TYPE_BYTE
,DataBuffer.TYPE_SHORT
, orDataBuffer.TYPE_USHORT
.IllegalArgumentException
- ifbits
is larger than the bit size of the givendataType
.
-
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 theDataBuffer
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
- ifbits
is not one of 1, 2, 4, 8, or 16.IllegalArgumentException
- ifdataType
is not one ofDataBuffer.TYPE_BYTE
,DataBuffer.TYPE_SHORT
, orDataBuffer.TYPE_USHORT
.IllegalArgumentException
- ifbits
is larger than the bit size of the givendataType
.
-
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 ofbyte
s containing the red values for each index.greenLUT
- an array ofbyte
s containing * the green values for each index.blueLUT
- an array ofbyte
s containing the blue values for each index.alphaLUT
- an array ofbyte
s containing the alpha values for each index, ornull
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 theDataBuffer
class.- Returns:
- an
ImageTypeSpecifier
with the desired characteristics. - Throws:
IllegalArgumentException
- ifredLUT
isnull
.IllegalArgumentException
- ifgreenLUT
isnull
.IllegalArgumentException
- ifblueLUT
isnull
.IllegalArgumentException
- ifbits
is not one of 1, 2, 4, 8, or 16.IllegalArgumentException
- if the non-null
LUT parameters do not have lengths of exactly1 << bits
.IllegalArgumentException
- ifdataType
is not one ofDataBuffer.TYPE_BYTE
,DataBuffer.TYPE_SHORT
,DataBuffer.TYPE_USHORT
, orDataBuffer.TYPE_INT
.IllegalArgumentException
- ifbits
is larger than the bit size of the givendataType
.
-
createFromBufferedImageType
public static ImageTypeSpecifier createFromBufferedImageType(int bufferedImageType)
Returns anImageTypeSpecifier
that encodes one of the standardBufferedImage
types (other thanTYPE_CUSTOM
).- Parameters:
bufferedImageType
- an int representing one of the standardBufferedImage
types.- Returns:
- an
ImageTypeSpecifier
with the desired characteristics. - Throws:
IllegalArgumentException
- ifbufferedImageType
is not one of the standard types, or is equal toTYPE_CUSTOM
.- See Also:
BufferedImage
,BufferedImage.TYPE_INT_RGB
,BufferedImage.TYPE_INT_ARGB
,BufferedImage.TYPE_INT_ARGB_PRE
,BufferedImage.TYPE_INT_BGR
,BufferedImage.TYPE_3BYTE_BGR
,BufferedImage.TYPE_4BYTE_ABGR
,BufferedImage.TYPE_4BYTE_ABGR_PRE
,BufferedImage.TYPE_USHORT_565_RGB
,BufferedImage.TYPE_USHORT_555_RGB
,BufferedImage.TYPE_BYTE_GRAY
,BufferedImage.TYPE_USHORT_GRAY
,BufferedImage.TYPE_BYTE_BINARY
,BufferedImage.TYPE_BYTE_INDEXED
-
createFromRenderedImage
public static ImageTypeSpecifier createFromRenderedImage(RenderedImage image)
Returns anImageTypeSpecifier
that encodes the layout of aRenderedImage
(which may be aBufferedImage
).- Parameters:
image
- aRenderedImage
.- Returns:
- an
ImageTypeSpecifier
with the desired characteristics. - Throws:
IllegalArgumentException
- ifimage
isnull
.
-
getBufferedImageType
public int getBufferedImageType()
Returns an int containing one of the enumerated constant values describing image formats fromBufferedImage
.- Returns:
- an
int
representing aBufferedImage
type. - See Also:
BufferedImage
,BufferedImage.TYPE_CUSTOM
,BufferedImage.TYPE_INT_RGB
,BufferedImage.TYPE_INT_ARGB
,BufferedImage.TYPE_INT_ARGB_PRE
,BufferedImage.TYPE_INT_BGR
,BufferedImage.TYPE_3BYTE_BGR
,BufferedImage.TYPE_4BYTE_ABGR
,BufferedImage.TYPE_4BYTE_ABGR_PRE
,BufferedImage.TYPE_USHORT_565_RGB
,BufferedImage.TYPE_USHORT_555_RGB
,BufferedImage.TYPE_BYTE_GRAY
,BufferedImage.TYPE_USHORT_GRAY
,BufferedImage.TYPE_BYTE_BINARY
,BufferedImage.TYPE_BYTE_INDEXED
-
getNumComponents
public int getNumComponents()
Return the number of color components specified by this object. This is the same value as returned byColorModel.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 bySampleModel.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
- ifband
is negative or greater than the largest band index.
-
getSampleModel
public SampleModel getSampleModel()
Returns aSampleModel
based on the settings encapsulated within this object. The width and height of theSampleModel
will be set to arbitrary values.- Returns:
- a
SampleModel
with arbitrary dimensions.
-
getSampleModel
public SampleModel getSampleModel(int width, int height)
Returns aSampleModel
based on the settings encapsulated within this object. The width and height of theSampleModel
will be set to the supplied values.- Parameters:
width
- the desired width of the returnedSampleModel
.height
- the desired height of the returnedSampleModel
.- Returns:
- a
SampleModel
with the given dimensions. - Throws:
IllegalArgumentException
- if eitherwidth
orheight
are negative or zero.IllegalArgumentException
- if the product ofwidth
andheight
is greater thanInteger.MAX_VALUE
-
getColorModel
public ColorModel getColorModel()
Returns theColorModel
specified by this object.- Returns:
- a
ColorModel
.
-
createBufferedImage
public BufferedImage createBufferedImage(int width, int height)
Creates aBufferedImage
with a given width and height according to the specification embodied in this object.- Parameters:
width
- the desired width of the returnedBufferedImage
.height
- the desired height of the returnedBufferedImage
.- Returns:
- a new
BufferedImage
- Throws:
IllegalArgumentException
- if eitherwidth
orheight
are negative or zero.IllegalArgumentException
- if the product ofwidth
andheight
is greater thanInteger.MAX_VALUE
, or if the number of array elements needed to store the image is greater thanInteger.MAX_VALUE
.
-
equals
public boolean equals(Object o)
Returnstrue
if the givenObject
is anImageTypeSpecifier
and has aSampleModel
andColorModel
that are equal to those of this object.- Overrides:
equals
in classObject
- Parameters:
o
- theObject
to be compared for equality.- Returns:
true
if the given object is an equivalentImageTypeSpecifier
.- See Also:
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
Returns the hash code for this ImageTypeSpecifier.- Overrides:
hashCode
in classObject
- Returns:
- a hash code for this ImageTypeSpecifier
- See Also:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-