java.awt.image

接口
异常
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 的分量值不便于以非标准化形式表示,则返回 Illega