|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.image.ColorModel
public abstract class ColorModel
此 ColorModel
抽象类封装了将像素值转换为颜色分量(例如,红色、绿色和蓝色)和 alpha 分量的方法。为了将图像呈现到屏幕、打字机或其他图像上,必须将像素值转换为颜色和 alpha 分量。与此类方法的参数或返回值一样,可以把像素表示为 32 位 int,或表示为基本类型的数组。ColorModel
颜色分量的数量、顺序和解释由其 ColorSpace
指定。与未包含 alpha 信息的像素数据一起使用的 ColorModel
将所有像素视为不透明的(alpha 值为 1.0)。
此 ColorModel
类支持像素值的两种表示形式。像素值可以为单个 32 位 int,也可以为一个基本类型的数组。Java(tm) Platform 1.0 和 1.1 API 将像素表示为单 byte
或单 int
值。根据此 ColorModel
类用途,可按 int 形式传递像素值参数。Java(tm) 2 Platform API 引入了表示图像的其他类。对于 BufferedImage
或 RenderedImage
对象(基于 Raster
和 SampleModel
类),像素值用单个 int 表示可能不太方便。因此,ColorModel
现在提供了以基本类型数组表示像素值的方法。特定 ColorModel
对象使用的基本类型被称作其转换类型。
当调用采用单个 int 像素参数的方法时,与其像素值不便于表示为单个 int 的图像一起使用的 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。当使用 ColorModel 和这些类型中前三个类型的图像时,多数呈现操作都会被更快地执行。而 ColorModel 和后三种类型的图像可能不支持某些图像的过滤操作。在创建特定 ColorModel
对象时,通常会显式或默认指定该对象的转换类型。ColorModel
的所有子类必须指定可能的转换类型和如何确定表示像素基本数组中元素的数量。
对于 BufferedImages
,其 Raster
和该 Raster
对象的 SampleModel
(从这些类的 getTransferType
方法中获得)的转换类型必须与 ColorModel
的转换类型匹配。表示 Raster
和 SampleModel
(从这些类的 getNumDataElements
方法中获得)的像素的数组中的元素数量必须与 ColorModel
的数量匹配。
用于将像素值转换为颜色和 alpha 分量的算法随子类不同而不同。例如,从 BufferedImage
对象的 Raster
和颜色/alpha 分量的 SampleModel
中得到的样本之间不需要一一对应。即使有此对应关系,样本中的位数也不必与相应的颜色/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 样本的颜色样本,则非标准化颜色分量也要预乘。非标准化形式只能与其 ColorSpace
所有分量的最小值为 0.0,所有分量的最大值为 1.0 的 ColorModel
的实例一起使用。颜色和 alpha 分量的非标准化形式可以是其标准化分量值都位于 0.0 和 1.0 之间的 ColorModels
的便捷表示形式。在这种情况下,整数值 0 映射到 0.0,而值 2n - 1 映射到 1.0。其他情况下,如标准化分量值可以为负数或正数、非标准化形式不方便使用。当调用包含非标准化参数的方法时,此类 ColorModel
对象将抛出 IllegalArgumentException
。ColorModel
的子类必须指定出现这种情况的条件。
IndexColorModel
,
ComponentColorModel
,
PackedColorModel
,
DirectColorModel
,
Image
,
BufferedImage
,
RenderedImage
,
ColorSpace
,
SampleModel
,
Raster
,
DataBuffer
字段摘要 | |
---|---|
protected int |
pixel_bits 像素总位数。 |
protected int |
transferType 用于表示像素值的数组的数据类型。 |
从接口 java.awt.Transparency 继承的字段 |
---|
BITMASK, OPAQUE, TRANSLUCENT |
构造方法摘要 | |
---|---|
|
ColorModel(int bits) 构造 ColorModel ,将指定位数的像素转换为颜色/alpha 分量。 |
protected |
ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType) 构造将像素值转换为颜色/alpha 分量的 ColorModel 。 |
方法摘要 | |
---|---|
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) 测试指定的 Object 是否是 ColorModel 的实例,以及它是否等于此 ColorModel 。 |
void |
finalize() 一旦不再引用此 ColorModel ,就要释放与此 ColorModel 相关的系统资源。 |
abstract int |
getAlpha(int pixel) 返回指定像素(缩放范围从 0 到 255)的 alpha 分量。 |
int |
getAlpha(Object inData) 返回指定像素(在 0 到 255 之间缩放)的 alpha 分量。 |
WritableRaster |
getAlphaRaster(WritableRaster raster) 返回表示图像(从输入 Raster 中提取)的 alpha 通道的 Raster ,除非此 ColorModel 的像素值将颜色和 alpha 信息表示为独立的空间 band(如 ComponentColorModel 和 DirectColorModel )。 |
abstract int |
getBlue(int pixel) 返回指定像素的蓝色分量的值,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。 |
int |
getBlue(Object inData) 返回指定像素的蓝颜色分量,指定像素在默认的 RGB ColorSpace (即 sRGB)中缩放范围是 0 到 255。 |
ColorSpace |
getColorSpace() 返回与此 ColorModel 相关的 ColorSpace 。 |
int[] |
getComponents(int pixel, int[] components, int offset) 返回在 ColorModel 中已给定像素的非标准化颜色/alpha 分量。 |
int[] |
getComponents(Object pixel, int[] components, int offset) 返回在此 ColorModel 中已给定像素的非标准化颜色/alpha 分量的数组。 |
int[] |
getComponentSize() 返回每个颜色/alpha 分量的位数数组。 |
int |
getComponentSize(int componentIdx) 返回指定颜色/alpha 分量的位数。 |
int |
getDataElement(float[] normComponents, int normOffset) 在已给定标准化颜色/alpha 分量的数组的情况下,返回以 int 类型表示在此 ColorModel 中的像素值。 |
int |
getDataElement(int[] components, int offset) 在已给定非标准化颜色/alpha 分量的数组的情况下,返回此 ColorModel 中以 int 类型表示的像素值。 |
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 中像素的数据元素数组的表示形式。 |
abstract 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 |
getNumColorComponents() 返回此 ColorModel 中颜色分量数。 |
int |
getNumComponents() 返回此 ColorModel 中分量数(包括 alpha 分量数)。 |
int |
getPixelSize() 返回由此 ColorModel 描述的每像素的位数。 |
abstract 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 分量。 |
static ColorModel |
getRGBdefault() 返回描述整数 RGB 值的默认格式的 DirectColorModel ,该整数 RGB 值可以在便于程序员使用的 AWT 图像接口中的许多方法中使用。 |
int |
getTransferType() 返回此 ColorModel 的转换类型。 |
int |
getTransparency() 返回透明度。 |
int[] |
getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset) 在已给定标准化分量数组的情况下,返回以非标准化形式存在的所有颜色/alpha 分量的数组。 |
boolean |
hasAlpha() 返回此 ColorModel 中是否支持 alpha。 |
int |
hashCode() 返回此 ColorModel 的哈希码。 |
boolean |
isAlphaPremultiplied() 返回是否在由此 ColorModel 转换的像素值中预乘 alpha。 |
boolean |
isCompatibleRaster(Raster raster) 如果 raster 与此 ColorModel 兼容,则返回 true ,如果不兼容,则返回 false 。 |
boolean |
isCompatibleSampleModel(SampleModel sm) 检查 SampleModel 是否与此 ColorModel 兼容。 |
String |
toString() 返回此 ColorModel 对象的内容的 String 表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
protected int pixel_bits
protected int transferType
构造方法详细信息 |
---|
public ColorModel(int bits)
ColorModel
,将指定位数的像素转换为颜色/alpha 分量。颜色空间默认为 RGB
ColorSpace
(即 sRGB)。假定像素值包含 alpha 信息。如果像素值中的颜色和 alpha 信息表示为独立的空间 band,则假定颜色 band 未与 alpha 值预乘。透明度类型为 java.awt.Transparency.TRANSLUCENT。转换类型将为可以存储单个像素的 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 中的最小者(或 DataBuffer.TYPE_UNDEFINED,如果位数大于 32)。因为此构造方法没有关于每个颜色和 alpha 分量的位数信息,所以任何调用此构造方法的子类都应该重写需要此信息的所有方法。
bits
- 像素的位数
IllegalArgumentException
- 如果
bits
中的位数小于 1
protected ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
ColorModel
。颜色分量将位于指定的
ColorSpace
中。
pixel_bits
为像素值中的位数。位数组指定每个颜色和 alpha 分量的有效位数。如果像素值中不包含 alpha 信息,则其长度应为
ColorSpace
中的分量数;如果包含 alpha 信息,则其长度比此数要大。
hasAlpha
指示是否存在 alpha 信息。
boolean
isAlphaPremultiplied
指定如何解释像素值,其中颜色和 alpha 信息表示为独立的空间 band。如果
boolean
为
true
,则假定颜色样本已经与 alpha 样本相乘。该
transparency
指定可以由此颜色模型表示的 alpha 值。转换类型是用于表示像素值的基本数组的类型。注意,位数组包含从像素值转换后每个颜色/alpha 分量的有效位数。例如,对于
pixel_bits
等于 16 的
IndexColorModel
,该位数组可能有四个每个元素都设置为 8 的元素。
pixel_bits
- 像素值中的位数
bits
- 指定每个颜色和 alpha 分量的有效位数的数组
cspace
- 指定
ColorSpace
hasAlpha
-
true
如果包含 alpha 信息;否则为
false
isAlphaPremultiplied
-
true
如果假定颜色样本预乘了 alpha 样本;否则为
false
transparency
- 可以由此颜色模型表示的 alpha 值
transferType
- 用于表示像素值的数组类型
IllegalArgumentException
- 如果位数组的长度小于此
ColorModel
中颜色或 alpha 分量的数量,或者透明度不为有效值。
IllegalArgumentException
- 如果
bits
中位数的和小于 1,或者
bits
中任何一个元素小于 0。
Transparency
方法详细信息 |
---|
public static ColorModel getRGBdefault()
DirectColorModel
,该整数 RGB 值可以在便于程序员使用的 AWT 图像接口中的许多方法中使用。颜色空间为默认的
ColorSpace
(即 sRGB)。RGB 值的格式是一个 8 位的整数,从最高有效字节到最低有效字节的相应顺序排列 alpha、红色、绿色和蓝色颜色分量,格式如下:0xAARRGGBB。颜色分量未与 alpha 分量预乘。此格式不一定表示特定设备或所有图像的本机或最有效的
ColorModel
。它只是一种通用的颜色模型格式。
DirectColorModel
对象。
public final boolean hasAlpha()
ColorModel
中是否支持 alpha。
ColorModel
中支持 alpha,则返回
true
;否则返回
false
。
public final boolean isAlphaPremultiplied()
ColorModel
转换的像素值中预乘 alpha。如果布尔变量为
true
,则使用此
ColorModel
解释其中颜色和 alpha 信息表示为独立空间 band 的像素值,并且假定颜色样本已经与 alpha 样本相乘。
ColorModel
转换的像素值中预乘 alpha 值,则返回
true
;否则返回
false
。
public final int getTransferType()
ColorModel
的转换类型。该转换类型是一个基本数组类型,可用来以数组形式表示像素值。
public int getPixelSize()
ColorModel
描述的每像素的位数。
public int getComponentSize(int componentIdx)
ColorSpace
中指定的顺序索引颜色分量。通常,此顺序反映了颜色空间类型的名称。例如,对于 TYPE_RGB,索引 0 对应于红色,索引 1 对应于绿色,索引 2 对应于蓝色。如果此
ColorModel
支持 alpha,则该 alpha 分量对应于最后一个颜色分量后面的索引。
componentIdx
- 颜色/alpha 分量的索引
ArrayIndexOutOfBoundsException
- 如果
componentIdx
大于分量数或小于 0
NullPointerException
- 如果位数数组为
null
public int[] getComponentSize()
ColorSpace
指定的顺序排列的颜色分量,后面是 alpha 分量(如果存在)。
public int getTransparency()
Transparency
中的
getTransparency
ColorModel
的透明度。
Transparency.OPAQUE
,
Transparency.BITMASK
,
Transparency.TRANSLUCENT
public int getNumComponents()
ColorModel
中分量数(包括 alpha 分量数)。此分量数等于颜色分量数,或者加 1(如果存在 alpha 分量)。
ColorModel
中分量数
public int getNumColorComponents()
ColorModel
中颜色分量数。这是
ColorSpace.getNumComponents()
返回的分量数。
ColorModel
中颜色分量数。
ColorSpace.getNumComponents()
public abstract int getRed(int pixel)
ColorModel
的像素值不便于用单个 int 表示,则抛出
IllegalArgumentException
。返回的值不是预先乘得的值。例如,如果预乘了 alpha,则此方法会在返回值之前除以 alpha。如果 alpha 值为 0,则红色值为 0。
pixel
- 指定的像素
public abstract int getGreen(int pixel)
ColorModel
的像素值不便于用单个 int 表示,则抛出
IllegalArgumentException
。返回的值是一个非预先乘得的值。例如,如果预乘了 alpha,则此方法会在返回值之前除以 alpha。如果 alpha 值为 0,则绿色值为 0。
pixel
- 指定的像素
public abstract int getBlue(int pixel)
ColorModel
的像素值不便于用单个 int 表示,则抛出
IllegalArgumentException
。返回的值为非预先乘得的值,例如,如果与 alpha 预先相乘,此方法会在返回值之前除以 alpha。如果 alpha 值为 0,则蓝色值为 0。
pixel
- 指定的像素
public abstract int getAlpha(int pixel)
ColorModel
的像素值不便于用单个 int 表示,则抛出
IllegalArgumentException
。
pixel
- 指定的像素
public int getRGB(int pixel)
ColorModel
的像素值不便于用单个 int 表示,则抛出
IllegalArgumentException
。返回的值是非预乘格式。例如,如果预乘 alpha,此方法会将 alpha 从颜色分量中除出来。如果 alpha 值为 0,则颜色值为 0。
pixel
- 指定的像素
getRGBdefault()
public int getRed(Object inData)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。返回的值是一个非预先乘得的值。例如,如果预乘了 alpha,则此方法会在返回值之前除以 alpha。如果 alpha 值为 0,则红色值为 0。如果
inData
不为类型 transferType 的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。如果此
transferType
不受支持,则抛出
UnsupportedOperationException
。因为
ColorModel
为抽象类,所以任何实例必须是子类的实例。子类可以继承此方法的实现,并且如果子类未重写此方法,则在该子类使用除
DataBuffer.TYPE_BYTE
、
DataBuffer.TYPE_USHORT
或
DataBuffer.TYPE_INT
之外的
transferType
时,此方法将抛出异常。
inData
- 像素值的数组
ClassCastException
- 如果
inData
不为类型
transferType
的基本数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此
ColorModel
的像素值
UnsupportedOperationException
- 如果此
tranferType
不受此
ColorModel
支持
public int getGreen(Object inData)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255)。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。返回的值为非预先乘得的值。例如,如果预乘了 alpha,则此方法会在返回值之前除以 alpha。如果 alpha 值为 0,则绿色值为 0。如果
inData
不为类型 transferType 的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。如果此
transferType
不受支持,则抛出
UnsupportedOperationException
。因为
ColorModel
为抽象类,所以任何实例必须是子类的实例。子类可以继承此方法的实现,并且如果子类未重写此方法,则在该子类使用除
DataBuffer.TYPE_BYTE
、
DataBuffer.TYPE_USHORT
或
DataBuffer.TYPE_INT
之外的
transferType
时,此方法将抛出异常。
inData
- 像素值的数组
ClassCastException
- 如果
inData
不为类型
transferType
的基本数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此
ColorModel
的像素值
UnsupportedOperationException
- 如果此
tranferType
不受此
ColorModel
支持
public int getBlue(Object inData)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。返回的值是一个非预先乘得的值。例如,如果预乘了 alpha,则此方法会在返回值之前除以 alpha。如果 alpha 值为 0,则蓝色值将为 0。如果
inData
不为类型 transferType 的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。如果此
transferType
不受支持,则抛出
UnsupportedOperationException
。因为
ColorModel
为抽象类,所以任何实例必须是子类的实例。子类可以继承此方法的实现,并且如果子类未重写此方法,则在该子类使用除
DataBuffer.TYPE_BYTE
、
DataBuffer.TYPE_USHORT
或
DataBuffer.TYPE_INT
之外的
transferType
时,此方法将抛出异常。
inData
- 像素值的数组
ClassCastException
- 如果
inData
不为类型
transferType
的基本数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此
ColorModel
的像素值
UnsupportedOperationException
- 如果此
tranferType
不受此
ColorModel
支持
public int getAlpha(Object inData)
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。如果此
transferType
不受支持,则抛出
UnsupportedOperationException
。因为
ColorModel
为抽象类,所以任何实例必须是子类的实例。子类可以继承此方法的实现,并且如果子类未重写此方法,则在该子类使用除
DataBuffer.TYPE_BYTE
、
DataBuffer.TYPE_USHORT
或
DataBuffer.TYPE_INT
之外的
transferType
时,此方法将抛出异常。
inData
- 指定的像素
ClassCastException
- 如果
inData
不为类型
transferType
的基本数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此
ColorModel
的像素值
UnsupportedOperationException
- 如果此
tranferType
不受此
ColorModel
支持
public int getRGB(Object inData)
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。返回的值将是非预乘格式,例如,如果与 alpha 预先相乘,此方法会将其从颜色分量中除出来(如果 alpha 值为 0,则颜色值将为 0)。
inData
- 指定像素
getRGBdefault()
public Object getDataElements(int rgb, Object pixel)
ColorModel
中像素的数据元素数组的表示形式。然后将此数组传递到
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
- 如果此方法不受此
ColorModel
支持
WritableRaster.setDataElements(int, int, java.lang.Object)
,
SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
public int[] getComponents(int pixel, int[] components, int offset)
ColorModel
中已给定像素的非标准化颜色/alpha 分量。将像素值指定为
int
。如果此
ColorModel
的像素值不便于用单个
int
表示,或者此
ColorModel
的颜色分量值不便于以非标准化形式表示,则将抛出
IllegalArgumentException
。例如,此方法可用于检索
DirectColorModel
中特定像素值的分量。如果分量数组为
null
,则分配一个新数组。该分量数组将被返回。将颜色/alpha 分量存储在以
offset
开头的 component 数组中,即便此方法已分配了数组也如此。如果分量数组不为
null
,且不是特别大,不能存储以偏移量开头的所有颜色和 alpha 分量,则抛出
ArrayIndexOutOfBoundsException
。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
pixel
- 指定的像素
components
- 收到指定像素的颜色和 alpha 分量的数组
offset
- 开始存储颜色和 alpha 分量时的
components
数组的偏移量
UnsupportedOperationException
- 如果此方法不受此
ColorModel
支持
public int[] getComponents(Object pixel, int[] components, int offset)
ColorModel
中已给定像素的非标准化颜色/alpha 分量的数组。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。如果
pixel
不为类型 transferType 的基本数组,则抛出
ClassCastException
。如果此
ColorModel
的颜色分量值不方便以非标准化形式表示,则抛出
IllegalArgumentException
。如果
pixel
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。此方法可用于获取任何
ColorModel
中的指定像素值的分量。如果分量数组为
null
,则分配一个新数组。该分量数组将被返回。将颜色/alpha 分量存储在以
offset
开头的
components
数组中,即便此方法已分配了数组也如此。如果分量数组不为
null
,且不是特别大,不能存储所有颜色和 alpha 分量(以
offset
开头),则抛出
ArrayIndexOutOfBoundsException
。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
pixel
- 指定像素
components
- 收到该指定像素的颜色和 alpha 分量的数组
offset
- 在其处开始存储指定像素的颜色和 alpha 分量的
components
数组的索引
UnsupportedOperationException
- 如果此方法不受此
ColorModel
支持
public int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
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
的索引
IllegalArgumentException
- 如果此
ColorModel
的分量值不便于用非标准化形式表示。
IllegalArgumentException
- 如果
normComponents
的长度减去
normOffset
小于
numComponents
UnsupportedOperationException
- 如果此
ColorModel
的构造方法调用了
super(bits)
构造方法,但未重写此方法。参见构造方法,
ColorModel(int)
。
public float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)
ColorModel
的
ColorSpace
对象指定的每个分量的最小值和最大值之间。如果此
ColorModel
的颜色分量值不便于用非标准化形式表示,则抛出
IllegalArgumentException
。如果
normComponents
数组为
null
,则分配一个新数组。该
normComponents
数组将被返回。颜色/alpha 分量存储在以
normOffset
开头的
normComponents
数组中,即使此方法已分配了数组也如此。如果
normComponents
数组不为
null
,且不是特别大,不能存储所有颜色和 alpha 分量(以
normOffset
开头),则抛出
ArrayIndexOutOfBoundsException
。如果
components
数组不是特别大,不能存储以
offset
开头的所有颜色和 alpha 分量,则抛出
IllegalArgumentException
。
因为 ColorModel
为抽象类,所以任何实例都是子类的实例。此抽象类中该方法的默认实现假定此类的分量值可以方便地以非标准化的形式表示。因此,可能有不支持非标准化形式的实例的子类必须重写此方法。
components
- 包含非标准化分量的数组
offset
- 开始检索非标准化分量的
components
数组的偏移量
normComponents
- 收到标准化分量的数组
normOffset
- 在其处开始存储标准化分量的
normComponents
的索引
IllegalArgumentException
- 如果此
ColorModel
的分量值不便于用非标准化形式表示。
UnsupportedOperationException
- 如果此
ColorModel
的构造方法调用了
super(bits)
构造方法,但未重写此方法。参见构造方法,
ColorModel(int)
。
UnsupportedOperationException
- 如果此方法不能确定每个分量的位数
public int getDataElement(int[] components, int offset)
ColorModel
中以
int
类型表示的像素值。如果此
ColorModel
中的分量值不便于用单个
int
表示,或者此
ColorModel
的颜色分量值不便于用非标准化形式表示,则此方法将抛出
IllegalArgumentException
。如果
components
数组不是特别大,不能存储所有以
offset
开始的颜色和 alpha 分量,则抛出
ArrayIndexOutOfBoundsException
。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
components
- 非标准化的颜色和 alpha 分量的数组
offset
- 开始检索颜色和 alpha 分量处的
components
的索引
ColorModel
中与指定分量相对应的
int
像素值。
IllegalArgumentException
- 如果此
ColorModel
的像素值不便于用单个
int
表示
IllegalArgumentException
- 如果此
ColorModel
的分量值不便于用非标准化形式表示
ArrayIndexOutOfBoundsException
- 如果
components
数组不是特别大,不能存储以
offset
开头的所有颜色和 alpha 分量
UnsupportedOperationException
- 如果此方法不受此
ColorModel
支持
public Object getDataElements(int[] components, int offset, Object obj)
ColorModel
中像素的数据元素数组表示形式。然后可以将此数组传递给
WritableRaster
对象的
setDataElements
方法。如果此
ColorModel
的颜色分量值不便于用非标准化形式表示,则此方法将抛出
IllegalArgumentException
。如果
components
数组不是特别大,不能存储所有以
offset
开始的颜色和 alpha 分量,则抛出
ArrayIndexOutOfBoundsException
。如果
obj
变量为
null
,则分配一个新数组。如果
obj
不为
null
,则它必须为类型 transferType 的基本数组;否则将抛出
ClassCastException
。如果
obj
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
components
- 非标准化的颜色和 alpha 分量的数组
offset
- 开始检索颜色和 alpha 分量处的
components
的索引
obj
- 表示颜色和 alpha 分量的数组的
Object
Object
。
ClassCastException
- 如果
obj
不为类型
transferType
的基本数组
ArrayIndexOutOfBoundsException
- 如果
obj
不是特别大,不能存储此
ColorModel
的像素值,或者
components
数组不是特别大,不能存储以
offset
开头的所有颜色和 alpha 分量
IllegalArgumentException
- 如果此
ColorModel
的分量值不便于用非标准化形式表示
UnsupportedOperationException
- 如果此方法不受此
ColorModel
支持
WritableRaster.setDataElements(int, int, java.lang.Object)
,
SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
public int getDataElement(float[] normComponents, int normOffset)
int
类型表示在此
ColorModel
中的像素值。如果此
ColorModel
的像素值不便于用单个
int
,则此方法将抛出
IllegalArgumentException
。如果
normComponents
数组不是特别大,不能存储所有以
normOffset
开头的颜色和 alpha 分量,则抛出
ArrayIndexOutOfBoundsException
。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。此抽象类中该方法的默认实现先从标准化形式转换到非标准化形式,然后再调用
getDataElement(int[], int)
。可能有不支持非标准化形式的实例的子类必须重写此方法。
normComponents
- 标准化颜色和 alpha 分量的数组
normOffset
- 开始检索颜色和 alpha 分量的
normComponents
的索引
ColorModel
中对应于指定分量的
int
像素值。
IllegalArgumentException
- 如果此
ColorModel
的像素值不便于用单个
int
表示
ArrayIndexOutOfBoundsException
- 如果
normComponents
数组不是特别大,不能存储以
normOffset
开头的所有颜色和 alpha 分量
public Object getDataElements(float[] normComponents, int normOffset, Object obj)
ColorModel
中像素的数据元素数组表示形式。然后可以将此数组传递给
WritableRaster
对象的
setDataElements
方法。如果
normComponents
数组不是特别大,不能存储所有以
normOffset
开头的颜色和 alpha 分量,则抛出
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 分量
WritableRaster.setDataElements(int, int, java.lang.Object)
,
SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
public float[] getNormalizedComponents(Object pixel, float[] normComponents, int normOffset)
ColorModel
中给定了像素的标准化形式颜色/alpha 分量的数组。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。如果像素不为类型 transferType 的基本数组,则抛出
ClassCastException
。如果
pixel
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。标准化分量为 float 值,这些值介于此
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
数组的偏移量
ClassCastException
- 如果
pixel
不为类型 transferType 的基本数组
ArrayIndexOutOfBoundsException
- 如果
normComponents
不是特别大,不能存储以
normOffset
开头的所有颜色和 alpha 分量
ArrayIndexOutOfBoundsException
- 如果
pixel
不是特别大,不能存储此
ColorModel
的像素值。
UnsupportedOperationException
- 如果此
ColorModel
的构造方法调用了
super(bits)
构造方法,但未重写此方法。参见构造方法,
ColorModel(int)
。
UnsupportedOperationException
- 如果此方法不能确定每个分量的位数
public boolean equals(Object obj)
Object
是否是
ColorModel
的实例,以及它是否等于此
ColorModel
。
Object
中的
equals
obj
- 用来进行相等性测试的
Object
Object
为
ColorModel
的实例,且等于此
ColorModel
,则返回
true
;否则返回
false
。
Object.hashCode()
,
Hashtable
public int hashCode()
Object
中的
hashCode
Object.equals(java.lang.Object)
,
Hashtable
public final ColorSpace getColorSpace()
ColorModel
相关的
ColorSpace
。
ColorModel
的
ColorSpace
。
public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
isAlphaPremultiplied
变量中指定的状态匹配,假定当前该数据已由此
ColorModel
正确描述。可以将颜色 raster 数据乘以或除以 alpha,如果该数据处于正确状态,则不执行任何操作。如果需要对该数据强制匹配,则此方法还将相应地返回一个带有
isAlphaPremultiplied
标志集的
ColorModel
的实例。如果此方法不受
ColorModel
支持,则它将抛出
UnsupportedOperationException
。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
raster
-
WritableRaster
数据
isAlphaPremultiplied
- 如果与 alpha 预乘,则返回
true
;否则将返回
false
ColorModel
对象。
public boolean isCompatibleRaster(Raster raster)
raster
与此
ColorModel
兼容,则返回
true
,如果不兼容,则返回
false
。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
raster
- 进行兼容性测试的
Raster
对象
true
如果
raster
与此
ColorModel
兼容。
UnsupportedOperationException
- 如果此方法不是为此
ColorModel
实现的。
public WritableRaster createCompatibleWritableRaster(int w, int h)
WritableRaster
,具有与此
ColorModel
兼容的数据布局 (
SampleModel
)。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
w
- 应用到新
WritableRaster
的宽度
h
- 应用到新
WritableRaster
的高度
WritableRaster
对象。
UnsupportedOperationException
- 如果此方法不受此
ColorModel
支持
WritableRaster
,
SampleModel
public SampleModel createCompatibleSampleModel(int w, int h)
SampleModel
,具有与此
ColorModel
兼容的数据布局。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
w
- 应用于新的
SampleModel
的宽度
h
- 应用于新的
SampleModel
的高度
SampleModel
对象。
UnsupportedOperationException
- 如果此方法不受此
ColorModel
支持
SampleModel
public boolean isCompatibleSampleModel(SampleModel sm)
SampleModel
是否与此
ColorModel
兼容。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现抛出了
UnsupportedOperationException
。
sm
- 指定的
SampleModel
SampleModel
与此
ColorModel
兼容,则返回
true
;否则返回
false
。
UnsupportedOperationException
- 如果此方法不受此
ColorModel
支持
SampleModel
public void finalize()
ColorModel
,就要释放与此
ColorModel
相关的系统资源。
Object
中的
finalize
public WritableRaster getAlphaRaster(WritableRaster raster)
Raster
中提取)的 alpha 通道的
Raster
,除非此
ColorModel
的像素值将颜色和 alpha 信息表示为独立的空间 band(如
ComponentColorModel
和
DirectColorModel
)。此方法假定与此类
ColorModel
相关的
Raster
对象将 alpha 的 band(如果存在)存储为图像数据的最后一个 band。如果不存在与此
ColorModel
相关的独立空间 alpha 通道,则返回
null
。如果在查询表中有一个具有 alpha 的
IndexColorModel
,则此方法将返回
null
,因为没有空间上截然不同的 alpha 通道。此方法将创建新的
Raster
(但将共享数据数组)。因为
ColorModel
为抽象类,所以任何实例都是子类的实例。子类必须重写此方法,以获取除返回
null
之外的任何行为,因为此抽象类中的实现返回
null
。
raster
- 指定的
Raster
Raster
中得到)的 alpha 通道的
Raster
。
public String toString()
ColorModel
对象的内容的
String
表示形式。
Object
中的
toString
ColorModel
对象的内容的
String
。
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。