JavaTM Platform
Standard Ed. 6

java.awt.image
类 ComponentColorModel

java.lang.Object
  继承者 java.awt.image.ColorModel
      继承者 java.awt.image.ComponentColorModel
所有已实现的接口:
Transparency

public class ComponentColorModel
extends ColorModel

使用像素值将颜色和 alpha 信息表示为独立样本的 ColorModel 类,该类以独立的数据元素存储每个样本。此类可以与任意 ColorSpace 一起使用。像素值中的颜色样本数必须与 ColorSpace 中的颜色分量数相同。可以有单个 alpha 样本。

对于那些使用 transferType 类型的基本数组像素表示形式的方法,数组的长度与颜色和 alpha 样本数相同。颜色样本存储在后跟 alpha 样本(如果存在)的数组的前面。颜色样本的顺序由 ColorSpace 指定。通常,此顺序反映颜色空间类型的名称。例如,对于 TYPE_RGB,索引 0 对应于红色,索引 1 对应于绿色,索引 2 对应于蓝色。

出于显示或处理目的而执行的像素值到颜色/alpha 分量的转换是基于从样本到分量的一一对应关系进行的。由实例表示的像素样本值可以是有符号的或无符号的,也可以是整型或者 float 或 double 类型(有关细节请参见以下内容),具体取决于用来创建 ComponentColorModel 实例的传输类型。从样本值到标准化颜色/alpha 分量的转换必须遵循一定的规则。对于 float 和 double 样本,转换为一种标识,即标准化分量值等于相应的样本值。对于整数样本,转换应该只是简单缩放和偏移,其中每个分量的缩放和偏移常量可以有所不同。应用缩放和偏移常量的结果是形成一组颜色/alpha 分量值,这样可以保证这些值落到一定范围内。通常,颜色分量的范围将为由 ColorSpace 类的 getMinValuegetMaxValue 方法定义的范围。alpha 分量的范围应为从 0.0 到 1.0。

用传输类型 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 创建的 ComponentColorModel 的实例具有被视为无符号整数值的像素样本值。像素值的颜色或 alpha 样本中的位数可能不同于传递到 ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int) 构造方法的相应颜色或 alpha 样本的位数。在这种情况下,此类假定样本值的 n 位最低有效位保存分量值,其中 n 为传递到构造方法的分量的有效位数。它还假定样本值中所有较高位都为零。因此,样本值的范围为 0 到 2n - 1。此类将这些样本值映射到标准化颜色分量值,以使 0 映射到从每个分量的 ColorSpacegetMinValue 方法得到的值,2n - 1 映射到从 getMaxValue 得到的值。创建具有不同颜色样本映射的 ComponentColorModel 需要子类化此类,并重写 getNormalizedComponents(Object, float[], int) 方法。alpha 样本的映射始终将 0 映射到 0.0,将 2n - 1 映射到 1.0。

对于带有无符号样本值的实例,仅当两个条件都具备时,非标准化的颜色/alpha 分量表示形式才受支持。首先,样本值 0 必须映射到标准化分量值 0.0,样本值 2n - 1 映射到 1.0。其次,ColorSpace 的所有颜色分量的最小值/最大取值范围必须为 0.0 到 1.0 之间。在这种情况下,分量表示形式为相应样本的 n 位最低有效位。因此,每个分量都为介于 0 和 2n - 1 之间的无符号整数值,其中 n 为特定分量的有效位数。如果未满足这些条件,则采用非标准化分量参数的任何方法都将抛出 IllegalArgumentException

用传输类型 DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 创建的 ComponentColorModel 的实例具有被视为有符号的 short、float 或 double 值的像素样本值。此类实例不支持非标准化的颜色/alpha 分量表示形式,因此将此类表示形式用作参数在这些实例的其中之一上调用任何方法都将抛出 IllegalArgumentException。此类实例的标准化分量的取值范围取决于传输类型,如下所示:对于 float 样本,则为 float 数据类型的完整范围;对于 double 样本,则为 float 数据类型(通过将 double 强制转换为 float 得到)的完整范围;对于 short 样本,大致为 -maxVal 到 +maxVal,其中 maxVal 为 ColorSpace 的每分量最大值(-32767 映射到 -maxVal,0 映射到 0.0,32767 映射到 +maxVal)。通过重写 getNormalizedComponents(Object, float[], int) 方法,子类可以重写 short 样本值到标准化分量值的缩放。对于 float 和 double 样本,标准化分量值被视为等于相应的样本值,子类不应试图添加这些传输类型的任何非标识缩放。

