- 所有已实现的接口:
-
透明度
- 直接已知的子类:
-
ComponentColorModel
,IndexColorModel
,PackedColorModel
ColorModel
抽象类封装了将像素值转换为颜色组件(例如红色、绿色和蓝色)和一个 alpha 组件的方法。为了将图像呈现到屏幕、打印机或另一个图像上,像素值必须转换为颜色和 alpha 组件。作为该类方法的参数或返回值,像素表示为 32 位整数或基本类型数组。颜色空间指定了 ColorModel
的颜色组件的数量、顺序和解释。用于不包含 alpha 信息的像素数据的 ColorModel
将所有像素视为不透明,即 alpha 值为 1.0。
这个 ColorModel
类支持两种像素值的表示。像素值可以是单个 32 位整数或基本类型数组。Java(tm) 平台 1.0 和 1.1 API 将像素表示为单个 byte
或单个 int
值。对于 ColorModel
类的目的,像素值参数被传递为整数。Java(tm) 2 平台 API 引入了用于表示图像的附加类。使用基于 BufferedImage
或 RenderedImage
对象,基于 Raster
和 SampleModel
类,像素值可能无法方便地表示为单个整数。因此,ColorModel
现在具有接受基本类型数组表示的像素值的方法。特定 ColorModel
对象使用的基本类型称为其传输类型。
用于像素值不方便表示为单个整数的图像的 ColorModel
对象在调用接受单个整数像素参数的方法时会抛出 IllegalArgumentException
。 ColorModel
的子类必须指定发生这种情况的条件。这不会发生在 DirectColorModel
或 IndexColorModel
对象上。
目前,Java 2D(tm) API 支持的传输类型有 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT 和 DataBuffer.TYPE_DOUBLE。大多数渲染操作在使用基于前三种类型的 ColorModels 和图像时会执行得更快。此外,某些图像过滤操作不支持基于后三种类型的 ColorModels 和图像。在创建对象时,特定 ColorModel
对象的传输类型是在创建时显式指定或默认指定的。所有 ColorModel
的子类必须指定可能的传输类型以及如何确定表示像素的基本数组中元素的数量。
对于 BufferedImages
,其 Raster
的传输类型和 Raster
对象的 SampleModel
(可以从这些类的 getTransferType
方法中获取)必须与 ColorModel
的传输类型匹配。表示像素的数组中元素的数量(可以从这些类的 getNumDataElements
方法中获取)必须与 ColorModel
的数量匹配。
用于从像素值转换为颜色和 alpha 组件的算法因子类而异。例如,从 BufferedImage
对象的 Raster
的 SampleModel
获取的样本与颜色/alpha 组件之间不一定有一一对应关系。即使存在这样的对应关系,样本中的位数也不一定与相应颜色/alpha 组件中的位数相同。每个子类必须指定如何执行从像素值到颜色/alpha 组件的转换。
ColorModel
类中的方法使用颜色和 alpha 组件的两种不同表示形式 - 规范化形式和非规范化形式。在规范化形式中,每个组件是介于某些最小值和最大值之间的 float
值。对于 alpha 组件,最小值为 0.0,最大值为 1.0。对于颜色组件,每个组件的最小值和最大值可以从 ColorSpace
对象中获取。这些值通常为 0.0 和 1.0(例如,默认 sRGB 颜色空间的规范化组件值范围从 0.0 到 1.0),但某些颜色空间的组件值具有不同的上限和下限。可以使用 ColorSpace
类的 getMinValue
和 getMaxValue
方法获取这些限制。规范化颜色组件值未经预乘。所有 ColorModels
必须支持规范化形式。
在非规范化形式中,每个组件是介于 0 和 2n - 1 之间的无符号整数值,其中 n 是特定组件的有效位数。如果特定 ColorModel
的像素值表示颜色样本经 alpha 样本预乘,则非规范化颜色组件值也经过预乘。非规范化形式仅用于具有所有组件的最小值为 0.0 和所有组件的最大值为 1.0 的 ColorModel
实例。对于所有规范化组件值都介于 0.0 和 1.0 之间的 ColorModels
,非规范化形式可以是一种便捷的表示形式。在这种情况下,整数值 0 映射到 0.0,值 2n - 1 映射到 1.0。在其他情况下,例如当规范化组件值可以是负数或正数时,非规范化形式不方便。这样的 ColorModel
对象在调用涉及非规范化参数的方法时会抛出 IllegalArgumentException
。 ColorModel
的子类必须指定发生这种情况的条件。
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
像素中的总位数。protected int
用于表示像素值的数组的数据类型。Fields declared in interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT
-
Constructor Summary
ModifierConstructorDescriptionColorModel
(int bits) 构造一个将指定位数的像素转换为颜色/alpha 组件的ColorModel
。protected
ColorModel
(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType) 构造一个将像素值转换为颜色/alpha 组件的ColorModel
。 -
Method Summary
Modifier and TypeMethodDescriptioncoerceData
(WritableRaster raster, boolean isAlphaPremultiplied) 强制栅格数据与isAlphaPremultiplied
变量中指定的状态匹配,假设数据当前由此ColorModel
正确描述。createCompatibleSampleModel
(int w, int h) 创建一个具有与此ColorModel
兼容的数据布局的指定宽度和高度的SampleModel
。createCompatibleWritableRaster
(int w, int h) 创建一个具有与此ColorModel
兼容的数据布局(SampleModel
)的指定宽度和高度的WritableRaster
。boolean
该方法简单地委托给Object
中的默认实现,该实现与一个==
测试相同,因为此类无法强制执行多个独立子类分支之间的适当相等性测试问题。abstract int
getAlpha
(int pixel) 返回指定像素的 alpha 组件,从 0 到 255 缩放。int
返回指定像素的 alpha 组件,从 0 到 255 缩放。getAlphaRaster
(WritableRaster raster) 返回从输入Raster
中提取的图像的 alpha 通道的Raster
,前提是此ColorModel
的像素值将颜色和 alpha 信息作为单独的空间波段(例如。abstract int
getBlue
(int pixel) 返回默认 RGBColorSpace
sRGB 中指定像素的蓝色颜色分量,从 0 到 255 缩放。int
返回默认 RGBColorSpace
sRGB 中指定像素的蓝色颜色分量,从 0 到 255 缩放。final ColorSpace
返回与此ColorModel
关联的ColorSpace
。int[]
getComponents
(int pixel, int[] components, int offset) 给定此ColorModel
中的像素,返回一个非规范化的颜色/alpha 组件数组。int[]
getComponents
(Object pixel, int[] components, int offset) 给定此ColorModel
中的像素,返回一个非规范化的颜色/alpha 组件数组。int[]
返回每个颜色/alpha 组件的位数数组。int
getComponentSize
(int componentIdx) 返回指定颜色/alpha 组件的位数。int
getDataElement
(float[] normComponents, int normOffset) 给定一个规范化的颜色/alpha 组件数组,在此ColorModel
中返回表示为int
的像素值。int
getDataElement
(int[] components, int offset) 给定一个非规范化的颜色/alpha 组件数组,在此ColorModel
中返回表示为int
的像素值。getDataElements
(float[] normComponents, int normOffset, Object obj) 给定一个规范化的颜色/alpha 组件数组,在此ColorModel
中返回数据元素数组表示的像素。getDataElements
(int[] components, int offset, Object obj) 给定一个非规范化的颜色/alpha 组件数组,在此ColorModel
中返回数据元素数组表示的像素。getDataElements
(int rgb, Object pixel) 返回一个数据元素数组表示该ColorModel
中像素的整数像素表示形式,使用默认的RGB颜色模型。abstract int
getGreen
(int pixel) 返回指定像素的绿色分量,在默认的RGB ColorSpace(sRGB)中从0到255进行了缩放。int
返回指定像素的绿色分量,在默认的RGBColorSpace
(sRGB)中从0到255进行了缩放。float[]
getNormalizedComponents
(int[] components, int offset, float[] normComponents, int normOffset) 给定一个未标准化的组件数组,返回所有颜色/alpha组件的标准化形式数组。float[]
getNormalizedComponents
(Object pixel, float[] normComponents, int normOffset) 给定该ColorModel
中的像素,返回所有颜色/alpha组件的标准化形式数组。int
返回该ColorModel
中的颜色组件数量。int
返回该ColorModel
中的组件数量,包括alpha。int
返回由该ColorModel
描述的每像素位数。abstract int
getRed
(int pixel) 返回指定像素的红色分量,在默认的RGB ColorSpace(sRGB)中从0到255进行了缩放。int
返回指定像素的红色分量,在默认的RGBColorSpace
(sRGB)中从0到255进行了缩放。int
getRGB
(int pixel) 返回默认RGB颜色模型格式中像素的颜色/alpha组件。int
返回默认RGB颜色模型格式中指定像素的颜色/alpha组件。static ColorModel
返回一个描述用于AWT图像接口中许多方法的整数RGB值的默认格式的DirectColorModel
,方便程序员使用。颜色空间是默认的RGBColorSpace
,即sRGB。假定像素值包括alpha信息。如果颜色和alpha信息在像素值中作为单独的空间带表示,假定颜色带未与alpha值预乘。透明度类型为java.awt.Transparency.TRANSLUCENT。传输类型将是可以容纳单个像素的DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的类型(如果位数大于32,则为DataBuffer.TYPE_UNDEFINED)。由于此构造函数没有关于每个颜色和alpha组件的位数的信息,因此调用此构造函数的任何子类都应覆盖需要此信息的任何方法。final int
Returns the transfer type of thisColorModel
.int
Returns the transparency.int[]
getUnnormalizedComponents
(float[] normComponents, int normOffset, int[] components, int offset) Returns an array of all of the color/alpha components in unnormalized form, given a normalized component array.final boolean
hasAlpha()
Returns whether or not alpha is supported in thisColorModel
.int
hashCode()
This method simply delegates to the default implementation inObject
which returns the system ID for the class.final boolean
Returns whether or not the alpha has been premultiplied in the pixel values to be translated by thisColorModel
.boolean
isCompatibleRaster
(Raster raster) Returnstrue
ifraster
is compatible with thisColorModel
andfalse
if it is not.boolean
Checks if theSampleModel
is compatible with thisColorModel
.toString()
Returns theString
representation of the contents of thisColorModel
object.
-
Field Details
-
pixel_bits
protected int pixel_bitsThe total number of bits in the pixel. -
transferType
protected int transferTypeData type of the array used to represent pixel values.
-
-
Constructor Details
-
ColorModel
public ColorModel(int bits) Constructs aColorModel
that translates pixels of the specified number of bits to color/alpha components. The color space is the default RGBColorSpace
, which is sRGB. Pixel values are assumed to include alpha information. If color and alpha information are represented in the pixel value as separate spatial bands, the color bands are assumed not to be premultiplied with the alpha value. The transparency type is java.awt.Transparency.TRANSLUCENT. The transfer type will be the smallest of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT that can hold a single pixel (or DataBuffer.TYPE_UNDEFINED if bits is greater than 32). Since this constructor has no information about the number of bits per color and alpha component, any subclass calling this constructor should override any method that requires this information.- 参数:
-
bits
- 像素的位数 - 抛出:
-
IllegalArgumentException
- 如果bits
中的位数少于1
-
ColorModel
protected ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType) 构造一个ColorModel
,将像素的值转换为颜色/alpha组件。颜色组件将位于指定的ColorSpace
中。pixel_bits
是像素值中的位数。bits数组指定每个颜色和alpha组件的有效位数。如果像素值中没有alpha信息,则其长度应为ColorSpace
中组件的数量,如果有alpha信息,则应比此数量多一个。hasAlpha
指示是否存在alpha信息。布尔值isAlphaPremultiplied
指定如何解释颜色和alpha信息分别表示为单独的空间带的像素值。如果布尔值为true
,则假定颜色样本已乘以alpha样本。transparency
指定此颜色模型可以表示哪些alpha值。传输类型是用于表示像素值的原始数组的类型。请注意,bits数组包含从像素值转换后每个颜色/alpha组件的有效位数。例如,对于IndexColorModel
,pixel_bits
等于16,bits数组可能有四个元素,每个元素设置为8。- 参数:
-
pixel_bits
- 像素值中的位数 -
bits
- 指定每个颜色和alpha组件的有效位数的数组 -
cspace
- 指定的ColorSpace
-
hasAlpha
- 如果存在alpha信息,则为true
;否则为false
-
isAlphaPremultiplied
- 如果颜色样本假定已乘以alpha样本,则为true
;否则为false
-
transparency
- 此颜色模型可以表示哪些alpha值 -
transferType
- 用于表示像素值的数组的类型 - 抛出:
-
IllegalArgumentException
- 如果位数组的长度小于此ColorModel
中的颜色或alpha组件的数量,或者透明度不是有效值。 -
IllegalArgumentException
- 如果bits
中位数的总和小于1,或者bits
中的任何元素小于0。 - 参见:
-
-
Method Details
-
getRGBdefault
返回一个描述用于AWT图像接口中许多方法的整数RGB值的默认格式的DirectColorModel
。颜色空间是默认的ColorSpace
,sRGB。RGB值的格式是一个整数,每个颜色分量(alpha、红、绿和蓝)各有8位,从最高有效字节到最低有效字节依次排序,如:0xAARRGGBB。颜色分量未经alpha分量预乘。此格式不一定代表特定设备或所有图像的本机或最有效的ColorModel
。它仅用作通用的颜色模型格式。- 返回:
-
描述默认RGB值的
DirectColorModel
对象。
-
hasAlpha
public final boolean hasAlpha()返回是否在此ColorModel
中支持alpha。- 返回:
-
如果在此
ColorModel
中支持alpha,则为true
;否则为false
。
-
isAlphaPremultiplied
public final boolean isAlphaPremultiplied()返回是否在要由此ColorModel
转换的像素值中alpha已经预乘。如果布尔值为true
,则应使用此ColorModel
来解释颜色和alpha信息分别表示为单独的空间带的像素值,并且假定颜色样本已乘以alpha样本。- 返回:
-
如果要由此
ColorModel
转换的像素值中alpha值已经预乘,则为true
;否则为false
。
-
getTransferType
public final int getTransferType()返回此ColorModel
的传输类型。传输类型是用于表示像素值的原始数组的类型。- 返回:
- 传输类型。
- 自:
- 1.3
-
getPixelSize
public int getPixelSize()返回由此ColorModel
描述的每像素位数。- 返回:
- 每像素位数。
-
getComponentSize
public int getComponentSize(int componentIdx) 返回指定颜色/alpha组件的位数。颜色组件按ColorSpace
指定的顺序进行索引。通常,此顺序反映颜色空间类型的名称。例如,对于TYPE_RGB,索引0对应于红色,索引1对应于绿色,索引2对应于蓝色。如果此ColorModel
支持alpha,则alpha组件对应于最后一个颜色组件之后的索引。- 参数:
-
componentIdx
- 颜色/alpha组件的索引 - 返回:
- 指定索引处颜色/alpha组件的位数。
- 抛出:
-
ArrayIndexOutOfBoundsException
- 如果componentIdx
大于或等于组件数量或小于零 -
NullPointerException
- 如果位数数组为null
-
getComponentSize
public int[] getComponentSize()返回每个颜色/alpha组件的位数数组。数组按ColorSpace
指定的顺序包含颜色组件,然后是alpha组件(如果存在)。- 返回:
- 包含每个颜色/alpha组件的位数的数组
-
getTransparency
public int getTransparency()返回透明度。返回OPAQUE、BITMASK或TRANSLUCENT之一。- 指定者:
-
getTransparency
在接口Transparency
中 - 返回值:
-
此
ColorModel
的透明度。 - 另请参阅:
-
getNumComponents
public int getNumComponents()返回此ColorModel
中包括alpha在内的组件数。如果有alpha组件,则这等于颜色组件的数量,可选地再加一。- 返回值:
-
此
ColorModel
中的组件数
-
getNumColorComponents
public int getNumColorComponents()返回此ColorModel
中的颜色组件数。这是由ColorSpace.getNumComponents()
返回的组件数量。- 返回值:
-
此
ColorModel
中的颜色组件数。 - 另请参阅:
-
getRed
public abstract int getRed(int pixel) 返回指定像素的红色颜色分量,范围从0到255,默认RGB ColorSpace(sRGB)。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel
的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException
。返回的值不是预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则红色值为0。- 参数:
-
pixel
- 指定的像素 - 返回值:
- 指定像素的红色分量的值。
-
getGreen
public abstract int getGreen(int pixel) 返回指定像素的绿色颜色分量,范围从0到255,默认RGB ColorSpace(sRGB)。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel
的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException
。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则绿色值为0。- 参数:
-
pixel
- 指定的像素 - 返回值:
- 指定像素的绿色分量的值。
-
getBlue
public abstract int getBlue(int pixel) 返回指定像素的蓝色颜色分量,范围从0到255,默认RGB ColorSpace(sRGB)。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel
的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException
。返回的值是非预乘值,例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则蓝色值为0。- 参数:
-
pixel
- 指定的像素 - 返回值:
- 指定像素的蓝色分量的值。
-
getAlpha
public abstract int getAlpha(int pixel) 返回指定像素的alpha分量,范围从0到255。像素值指定为int。如果此ColorModel
的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException
。- 参数:
-
pixel
- 指定的像素 - 返回值:
- 指定像素的alpha分量的值。
-
getRGB
public int getRGB(int pixel) 返回默认RGB颜色模型格式中像素的颜色/alpha组件。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel
的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException
。返回的值是非预乘格式。例如,如果alpha是预乘的,则此方法将其除去颜色分量。如果alpha值为0,则颜色值为0。- 参数:
-
pixel
- 指定的像素 - 返回值:
- 指定像素的颜色/alpha组件的RGB值。
- 另请参阅:
-
getRed
返回默认RGBColorSpace
(sRGB)中指定像素的红色颜色分量,范围从0到255。如果需要,将进行颜色转换。像素值由传递为对象引用的transferType类型的数据元素数组指定。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则红色值为0。如果inData
不是类型为transferType的原始数组,则会抛出ClassCastException
。如果inData
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。如果不支持此transferType
,则会抛出UnsupportedOperationException
。由于ColorModel
是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写它,则如果子类使用的transferType
不是DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
或DataBuffer.TYPE_INT
,则此方法会抛出异常。- 参数:
-
inData
- 像素值数组 - 返回值:
- 指定像素的红色分量的值。
- 抛出:
-
ClassCastException
- 如果inData
不是类型为transferType
的原始数组 -
ArrayIndexOutOfBoundsException
- 如果inData
不足以容纳此ColorModel
的像素值 -
UnsupportedOperationException
- 如果不支持此transferType
-
getGreen
返回默认RGBColorSpace
(sRGB)中指定像素的绿色颜色分量,范围从0到255。如果需要,将进行颜色转换。像素值由传递为对象引用的transferType类型的数据元素数组指定。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则绿色值为0。如果inData
不是类型为transferType的原始数组,则会抛出ClassCastException
。如果inData
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。如果不支持此transferType
,则会抛出UnsupportedOperationException
。由于ColorModel
是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写它,则如果子类使用的transferType
不是DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
或DataBuffer.TYPE_INT
,则此方法会抛出异常。- 参数:
-
inData
- 像素值数组 - 返回值:
- 指定像素的绿色分量的值。
- 抛出:
-
ClassCastException
- 如果inData
不是类型为transferType
的原始数组 -
ArrayIndexOutOfBoundsException
- 如果inData
不足以容纳此ColorModel
的像素值 -
UnsupportedOperationException
- 如果不支持此transferType
-
getBlue
返回默认RGBColorSpace
(sRGB)中指定像素的蓝色颜色分量,范围从0到255。如果需要,将进行颜色转换。像素值由传递为对象引用的transferType类型的数据元素数组指定。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则蓝色值为0。如果inData
不是类型为transferType的原始数组,则会抛出ClassCastException
。如果inData
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。如果不支持此transferType
,则会抛出UnsupportedOperationException
。由于ColorModel
是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写它,则如果子类使用的transferType
不是DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
或DataBuffer.TYPE_INT
,则此方法会抛出异常。- 参数:
-
inData
- 像素值数组 - 返回:
- 指定像素的蓝色分量值。
- 抛出:
-
ClassCastException
- 如果inData
不是类型为transferType
的原始数组 -
ArrayIndexOutOfBoundsException
- 如果inData
不足以容纳此ColorModel
的像素值 -
UnsupportedOperationException
- 如果此ColorModel
不支持此transferType
-
getAlpha
返回指定像素的alpha分量,范围从0到255。像素值由作为对象引用传递的transferType类型的数据元素数组inData
指定。如果inData
不是类型为transferType
的原始数组,则会抛出ClassCastException
。如果inData
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。如果不支持此transferType
,则会抛出UnsupportedOperationException
。由于ColorModel
是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写,则在子类使用transferType
为DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
或DataBuffer.TYPE_INT
之外的值时,此方法会抛出异常。- 参数:
-
inData
- 指定的像素 - 返回:
- 指定像素的alpha分量,范围从0到255。
- 抛出:
-
ClassCastException
- 如果inData
不是类型为transferType
的原始数组 -
ArrayIndexOutOfBoundsException
- 如果inData
不足以容纳此ColorModel
的像素值 -
UnsupportedOperationException
- 如果不支持此transferType
-
getRGB
返回默认RGB颜色模型格式中指定像素的颜色/alpha分量。必要时进行颜色转换。像素值由作为对象引用传递的transferType类型的数据元素数组inData
指定。如果inData
不是类型为transferType
的原始数组,则会抛出ClassCastException
。如果inData
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。返回值将以非预乘格式返回,即如果alpha已经预乘,则此方法将从颜色分量中除去alpha(如果alpha值为0,则颜色值将为0)。- 参数:
-
inData
- 指定的像素 - 返回:
- 指定像素的颜色和alpha分量。
- 参见:
-
getDataElements
返回此ColorModel
中像素的数据元素数组表示,给定默认RGB颜色模型中的整数像素表示。然后可以将此数组传递给WritableRaster
对象的WritableRaster.setDataElements(int, int, java.lang.Object)
方法。如果像素变量为null
,将分配一个新数组。如果pixel
不为null
,则必须是类型为transferType
的原始数组;否则将抛出ClassCastException
。如果pixel
不足以容纳此ColorModel
的像素值,则将抛出ArrayIndexOutOfBoundsException
。将返回像素数组。如果不支持此transferType
,则将抛出UnsupportedOperationException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
rgb
- 默认RGB颜色模型中的整数像素表示 -
pixel
- 指定的像素 - 返回:
-
此
ColorModel
中指定像素的数组表示。 - 抛出:
-
ClassCastException
- 如果pixel
不是类型为transferType
的原始数组 -
ArrayIndexOutOfBoundsException
- 如果pixel
不足以容纳此ColorModel
的像素值 -
UnsupportedOperationException
- 如果不支持此方法 - 参见:
-
getComponents
public int[] getComponents(int pixel, int[] components, int offset) 返回此ColorModel
中给定像素的非规范化颜色/alpha分量数组。像素值以int
形式指定。如果此ColorModel
的像素值不能方便地表示为单个int
,或者如果此ColorModel
的颜色分量值在非规范化形式中不能方便地表示,则会抛出IllegalArgumentException
。例如,此方法可用于检索DirectColorModel
中特定像素值的组件。如果组件数组为null
,将分配一个新数组。将返回组件数组。颜色/alpha组件存储在从offset
开始的组件数组中(即使此方法分配了数组)。如果组件数组不为null
且不足以容纳所有颜色和alpha组件(从offset
开始),则会抛出ArrayIndexOutOfBoundsException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
pixel
- 指定的像素 -
components
- 用于接收指定像素的颜色和alpha分量的数组 -
offset
- 开始存储指定像素的颜色和alpha分量的components
数组中的偏移量 - 返回:
- 包含从指定偏移量开始的指定像素的颜色和alpha分量的数组。
- 抛出:
-
UnsupportedOperationException
- 如果不支持此方法
-
getComponents
返回此ColorModel
中给定像素的非规范化颜色/alpha分量数组。像素值由作为对象引用传递的transferType类型的数据元素数组pixel
指定。如果pixel
不是类型为transferType
的原始数组,则会抛出ClassCastException
。如果此ColorModel
的颜色分量值在非规范化形式中不能方便地表示,则会抛出IllegalArgumentException
。如果pixel
不足以容纳此ColorModel
的像素值,则将抛出ArrayIndexOutOfBoundsException
。此方法可用于检索任何ColorModel
中特定像素值的组件。如果组件数组为null
,将分配一个新数组。将返回组件数组。颜色/alpha组件存储在components
数组中从offset
开始的位置(即使此方法分配了数组)。如果组件数组不为null
且不足以容纳所有颜色和alpha组件(从offset
开始),则会抛出ArrayIndexOutOfBoundsException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
pixel
- 指定的像素 -
components
- 用于接收指定像素的颜色和alpha分量的数组 -
offset
- 开始存储指定像素的颜色和alpha分量的components
数组中的索引 - 返回:
- 包含从指定偏移量开始的指定像素的颜色和alpha分量的数组。
- 抛出:
-
UnsupportedOperationException
- 如果不支持此方法
-
getUnnormalizedComponents
public int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset) 返回一个未标准化形式的颜色/alpha分量数组,给定一个标准化的分量数组。未标准化的分量是介于 0 和 2n - 1 之间的无符号整数值,其中 n 是特定分量的位数。标准化的分量是浮点值,介于由此ColorModel
的ColorSpace
对象指定的每个分量的最小值和最大值之间。如果此ColorModel
的颜色分量值在未标准化形式下不方便表示,则会抛出IllegalArgumentException
。如果components
数组为null
,将分配一个新数组。将返回components
数组。颜色/alpha 分量存储在从offset
开始的components
数组中(即使该数组是由此方法分配的)。如果components
数组不为null
并且不足以容纳所有颜色和 alpha 分量(从offset
开始),则会抛出ArrayIndexOutOfBoundsException
。如果normComponents
数组不足以容纳从normOffset
开始的所有颜色和 alpha 分量,则会抛出IllegalArgumentException
。- 参数:
-
normComponents
- 包含标准化分量的数组 -
normOffset
- 开始检索标准化分量的normComponents
数组中的偏移量 -
components
- 从normComponents
接收分量的数组 -
offset
- 从normComponents
开始存储标准化分量的components
中的索引 - 返回:
- 包含未标准化颜色和 alpha 分量的数组。
- 抛出:
-
IllegalArgumentException
- 如果此ColorModel
的分量值在未标准化形式下不方便表示。 -
IllegalArgumentException
- 如果normComponents
的长度减去normOffset
小于numComponents
-
UnsupportedOperationException
- 如果此ColorModel
的构造函数调用了super(bits)
构造函数,但未覆盖此方法。请参阅构造函数,ColorModel(int)
。
-
getNormalizedComponents
public float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset) 返回一个标准化形式的颜色/alpha分量数组,给定一个未标准化的分量数组。未标准化的分量是介于 0 和 2n - 1 之间的无符号整数值,其中 n 是特定分量的位数。标准化的分量是浮点值,介于由此ColorModel
的ColorSpace
对象指定的每个分量的最小值和最大值之间。如果此ColorModel
的颜色分量值在未标准化形式下不方便表示,则会抛出IllegalArgumentException
。如果normComponents
数组为null
,将分配一个新数组。将返回normComponents
数组。颜色/alpha 分量存储在从normOffset
开始的normComponents
数组中(即使该数组是由此方法分配的)。如果normComponents
数组不为null
并且不足以容纳所有颜色和 alpha 分量(从normOffset
开始),则会抛出ArrayIndexOutOfBoundsException
。如果components
数组不足以容纳从offset
开始的所有颜色和 alpha 分量,则会抛出IllegalArgumentException
。由于
ColorModel
是一个抽象类,任何实例都是子类的实例。在此抽象类中,此方法的默认实现假定此类的分量值在未标准化形式下是方便表示的。因此,可能存在不支持未标准化形式的实例的子类必须覆盖此方法。- 参数:
-
components
- 包含未标准化分量的数组 -
offset
- 开始检索未标准化分量的components
数组中的偏移量 -
normComponents
- 从components
接收标准化分量的数组 -
normOffset
- 从normComponents
开始存储标准化分量的components
中的索引 - 返回:
- 包含标准化颜色和 alpha 分量的数组。
- 抛出:
-
IllegalArgumentException
- 如果此ColorModel
的分量值在未标准化形式下不方便表示。 -
UnsupportedOperationException
- 如果此ColorModel
的构造函数调用了super(bits)
构造函数,但未覆盖此方法。请参阅构造函数,ColorModel(int)
。 -
UnsupportedOperationException
- 如果此方法无法确定每个分量的位数
-
getDataElement
public int getDataElement(int[] components, int offset) 返回在此ColorModel
中表示为int
的像素值,给定一个未标准化颜色/alpha分量数组。如果此ColorModel
的分量值不方便表示为单个int
,或者如果此ColorModel
的颜色分量值在未标准化形式下不方便表示,则此方法将抛出IllegalArgumentException
。如果components
数组不足以容纳所有颜色和 alpha 分量(从offset
开始),则会抛出ArrayIndexOutOfBoundsException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。由于此抽象类中的实现会抛出UnsupportedOperationException
,因此子类必须覆盖此方法。- 参数:
-
components
- 未标准化颜色和 alpha 分量的数组 -
offset
- 开始检索颜色和 alpha 分量的components
中的索引 - 返回:
-
在此
ColorModel
中对应于指定分量的int
像素值。 - 抛出:
-
IllegalArgumentException
- 如果此ColorModel
的像素值不方便表示为单个int
-
IllegalArgumentException
- 如果此ColorModel
的分量值在未标准化形式下不方便表示 -
ArrayIndexOutOfBoundsException
- 如果components
数组不足以容纳从offset
开始的所有颜色和 alpha 分量 -
UnsupportedOperationException
- 如果此ColorModel
不支持此方法
-
getDataElements
返回在此ColorModel
中表示为数据元素数组的像素值,给定一个未标准化颜色/alpha分量数组。然后,可以将此数组传递给WritableRaster
对象的setDataElements
方法。如果此ColorModel
的颜色分量值在未标准化形式下不方便表示,则会抛出IllegalArgumentException
。如果components
数组不足以容纳所有颜色和 alpha 分量(从offset
开始),则会抛出ArrayIndexOutOfBoundsException
。如果obj
变量为null
,将分配一个新数组。如果obj
不为null
,它必须是类型为 transferType 的原始数组;否则,将抛出ClassCastException
。如果obj
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。由于此抽象类中的实现会抛出UnsupportedOperationException
,因此子类必须覆盖此方法。- 参数:
-
components
- 未规范化的颜色和alpha分量数组 -
offset
- 开始检索颜色和alpha分量的components
数组中的索引 -
obj
- 表示颜色和alpha分量数组的Object
- 返回:
-
代表颜色和alpha分量数组的
Object
- 抛出:
-
ClassCastException
- 如果obj
不是类型为transferType
的原始数组 -
ArrayIndexOutOfBoundsException
- 如果obj
不足以容纳此ColorModel
的像素值,或者components
数组不足以容纳从offset
开始的所有颜色和alpha分量 -
IllegalArgumentException
- 如果此ColorModel
的分量值在未规范化形式下不方便表示 -
UnsupportedOperationException
- 如果此方法不受此ColorModel
支持 - 参见:
-
getDataElement
public int getDataElement(float[] normComponents, int normOffset) 返回一个以int
表示的像素值,给定一个规范化颜色/alpha分量数组在此ColorModel
中。如果此ColorModel
的像素值不方便表示为单个int
,则会抛出IllegalArgumentException
。如果normComponents
数组不足以容纳所有颜色和alpha分量(从normOffset
开始),则会抛出ArrayIndexOutOfBoundsException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。此抽象类中此方法的默认实现首先从规范化形式转换为未规范化形式,然后调用getDataElement(int[], int)
。可能存在不支持未规范化形式的子类必须覆盖此方法。- 参数:
-
normComponents
- 规范化颜色和alpha分量数组 -
normOffset
- 开始检索颜色和alpha分量的normComponents
数组中的索引 - 返回:
-
在此
ColorModel
中对应于指定分量的int
像素值。 - 抛出:
-
IllegalArgumentException
- 如果此ColorModel
的像素值不方便表示为单个int
-
ArrayIndexOutOfBoundsException
- 如果normComponents
数组不足以容纳从normOffset
开始的所有颜色和alpha分量 - 自1.4版本起:
- 1.4
-
getDataElements
返回此ColorModel
中像素的数据元素数组表示,给定一个规范化颜色/alpha分量数组。然后可以将此数组传递给WritableRaster
对象的setDataElements
方法。如果normComponents
数组不足以容纳所有颜色和alpha分量(从normOffset
开始),则会抛出ArrayIndexOutOfBoundsException
。如果obj
变量为null
,将分配一个新数组。如果obj
不为null
,它必须是类型为transferType的原始数组;否则,将抛出ClassCastException
。如果obj
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。此抽象类中此方法的默认实现首先从规范化形式转换为未规范化形式,然后调用getDataElement(int[], int, Object)
。可能存在不支持未规范化形式的子类必须覆盖此方法。- 参数:
-
normComponents
- 规范化颜色和alpha分量数组 -
normOffset
- 开始检索颜色和alpha分量的normComponents
数组中的索引 -
obj
- 用于保存返回像素的原始数据数组 - 返回:
-
一个代表像素的原始数据数组的
Object
- 抛出:
-
ClassCastException
- 如果obj
不是类型为transferType
的原始数组 -
ArrayIndexOutOfBoundsException
- 如果obj
不足以容纳此ColorModel
的像素值,或者normComponents
数组不足以容纳从normOffset
开始的所有颜色和alpha分量 - 自1.4版本起:
- 1.4
- 参见:
-
getNormalizedComponents
返回一个以规范化形式表示的所有颜色/alpha分量的数组,给定此ColorModel
中的像素。像素值由作为对象引用传递的transferType类型的数据元素数组的数组指定。如果像素不是类型为transferType的原始数组,则会抛出ClassCastException
。如果pixel
不足以容纳此ColorModel
的像素值,则会抛出ArrayIndexOutOfBoundsException
。规范化分量是介于由此ColorModel
的ColorSpace
对象指定的每个分量最小值和最大值之间的浮点值。如果normComponents
数组为null
,将分配一个新数组。将返回normComponents
数组。颜色/alpha分量存储在从normOffset
开始的normComponents
数组中(即使此方法分配数组)。如果normComponents
数组不为null
且不足以容纳所有颜色和alpha分量(从normOffset
开始),则会抛出ArrayIndexOutOfBoundsException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。此抽象类中此方法的默认实现首先使用getComponents(Object, int[], int)
从未规范化形式中检索颜色和alpha分量,然后调用getNormalizedComponents(int[], int, float[], int)
。可能存在不支持未规范化形式的子类必须覆盖此方法。- 参数:
-
pixel
- 指定的像素 -
normComponents
- 用于接收规范化分量的数组 -
normOffset
- 开始存储规范化分量的normComponents
数组中的偏移量 - 返回:
- 包含规范化颜色和alpha分量的数组。
- 抛出:
-
ClassCastException
- 如果pixel
不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException
- 如果normComponents
不足以容纳从normOffset
开始的所有颜色和alpha分量 -
ArrayIndexOutOfBoundsException
- 如果pixel
不足以容纳此ColorModel
的像素值 -
UnsupportedOperationException
- 如果此ColorModel
的构造函数调用了super(bits)
构造函数,但未覆盖此方法。请参阅构造函数,ColorModel(int)
。 -
UnsupportedOperationException
- 如果此方法无法确定每个分量的位数 - 自1.4版本起:
- 1.4
-
equals
此方法简单地委托给Object
中的默认实现,该实现与==
测试相同,因为此类无法强制执行对多个独立子类分支的适当相等性测试的问题。鼓励子类覆盖此方法,并为自己的属性提供相等性测试,以及为以下ColorModel
的常见基本属性提供相等性测试:- 支持alpha分量。
- 是否alpha预乘。
- 每像素位数。
- 透明度类型,如不透明、位掩码或半透明。
- 每像素组件数。
ColorSpace
类型。- 用于表示像素值的数组类型。
- 每个颜色和alpha分量的有效位数。
-
hashCode
public int hashCode()此方法简单地委托给Object
中的默认实现,该实现返回类的系统ID。鼓励子类覆盖此方法,并为自己的属性提供哈希值,以及为ColorModel
的以下常见基本属性的值进行哈希处理:- 支持alpha分量。
- 是否alpha预乘。
- 每像素的位数。
- 透明度类型,如Opaque、Bitmask或Translucent。
- 每像素的组件数。
ColorSpace
类型。- 用于表示像素值的数组类型。
- 每个颜色和alpha分量的有效位数。
-
getColorSpace
返回与此ColorModel
关联的ColorSpace
。- 返回:
-
此
ColorModel
的ColorSpace
。
-
coerceData
强制栅格数据与isAlphaPremultiplied
变量指定的状态匹配,假设数据当前由此ColorModel
正确描述。它可能通过alpha乘法或除法来处理颜色栅格数据,或者如果数据处于正确状态,则不执行任何操作。如果数据需要强制转换,此方法还将返回一个适当设置isAlphaPremultiplied
标志的此ColorModel
的实例。如果此ColorModel
不支持此操作,此方法将抛出UnsupportedOperationException
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
raster
-WritableRaster
数据 -
isAlphaPremultiplied
- 如果alpha已预乘,则为true
; 否则为false
- 返回:
-
代表强制数据的
ColorModel
对象。
-
isCompatibleRaster
如果raster
与此ColorModel
兼容,则返回true
;否则返回false
。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
raster
- 要测试兼容性的Raster
对象 - 返回:
-
如果
raster
与此ColorModel
兼容,则返回true
。 - 抛出:
-
UnsupportedOperationException
- 如果此ColorModel
未实现此方法
-
createCompatibleWritableRaster
创建一个具有指定宽度和高度的WritableRaster
,其数据布局(SampleModel
)与此ColorModel
兼容。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
w
- 应用于新WritableRaster
的宽度 -
h
- 应用于新WritableRaster
的高度 - 返回:
-
具有指定宽度和高度的
WritableRaster
对象。 - 抛出:
-
UnsupportedOperationException
- 如果此ColorModel
不支持此方法 - 参见:
-
createCompatibleSampleModel
创建一个具有指定宽度和高度的SampleModel
,其数据布局与此ColorModel
兼容。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
w
- 应用于新SampleModel
的宽度 -
h
- 应用于新SampleModel
的高度 - 返回:
-
具有指定宽度和高度的
SampleModel
对象。 - 抛出:
-
UnsupportedOperationException
- 如果此ColorModel
不支持此方法 - 参见:
-
isCompatibleSampleModel
检查SampleModel
是否与此ColorModel
兼容。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数:
-
sm
- 指定的SampleModel
- 返回:
-
如果指定的
SampleModel
与此ColorModel
兼容,则返回true
;否则返回false
。 - 抛出:
-
UnsupportedOperationException
- 如果此ColorModel
不支持此方法 - 参见:
-
getAlphaRaster
返回表示图像的alpha通道的Raster
,从输入Raster
中提取,前提是此ColorModel
的像素值将颜色和alpha信息作为单独的空间波段表示(例如ComponentColorModel
和DirectColorModel
)。此方法假定与此ColorModel
关联的Raster
对象将alpha通道(如果存在)存储为图像数据的最后一个波段。如果没有与此ColorModel
关联的单独的空间alpha通道,则返回null
。如果这是具有查找表中alpha的IndexColorModel
,此方法将返回null
,因为没有空间上离散的alpha通道。此方法将创建一个新的Raster
(但将共享数据数组)。由于ColorModel
是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,以获得除返回null
之外的任何行为,因为此抽象类中的实现返回null
。- 参数:
-
raster
- 指定的Raster
- 返回:
-
从指定的
Raster
中获取表示图像的alpha通道的Raster
。
-
toString
返回此ColorModel
对象内容的String
表示形式。
-