用传输类型 DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 创建的 ComponentColorModel 的实例使用所有样本值的所有位。因此,使用 DataBuffer.TYPE_SHORT 时所有颜色/alpha 分量都有 16 位,使用 DataBuffer.TYPE_FLOAT 时都有 32,使用 DataBuffer.TYPE_DOUBLE 时都有 64 位。当构造方法的 ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int) 形式与这些传输类型之一一起使用时,位数组参数将被忽略。

可能将不能合理解释的颜色/alpha 样本值视为用于呈现的分量值。当子类化 ComponentColorModel 以重写无符号样本值到标准化颜色分量值的映射时,或当使用某一范围之外的有符号样本值时,此现象可能发生。(例如,将 alpha 分量指定为范围 0 到 32767(即标准化范围 0.0 到 1.0)之外的有符号 short 值可能导致不可预料的结果)。应用程序负责在呈现之前适当缩放像素数据,以使颜色分量落在 ColorSpace(使用 ColorSpace 类的 getMinValuegetMaxValue 方法得到)的标准化范围内,并使 alpha 分量位于 0.0 和 1.0 之间。如果颜色或 alpha 分量值超出这些范围,则呈现结果是不确定的。

使用单个 int 像素表示形式的方法抛出 IllegalArgumentException,除非 ComponentColorModel 的分量数为 1 且分量值无符号,即使用 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 的传输类型的单个颜色分量,没有 alpha 分量。

ComponentColorModel 可以与 ComponentSampleModelBandedSampleModelPixelInterleavedSampleModel 一起使用,以构造 BufferedImage

另请参见:
ColorModel, ColorSpace, ComponentSampleModel, BandedSampleModel, PixelInterleavedSampleModel, BufferedImage

字段摘要
 
从类 java.awt.image.ColorModel 继承的字段
pixel_bits, transferType
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
ComponentColorModel(ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
          根据指定参数构造 ComponentColorModel
ComponentColorModel(ColorSpace colorSpace, int[] bits, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
          根据指定参数构造 ComponentColorModel
 
方法摘要
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
          强制使光栅数据与在 isAlphaPremultiplied 变量中指定的状态匹配,假定当前该数据已由此 ColorModel 正确描述。
 SampleModel createCompatibleSampleModel(int w, int h)
          用指定宽度和高度创建的 SampleModel,具有与此 ColorModel 兼容的数据布局。
 WritableRaster createCompatibleWritableRaster(int w, int h)
          用指定宽度和高度创建的 WritableRaster,具有与此 ColorModel 兼容的数据布局 (SampleModel)。
 boolean equals(Object obj)
          将此颜色模型与其他模型进行相等性比较。
 int getAlpha(int pixel)
          返回指定像素(缩放范围从 0 到 255)的 alpha 分量。
 int getAlpha(Object inData)
          返回指定像素(在 0 到 255 之间缩放)的 alpha 分量。
 WritableRaster getAlphaRaster(WritableRaster raster)
          返回表示某图像(从输入 Raster 提取)的 alpha 通道的 Raster
 int getBlue(int pixel)
          返回指定像素的蓝色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getBlue(Object inData)
          返回指定像素的蓝颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int[] getComponents(int pixel, int[] components, int offset)
          返回在 ColorModel 中已给定像素的非标准化颜色/alpha 分量。
 int[] getComponents(Object pixel, int[] components, int offset)
          返回在此 ColorModel 中已给定像素的非标准化颜色/alpha 分量的数组。
 int getDataElement(float[] normComponents, int normOffset)
          在已给定标准化颜色/alpha 分量的数组的情况下,返回以 int 类型表示在此 ColorModel 中的像素值。
 int getDataElement(int[] components, int offset)
          返回在 ColorModel 中表示为 int 的像素值(已给定非标准化颜色/alpha 分量的数组)。
 Object getDataElements(float[] normComponents, int normOffset, Object obj)
          在已给定标准化颜色/alpha 分量的数组的情况下,返回此 ColorModel 中像素的数据元素数组表示形式。
 Object getDataElements(int[] components, int offset, Object obj)
          在已给定非标准化颜色/alpha 分量的情况下,返回此 ColorModel 中像素的数据元素数组表示形式。
 Object getDataElements(int rgb, Object pixel)
          在默认 RGB 颜色模型中给定整数像素的表示形式的情况下,返回此 ColorModel 中像素的数据元素数组的表示形式。
 int getGreen(int pixel)
          返回指定像素的绿色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getGreen(Object inData)
          返回指定像素的绿色分量,指定像素在默认的 RGB ColorSpace(即 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 getRed(int pixel)
          返回指定像素的红色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getRed(Object inData)
          返回指定像素的红色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getRGB(int pixel)
          返回默认的 RGB 颜色模型格式中像素的颜色/alpha 分量。
 int getRGB(Object inData)
          返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。
 int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
          在已给定标准化分量数组的情况下,返回以非标准化形式存在的所有颜色/alpha 分量的数组。
 boolean isCompatibleRaster(Raster raster)
          如果 raster 与此 ColorModel 兼容,则返回 true;如果不兼容,则返回 false。
 boolean isCompatibleSampleModel(SampleModel sm)
          检查指定 SampleModel 是否与此 ColorModel 兼容。
 
从类 java.awt.image.ColorModel 继承的方法
finalize, getColorSpace, getComponentSize, getComponentSize, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransferType, getTransparency, hasAlpha, hashCode, isAlphaPremultiplied, toString
 
从类 java.lang.Object 继承的方法
clone, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

ComponentColorModel

public ComponentColorModel(ColorSpace colorSpace,
                           int[] bits,
                           boolean hasAlpha,
                           boolean isAlphaPremultiplied,
                           int transparency,
                           int transferType)
根据指定参数构造 ComponentColorModel。颜色分量将在指定的 ColorSpace 中。受支持的传输类型为 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE。如果不为 null,则 bits 数组指定每个颜色和 alpha 分量的有效位数,并且如果像素值中不存在 alpha 信息,则其长度至少应该是 ColorSpace 中分量数,如果存在 alpha 信息,则其长度大于此数。当 transferTypeDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 时,忽略 bits 数组参数。hasAlpha 指示是否存在 alpha 信息。如果 hasAlpha 为 true,则布尔值 isAlphaPremultiplied 指定如何解释像素值中的颜色和 alpha 样本。如果布尔值为 true,则假定颜色样本已与 alpha 样本相乘。transparency 指定可以由此颜色模型表示的 alpha 值。可以接受的 transparency 值为 OPAQUEBITMASKTRANSLUCENTtransferType 是用于表示像素值的基本数组的类型。

参数:
colorSpace - 与此颜色模型关联的 ColorSpace
bits - 每个分量的有效位数。可以为 null,在这种情况下,所有分量样本的所有位都将有效。如果 transferType 为 DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 之一,则忽略,在这种情况下,所有分量样本的所有位都将有效。
hasAlpha - 如果为 true,则此颜色模型支持 alpha。
isAlphaPremultiplied - 如果为 true,则 alpha 预乘的。
transparency - 指定可以由此颜色模型表示的 alpha 值。
transferType - 指定用于表示像素值的基本数组的类型。
抛出:
IllegalArgumentException - 如果 bits 数组参数不为 null,则其长度小于颜色和 alpha 分量数,且 transferType 为 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 之一。
IllegalArgumentException - 如果 transferType 不为 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 之一。
另请参见:
ColorSpace, Transparency

ComponentColorModel

public ComponentColorModel(ColorSpace colorSpace,
                           boolean hasAlpha,
                           boolean isAlphaPremultiplied,
                           int transparency,
                           int transferType)
根据指定参数构造 ComponentColorModel。颜色分量将在指定的 ColorSpace 中。受支持的传输类型为 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE。每个颜色和 alpha 分量的有效位数都分别为 8、16、32、16、32 或 64。颜色分量数为 ColorSpace 中的分量数。如果 hasAlphatrue,则存在 alpha 分量。如果 hasAlpha 为 true,则布尔值 isAlphaPremultiplied 指定如何解释像素值中的颜色和 alpha 样本。如果布尔值为 true,则假定颜色样本已与 alpha 样本相乘。transparency 指定可以由此颜色模型表示的 alpha 值。可以接受的 transparency 值为 OPAQUEBITMASKTRANSLUCENTtransferType 是用于表示像素值的基本数组的类型。

参数:
colorSpace - 与此颜色模型关联的 ColorSpace
hasAlpha - 如果为 true,则此颜色模型支持 alpha。
isAlphaPremultiplied - 如果为 true,则 alpha 预乘的。
transparency - 指定可以由此颜色模型表示的 alpha 值。
transferType - 指定用于表示像素值的基本数组的类型。
抛出:
IllegalArgumentException - 如果 transferType 不为 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE 之一。
从以下版本开始:
1.4
另请参见:
ColorSpace, Transparency
方法详细信息

getRed

public int getRed(int pixel)
返回指定像素的红色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为 int。返回的值为非预先乘得的值。如果与 alpha 预先相乘,此方法将在返回值(如果 alpha 值为 0,则红色值将为 0)之前将其除出来。

指定者:
ColorModel 中的 getRed
参数:
pixel - 要从中获取红色分量的像素。
返回:
指定像素(int 类型)的红色分量。
抛出:
IllegalArgumentException - 如果此 ColorModel 中有一个以上的分量。
IllegalArgumentException - 如果此 ColorModel 的分量值为有符号的。

getGreen

public int getGreen(int pixel)
返回指定像素的绿色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为 int。返回的值为非预先乘得的值。如果与 alpha 预先相乘,此方法将在返回值(如果 alpha 值为 0,则绿色值将为 0)之前将其除出来。

指定者:
ColorModel 中的 getGreen
参数:
pixel - 要从中获取绿色分量的像素。
返回:
指定像素(int 类型)的绿色分量。
抛出:
IllegalArgumentException - 如果此 ColorModel 中有一个以上的分量。
IllegalArgumentException - 如果此 ColorModel 的分量值为有符号的。

getBlue

public int getBlue(int pixel)
返回指定像素的蓝色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为 int。返回的值为非预先乘得的值。如果与 alpha 预先相乘,此方法将在返回值(如果 alpha 值为 0,则蓝色值将为 0)之前将其除出来。

指定者:
ColorModel 中的 getBlue
参数:
pixel - 要从中获取蓝色分量的像素。
返回:
指定像素(int 类型)的蓝色分量。
抛出:
IllegalArgumentException - 如果此 ColorModel 中有一个以上的分量。
IllegalArgumentException - 如果此 ColorModel 的分量值为有符号的。

getAlpha

public int getAlpha(int pixel)
返回指定像素(缩放范围从 0 到 255)的 alpha 分量。像素值指定为 int。

指定者:
ColorModel 中的 getAlpha
参数:
pixel - 要从中获取 alpha 分量的像素。
返回:
指定像素(int 类型)的 alpha 分量。
抛出:
IllegalArgumentException - 如果此 ColorModel 中有一个以上的分量。
IllegalArgumentException - 如果此 ColorModel 的分量值为有符号的。

getRGB

public int getRGB(int pixel)
返回默认的 RGB 颜色模型格式中像素的颜色/alpha 分量。如有必要,可进行颜色转换。返回的值是非预乘格式。如果与 alpha 预先相乘,此方法会将其从颜色分量(如果 alpha 值为 0,则颜色值为 0)中除出来。

覆盖:
ColorModel 中的 getRGB
参数:
pixel - 要从中获取颜色/alpha 分量的像素。
返回:
指定像素(int 类型)的颜色/alpha 分量。
抛出:
IllegalArgumentException - 如果此 ColorModel 中有一个以上的分量。
IllegalArgumentException - 如果此 ColorModel 的分量值为有符号的。
另请参见:
ColorModel.getRGBdefault()

getRed

public int getRed(Object inData)
返回指定像素的红色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。pixel 值由作为对象引用而传入的类型 transferType 的数据元素的数组指定。返回的值为非预先乘得的值。如果与 alpha 预先相乘,此方法将在返回值(如果 alpha 值为 0,则红色值将为 0)之前将其除出来。因为 ComponentColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getRed
参数:
inData - 要从中获取红色分量(由类型 transferType 的数据元素的数组指定)的像素。
返回:
指定像素(int 类型)的红色分量。
抛出:
ClassCastException - 如果 inData 不为类型 transferType 的基本数组。
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getGreen

public int getGreen(Object inData)
返回指定像素的绿色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。pixel 值由作为对象引用而传入的类型 transferType 的数据元素的数组指定。返回的值是一个非预先乘得的值。如果与 alpha 预先相乘,此方法将在返回值(如果 alpha 值为 0,则绿色值将为 0)之前将其除出来。因为 ComponentColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getGreen
参数:
inData - 要从中获取绿色分量(由类型 transferType 的数据元素的数组指定)的像素。
返回:
指定像素(int 类型)的绿色分量。
抛出:
ClassCastException - 如果 inData 不为类型 transferType 的基本数组。
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getBlue

public int getBlue(Object inData)
返回指定像素的蓝颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。pixel 值由作为对象引用而传入的类型 transferType 的数据元素的数组指定。返回的值是一个非预先乘得的值。如果与 alpha 预先相乘,此方法将在返回值(如果 alpha 值为 0,则蓝色值将为 0)之前将其除出来。因为 ComponentColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getBlue
参数:
inData - 要从中获取蓝色分量(由类型 transferType 的数据元素的数组指定)的像素。
返回:
指定像素(int 类型)的蓝色分量。
抛出:
ClassCastException - 如果 inData 不为类型 transferType 的基本数组。
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getAlpha

public int getAlpha(Object inData)
返回指定像素(在 0 到 255 之间缩放)的 alpha 分量。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。因为 ComponentColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getAlpha
参数:
inData - 要从中获取 alpha 分量(由类型 transferType 的数据元素的数组指定)的像素。
返回:
指定像素(int 类型)的 alpha 分量。
抛出:
ClassCastException - 如果 inData 不为类型 transferType 的基本数组。
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

getRGB

public int getRGB(Object inData)
返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。如有必要,可进行颜色转换。像素值由作为一个对象引用而传入的 transferType 类型的数据元素数组指定。返回的值是非预乘格式。如果与 alpha 预先相乘,此方法会将其从颜色分量(如果 alpha 值为 0,则颜色值为 0)中除出来。因为 ComponentColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getRGB
参数:
inData - 要从中获取颜色/alpha 分量(由类型 transferType 的数据元素的数组指定)的像素。
返回:
指定像素(int 类型)的颜色/alpha 分量。
抛出:
ClassCastException - 如果 inData 不为类型 transferType 的基本数组。
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
另请参见:
ColorModel.getRGBdefault()

getDataElements

public Object getDataElements(int rgb,
                              Object pixel)
在默认 RGB 颜色模型中给定整数像素的表示形式的情况下,返回此 ColorModel 中像素的数据元素数组的表示形式。然后可以将此数组传递给 WritableRaster 对象的 setDataElements 方法。如果 pixel 参数为 null,则分配新数组。因为 ComponentColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getDataElements
参数:
rgb - RGB 颜色模型中像素的整数表示形式
pixel - 指定像素
返回:
ColorModel 中像素的数据元素数组表示形式。
抛出:
ClassCastException - 如果 pixel 不为 null 且不为类型 transferType 的基本数组。
ArrayIndexOutOfBoundsException - 如果 pixel 不是特别大,不能保存此 ColorModel 的像素值。
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
另请参见:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getComponents

public int[] getComponents(int pixel,
                           int[] components,
                           int offset)
返回在 ColorModel 中已给定像素的非标准化颜色/alpha 分量。如果此 ColorModel 的分量值不便于以非标准化形式表示,则返回 IllegalArgumentException。将颜色/alpha 分量存储在以 offset 开头的 components 数组中,即便此方法已分配了数组也是如此。

覆盖:
ColorModel 中的 getComponents
参数:
pixel - 指定为整数的像素值。
components - 在其中存储非标准化颜色/alpha 分量的整数数组。如果 components 数组为 null,则分配新数组。
offset - components 数组的偏移量。
返回:
分量数组。
抛出:
IllegalArgumentException - 如果此 ColorModel 中有一个以上的分量。
IllegalArgumentException - 如果此 ColorModel 不支持非标准化形式
ArrayIndexOutOfBoundsException - 如果 components 数组不为 null 且不是特别大,不能保存所有颜色和 alpha 分量(以偏移量开头)。

getComponents

public int[] getComponents(Object pixel,
                           int[] components,
                           int offset)
返回在此 ColorModel 中已给定像素的非标准化颜色/alpha 分量的数组。像素值由作为一个对象引用而传入的 transferType 类型的数据元素数组指定。如果此 ColorModel 的分量值不便于以非标准化形式表示,则返回 IllegalArgumentException。将颜色/alpha 分量存储在以 offset 开头的 components 数组中,即便此方法已分配了数组也是如此。因为 ComponentColorModel可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则在其使用不受支持的 transferType 时此方法可能抛出异常。

覆盖:
ColorModel 中的 getComponents
参数:
pixel - 由类型 transferType 的数据元素的数组指定的像素值。
components - 在其中存储非标准化颜色/alpha 分量的整数数组。如果 components 数组为 null,则分配新数组。
offset - components 数组的偏移量。
返回:
components 数组。
抛出:
IllegalArgumentException - 如果此 ComponentColorModel 不支持非标准化形式
UnsupportedOperationException - 在某些情况下,如果此 ComponentColorModel 的传输类型不为以下传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
ClassCastException - 如果 pixel 不为类型 transferType 的基本数组。
IllegalArgumentException - 如果 components 数组不为 null 且不是特别大,不能保存所有颜色或 alpha 分量(以偏移量开头),或者 pixel 不是特别大,不能保存此 ColorModel 的像素值。

getUnnormalizedComponents

public int[] getUnnormalizedComponents(float[] normComponents,
                                       int normOffset,
                                       int[] components,
                                       int offset)
在已给定标准化分量数组的情况下,返回以非标准化形式存在的所有颜色/alpha 分量的数组。非标准化分量为 0 和 2n - 1 之间的无符号整数值,其中 n 为特定分量的位数。标准化分量为 float 值,这些值介于此 ColorModelColorSpace 对象指定的每个分量的最小值和最大值之间。如果此 ColorModel 的颜色分量值不便于用非标准化形式表示,则抛出 IllegalArgumentException。如果 components 数组为 null,则分配一个新数组。components 数组将返回。将颜色/alpha 分量存储在以 offset 开头的 components 数组中,即便此方法已分配了数组也是如此。如果 components 数组不为 null 且不是特别大,不能以 offset 开头保存所有颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException。如果 normComponents 数组不是特别大,不能保存以 normOffset 开头的所有颜色和 alpha 分量,则抛出 IllegalArgumentException

覆盖:
ColorModel 中的 getUnnormalizedComponents
参数:
normComponents - 包含标准化分量的数组
normOffset - 开始检索标准化分量的 normComponents 数组的偏移量
components - 从 normComponents 检索分量的数组
offset - 在其处开始存储 normComponentscomponents 的索引
返回:
包含非标准化颜色和 alpha 分量的数组。
抛出:
IllegalArgumentException - 如果此 ComponentColorModel 不支持非标准化形式
IllegalArgumentException - 如果 normComponents 的长度减去 normOffset 小于 numComponents

getNormalizedComponents

public float[] getNormalizedComponents(int[] components,
                                       int offset,
                                       float[] normComponents,
                                       int normOffset)
在给定标准化分量数组的情况下,返回以标准化形式存在的所有颜色/alpha 分量的数组。非标准化分量为 0 和 2n - 1 之间的无符号整数值,其中 n 为特定分量的位数。标准化分量为 float 值,这些值介于此 ColorModelColorSpace 对象指定的每个分量的最小值和最大值之间。如果此 ColorModel 的颜色分量值不便于用非标准化形式表示,则抛出 IllegalArgumentException。如果 normComponents 数组为 null,则分配一个新数组。normComponents 数组将返回。颜色/alpha 分量存储在以 normOffset 开头的 normComponents 数组中,即使此方法已分配了数组也如此。如果 normComponents 数组不为 null,且不是特别大,不能保存所有颜色和 alpha 分量(以 normOffset 开头),则抛出 ArrayIndexOutOfBoundsException。如果 components 数组不是特别大,不能保存以 offset 开头的所有颜色和 alpha 分量,则抛出 IllegalArgumentException

覆盖:
ColorModel 中的 getNormalizedComponents
参数:
components - 包含非标准化分量的数组
offset - 开始检索非标准化分量的 components 数组的偏移量
normComponents - 收到标准化分量的数组
normOffset - 在其处开始存储标准化分量的 normComponents 的索引
返回:
包含标准化颜色和 alpha 分量的数组。
抛出:
IllegalArgumentException - 如果此 ComponentColorModel 不支持非标准化形式

getDataElement

public int getDataElement(int[] components,
                          int offset)
返回在 ColorModel 中表示为 int 的像素值(已给定非标准化颜色/alpha 分量的数组)。

覆盖:
ColorModel 中的 getDataElement
参数:
components - 非标准化颜色/alpha 分量的数组。
offset - components 数组的偏移量。
返回:
表示为 int 的像素值。
抛出:
IllegalArgumentException - 如果此 ColorModel 中有一个以上的分量。
IllegalArgumentException - 如果此 ComponentColorModel 不支持非标准化形式

getDataElements

public Object getDataElements(int[] components,
                              int offset,
                              Object obj)
在已给定非标准化颜色/alpha 分量的情况下,返回此 ColorModel 中像素的数据元素数组表示形式。然后可以将此数组传递给 WritableRaster 对象的 setDataElements 方法。

覆盖:
ColorModel 中的 getDataElements
参数:
components - 非标准化颜色/alpha 分量的数组。
offset - components 数组的整数偏移量。
obj - 在其中存储像素的数据元素数组表示形式的对象。如果 obj 变量为 null,则分配新数组。如果 obj 不为 null,则其必须为类型 transferType 的基本数组。如果 obj 不是特别大,不能保存此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。因为 ComponentColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。
返回:
ColorModel 中像素的数据元素数组表示形式。
抛出:
IllegalArgumentException - 如果分量数组不是特别大,不能保存所有以偏移量开头的颜色和 alpha 分量。
ClassCastException - 如果 obj 不为 null 且不为类型 transferType 的基本数组。
ArrayIndexOutOfBoundsException - 如果 obj 不是特别大,不能保存此 ColorModel 的像素值。
IllegalArgumentException - 如果此 ComponentColorModel 不支持非标准化形式
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
另请参见:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getDataElement

public int getDataElement(float[] normComponents,
                          int normOffset)
在已给定标准化颜色/alpha 分量的数组的情况下,返回以 int 类型表示在此 ColorModel 中的像素值。如果此 ColorModel 的像素值不便于用单个 int,则此方法将抛出 IllegalArgumentException。如果 normComponents 数组不是特别大,不能保存所有以 normOffset 开头的颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException

覆盖:
ColorModel 中的 getDataElement
参数:
normComponents - 标准化颜色和 alpha 分量的数组
normOffset - 开始检索颜色和 alpha 分量的 normComponents 的索引
返回:
ColorModel 中对应于指定分量的 int 像素值。
抛出:
IllegalArgumentException - 如果此 ColorModel 的像素值不便于用单个 int 表示
ArrayIndexOutOfBoundsException - 如果 normComponents 数组不是特别大,不能保存以 normOffset 开头的所有颜色和 alpha 分量
从以下版本开始:
1.4

getDataElements

public Object getDataElements(float[] normComponents,
                              int normOffset,
                              Object obj)
在已给定标准化颜色/alpha 分量的数组的情况下,返回此 ColorModel 中像素的数据元素数组表示形式。然后可以将此数组传递给 WritableRaster 对象的 setDataElements 方法。如果 normComponents 数组不是特别大,不能保存所有以 normOffset 开头的颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException。如果 obj 变量为 null,则分配一个新数组。如果 obj 不为 null,则它必须为类型 transferType 的基本数组;否则将抛出 ClassCastException。如果 obj 不是特别大,不能保存此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException

覆盖:
ColorModel 中的 getDataElements
参数:
normComponents - 标准化颜色和 alpha 分量的数组
normOffset - 开始检索颜色和 alpha 分量的 normComponents 的索引
obj - 保存返回的像素的基本数据数组
返回:
为像素的基本数据数组表示形式的 Object
抛出:
ClassCastException - 如果 obj 不为类型 transferType 的基本数组
ArrayIndexOutOfBoundsException - 如果 obj 不是特别大,不能保存此 ColorModel 的像素值,或者 normComponents 数组不是特别大,不能保存以 normOffset 开头的所有颜色和 alpha 分量
从以下版本开始:
1.4
另请参见:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getNormalizedComponents

public float[] getNormalizedComponents(Object pixel,
                                       float[] normComponents,
                                       int normOffset)
返回已在 ColorModel 中给定了像素的标准化形式颜色/alpha 分量的数组。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。如果像素不为类型 transferType 的基本数组,则抛出 ClassCastException。如果 pixel 不是特别大,不能保存此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。标准化分量为 float 值,这些值介于此 ColorModelColorSpace 对象指定的每个分量的最小值和最大值之间。如果 normComponents 数组为 null,则分配一个新数组。normComponents 数组将返回。颜色/alpha 分量存储在以 normOffset 开头的 normComponents 数组中,即使此方法已分配了数组也如此。如果 normComponents 数组不为 null,且不是特别大,不能保存所有颜色和 alpha 分量(以 normOffset 开头),则抛出 ArrayIndexOutOfBoundsException

如果某子类旨在以非默认方式将像素样本值转换为颜色分量值,则该子类必须重写此方法。此类实现的默认转换在类的注释中描述。实现非默认转换的任何子类都必须遵循对此处定义的允许转换的限制。

覆盖:
ColorModel 中的 getNormalizedComponents
参数:
pixel - 指定像素
normComponents - 检索标准化分量的数组
normOffset - 在其处开始存储标准化分量的 normComponents 数组的偏移量
返回:
包含标准化颜色和 alpha 分量的数组。
抛出:
ClassCastException - 如果 pixel 不为类型 transferType 的基本数组
ArrayIndexOutOfBoundsException - 如果 normComponents 不是特别大,不能保存以 normOffset 开头的所有颜色和 alpha 分量
ArrayIndexOutOfBoundsException - 如果 pixel 不是特别大,不能保存此 ColorModel 的像素值。
从以下版本开始:
1.4

coerceData

public ColorModel coerceData(WritableRaster raster,
                             boolean isAlphaPremultiplied)
强制使光栅数据与在 isAlphaPremultiplied 变量中指定的状态匹配,假定当前该数据已由此 ColorModel 正确描述。可以将颜色 raster 数据乘以或除以 alpha,如果该数据处于正确状态,则不执行任何操作。如果需要对该数据强制匹配,则此方法还将相应地返回一个带有 isAlphaPremultiplied 标志集的 ColorModel 的实例。因为 ColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 coerceData
参数:
raster - WritableRaster 数据
isAlphaPremultiplied - 如果与 alpha 预乘,则返回 true;否则将返回 false
返回:
表示被强制匹配数据的 ColorModel 对象。
抛出:
NullPointerException - 如果 rasternull 且需要数据强制。
UnsupportedOperationException - 如果此 ComponentColorModel 的传输类型不为以下受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE

isCompatibleRaster

public boolean isCompatibleRaster(Raster raster)
如果 raster 与此 ColorModel 兼容,则返回 true;如果不兼容,则返回 false。

覆盖:
ColorModel 中的 isCompatibleRaster
参数:
raster - 用于测试兼容性的 Raster
返回:
如果 raster 与此 ColorModel 兼容,则返回 true;如果不兼容,则返回 false

createCompatibleWritableRaster

public WritableRaster createCompatibleWritableRaster(int w,
                                                     int h)
用指定宽度和高度创建的 WritableRaster,具有与此 ColorModel 兼容的数据布局 (SampleModel)。

覆盖:
ColorModel 中的 createCompatibleWritableRaster
参数:
w - 要创建的 WritableRaster 的宽度。
h - 要创建的 WritableRaster 的高度。
返回:
与此 ColorModel 兼容的 WritableRaster
另请参见:
WritableRaster, SampleModel

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
用指定宽度和高度创建的 SampleModel,具有与此 ColorModel 兼容的数据布局。

覆盖:
ColorModel 中的 createCompatibleSampleModel
参数:
w - 要创建的 SampleModel 的宽度。
h - 要创建的 SampleModel 的高度。
返回:
与此 ColorModel 兼容的 SampleModel
另请参见:
SampleModel

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)
检查指定 SampleModel 是否与此 ColorModel 兼容。

覆盖:
ColorModel 中的 isCompatibleSampleModel
参数:
sm - 用于测试兼容性的 SampleModel
返回:
如果 SampleModel 与此 ColorModel 兼容,则返回 true;如果不兼容,则返回 false
另请参见:
SampleModel

getAlphaRaster

public WritableRaster getAlphaRaster(WritableRaster raster)
返回表示某图像(从输入 Raster 提取)的 alpha 通道的 Raster。此方法假定与此 ColorModel 关联的 Raster 对象将 alpha band(如果有)存储为图像数据的最后一个 band。如果不存在与此 ColorModel 相关的独立空间 alpha 通道,则返回 null。此方法创建一个新的 Raster,但是共享原来的数据数组。

覆盖:
ColorModel 中的 getAlphaRaster
参数:
raster - 从中提取 alpha 通道的 WritableRaster
返回:
包含图像的 alpha 通道的 WritableRaster

equals

public boolean equals(Object obj)
将此颜色模型与其他模型进行相等性比较。

覆盖:
ColorModel 中的 equals
参数:
obj - 要与此颜色模型比较的对象。
返回:
如果颜色模型对象相等,则返回 true;如果不相等,则返回 false
另请参见:
Object.hashCode(), Hashtable

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策