public abstract class ColorModel extends Object implements Transparency
ColorModel
抽象类封装了将像素值转换为颜色分量(例如,红色,绿色和蓝色)和alpha分量的方法。
为了将图像呈现到屏幕,打印机或其他图像,像素值必须转换为颜色和alpha组件。
作为这个类的方法的参数或返回值,像素被表示为32位int或者作为原始类型的数组。
的数目,顺序,以及一个颜色分量的解释ColorModel
由其指定的ColorSpace
。
与不包括alpha信息的像素数据ColorModel
使用的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
对象使用的原始类型称为其传输类型。
ColorModel
与图像一起使用的对象,像素值不方便地表示为单个int,当调用采用单个int像素参数的方法时,抛出IllegalArgumentException
。 ColorModel的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的所有子ColorModel
必须指定可能的传输类型是什么,以及如何确定表示像素的基元数组中的元素数量。
对于BufferedImages
,其Raster
和Raster
对象的转移类型为SampleModel
(可从这些类的getTransferType
方法获得)必须与ColorModel
匹配。 表示Raster
和SampleModel
(可从这些类别的getNumDataElements
方法获得)的阵列中的元素数量必须与ColorModel
相匹配。
用于将像素值转换为颜色和α分量的算法因子类而异。 例如,从BufferedImage
对象的Raster
和颜色/α分量的Raster
获得的样本之间SampleModel
是一一对应的。 即使存在这样的对应关系,样本中的比特数也不一定与相应颜色/α分量中的比特数相同。 每个子类必须指定如何从像素值到颜色/ alpha分量的转换。
ColorModel
类中的方法使用颜色和α分量的两个不同表示 - 标准化形式和非规范化形式。 在标准化形式中,每个组件是一些最小值和最大值之间的float
值。 对于alpha组件,最小值为0.0,最大值为1.0。 对于颜色分量,可以从ColorSpace
对象获取每个组件的最小值和最大值。 这些值通常为0.0和1.0(例如,默认sRGB颜色空间范围为0.0到1.0的标准化组件值),但某些颜色空间具有不同上限和下限的组件值。 这些限制可以使用ColorSpace
类的getMinValue
和getMaxValue
方法获得。 归一化颜色分量值不是预乘。 所有ColorModels
必须支持标准化形式。
在非归一化形式中,每个分量是0和2 n -1之间的无符号积分值,其中n是特定分量的有效位数。 如果特定ColorModel
像素值表示由α样本预购的颜色样本,则也会预取未归一化的颜色分量值。 非规范化形式仅用于ColorModel的ColorModel
,其ColorSpace
对于所有组件的最小组件值为0.0,对于所有组件的最大值为1.0。 颜色和α分量的非标准化形式可以为ColorModels的方便ColorModels
,其标准化分量值都在0.0和1.0之间。 在这种情况下,积分值0映射到0.0,值2 n -1映射到1.0。 在其他情况下,例如当归一化分量值可以是负数或正数时,非正规化形式是不方便的。 当调用涉及非规范化参数的方法时,这样的ColorModel
对象会抛出一个IllegalArgumentException
。 ColorModel的ColorModel
必须指定出现这种情况的条件。
IndexColorModel
, ComponentColorModel
, PackedColorModel
, DirectColorModel
, Image
, BufferedImage
, RenderedImage
, ColorSpace
, SampleModel
, Raster
, DataBuffer
Modifier and Type | Field and Description |
---|---|
protected int |
pixel_bits
像素中的总位数。
|
protected int |
transferType
用于表示像素值的数组的数据类型。
|
BITMASK, OPAQUE, TRANSLUCENT
Modifier | Constructor and Description |
---|---|
|
ColorModel(int bits)
构造一个
ColorModel ,它将指定位数的像素转换为彩色/ alpha分量。
|
protected |
ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
构造一个
ColorModel ,将像素值转换为颜色/ alpha组件。
|
Modifier and Type | Method and Description |
---|---|
ColorModel |
coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
强制栅格数据与
isAlphaPremultiplied 变量中指定的状态相匹配,假设数据当前由此ColorModel正确
ColorModel 。
|
SampleModel |
createCompatibleSampleModel(int w, int h)
创建
SampleModel 具有指定的宽度和高度,具有与此兼容的数据布局
ColorModel 。
|
WritableRaster |
createCompatibleWritableRaster(int w, int h)
创建
WritableRaster 具有指定的宽度和高度,其具有的数据布局(
SampleModel )与此兼容
ColorModel 。
|
boolean |
equals(Object obj)
测试指定的
Object 是一个实例
ColorModel ,以及它是否该
ColorModel 。
|
void |
finalize()
一旦这个
ColorModel 不再被引用,就会处理与此
ColorModel 的系统资源。
|
abstract int |
getAlpha(int pixel)
返回指定像素的alpha分量,从0到255。
|
int |
getAlpha(Object inData)
返回指定像素的alpha分量,从0到255。
|
WritableRaster |
getAlphaRaster(WritableRaster raster)
返回
Raster 表示图像的alpha通道,从输入中提取
Raster ,提供此的像素值
ColorModel 表示颜色和alpha信息为独立的空间频带(例如
|
abstract int |
getBlue(int pixel)
返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255。
|
int |
getBlue(Object inData)
返回指定像素的蓝色分量,在默认RGB
ColorSpace (sRGB)中从0到255。
|
ColorSpace |
getColorSpace()
返回
ColorSpace 与此相关
ColorModel 。
|
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组件数组,返回在这个
ColorModel 中表示为
int 的像素值。
|
int |
getDataElement(int[] components, int offset)
返回一个像
int 在这个
ColorModel 中表示的像素值,给出了一组非标准化的颜色/ alpha分量。
|
Object |
getDataElements(float[] normComponents, int normOffset, Object obj)
给定一个标准化颜色/ alpha分量的数组,返回这个
ColorModel 中像素的数据元素数组表示。
|
Object |
getDataElements(int[] components, int offset, Object obj)
返回此的像素的数据元素数组表示
ColorModel ,给定非标准化颜色/ alpha分量的阵列。
|
Object |
getDataElements(int rgb, Object pixel)
返回此的像素的数据元素数组表示
ColorModel 给出在默认RGB颜色模型中的整数像素表示。
|
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分量的
ColorModel 。
|
int |
getNumColorComponents()
返回此
ColorModel 中的颜色成
ColorModel 。
|
int |
getNumComponents()
返回组件的数量,包括α,在此
ColorModel 。
|
int |
getPixelSize()
返回此
ColorModel 每像素的
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()
返回一个
DirectColorModel ,它描述了AWT图像接口中许多方法中使用的整数RGB值的默认格式,以方便程序员。
|
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()
返回alpha 8是否被这个
ColorModel 要翻译的像素值
ColorModel 。
|
boolean |
isCompatibleRaster(Raster raster)
true 如果
raster 是兼容这个
ColorModel 和
false 如果不是。
|
boolean |
isCompatibleSampleModel(SampleModel sm)
检查
SampleModel 是否与此
ColorModel 。
|
String |
toString()
返回
String 这个内容表示
ColorModel 对象。
|
protected int pixel_bits
protected int transferType
public ColorModel(int bits)
ColorModel
,它将指定位数的像素转换为颜色/ alpha组件。
颜色空间是默认的RGB ColorSpace
,这是sRGB。
假设像素值包括alpha信息。
如果在像素值中将颜色和α信息表示为单独的空间频带,则假设色带不与alpha值预乘。
透明度类型是java.awt.Transparency.TRANSLUCENT。
传输类型将是可容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的数据(如果位大于32,则为DataBuffer.TYPE_UNDEFINED)。
由于该构造函数没有关于每个颜色和alpha组件的位数的信息,所以调用此构造函数的任何子类都应该覆盖任何需要此信息的方法。
bits
- 像素的位数
IllegalArgumentException
- 如果
bits
中的位数小于1
protected ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
ColorModel
,将像素值转换为颜色/ alpha组件。
颜色组件将在指定的ColorSpace
。
pixel_bits
是像素值中的位数。
位数组指定每个颜色和alpha分量的有效位数。
它的长度应该是ColorSpace中的ColorSpace
的数量,如果像素值中没有alpha信息,或者如果有alpha信息,则该数量多于此数字。
hasAlpha
表示是否存在α信息。
boolean
isAlphaPremultiplied
指定如何解释将颜色和阿尔法信息表示为单独的空间带的像素值。
如果boolean
是true
,则假设颜色样本已经乘以α样本。
transparency
指定此颜色模型可以表示哪些alpha值。
传输类型是用于表示像素值的原始数组的类型。
请注意,位数组包含从像素值转换后每个颜色/ alpha分量的有效位数。
例如,对于一个IndexColorModel
与pixel_bits
等于16,这些比特阵列可能具有与设置为8的每个元素四个元件。
pixel_bits
- 像素值中的位数
bits
- 指定每个颜色和alpha分量的有效位数的数组
cspace
- 指定的
ColorSpace
hasAlpha
- true
如果存在alpha信息;
false
否则
isAlphaPremultiplied
- true
如果假设颜色样本被alpha样本预乘,
false
否则
transparency
- 这个颜色模型可以表示什么alpha值
transferType
- 用于表示像素值的数组的类型
IllegalArgumentException
- 如果位数组的长度小于此ColorModel中的颜色或alpha分量的
ColorModel
,或者透明度不是有效值。
IllegalArgumentException
-如果在比特数的总和
bits
小于1,或者如果在任何元件的
bits
小于0。
Transparency
public static ColorModel getRGBdefault()
DirectColorModel
,它描述了AWT图像接口中许多方法中使用的整数RGB值的默认格式,以方便程序员。
色彩空间是默认的ColorSpace
,sRGB。
RGB值的格式是一个整数,8位,每个alpha,红色,绿色和蓝色颜色分量从最高有效字节到最低有效字节排序,如:0xAARRGGBB。
颜色分量不被alpha分量预乘。
此格式不一定代表特定设备或所有图像的本机或最高效ColorModel
。
它仅用作常见的颜色模型格式。
DirectColorModel
对象。
public final boolean hasAlpha()
ColorModel
是否支持alpha。
true
如果alpha支持在这ColorModel
;
false
否则。
public final boolean isAlphaPremultiplied()
ColorModel
要翻译的像素值中预先使用ColorModel
。
如果布尔值为true
,则该ColorModel
用于解释其中颜色和阿尔法信息被表示为单独的空间带的像素值,并且假设颜色样本已被乘以α样本。
true
如果alpha值中的像素值预乘由该翻译ColorModel
;
false
另外。
public final int getTransferType()
ColorModel
的传输类型。
传输类型是用于将像素值表示为数组的原始数组的类型。
public int getPixelSize()
ColorModel
每像素的
ColorModel
。
public int getComponentSize(int componentIdx)
ColorSpace
。
通常,此顺序反映了颜色空间类型的名称。
例如,对于TYPE_RGB,索引0对应于红色,索引1为绿色,索引2为蓝色。
如果这个ColorModel
支持alpha,则alpha组件对应于最后一个颜色分量之后的索引。
componentIdx
- 颜色/ alpha分量的索引
ArrayIndexOutOfBoundsException
- 如果
componentIdx
大于
componentIdx
数或小于零
NullPointerException
- 如果位数为
null
public int[] getComponentSize()
ColorSpace
,其次是阿尔法分量,如果存在的话。
public int getTransparency()
getTransparency
在接口
Transparency
ColorModel
。
Transparency.OPAQUE
,
Transparency.BITMASK
,
Transparency.TRANSLUCENT
public int getNumComponents()
ColorModel
。
这等于颜色分量的数量,可选加一个,如果有一个alpha分量。
ColorModel
public int getNumColorComponents()
ColorModel
中的颜色成ColorModel
。
这是由ColorSpace.getNumComponents()
返回的组件数 。
ColorModel
。
ColorSpace.getNumComponents()
public abstract int getRed(int pixel)
IllegalArgumentException
如果这个像素值抛出ColorModel
不便于表示为一个单个int。
返回的值不是预乘积值。
例如,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,则红色值为0。
pixel
- 指定像素
public abstract int getGreen(int pixel)
IllegalArgumentException
如果这个像素值抛出ColorModel
不便于表示为一个单个int。
返回的值是非预先乘以的值。
例如,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,则绿色值为0。
pixel
- 指定像素
public abstract int getBlue(int pixel)
IllegalArgumentException
如果这个像素值抛出ColorModel
不便于表示为一个单个int。
返回的值是非预先乘以的值,例如,如果该alpha被预乘,则该方法在返回该值之前将其除数。
如果alpha值为0,则蓝色值为0。
pixel
- 指定的像素
public abstract int getAlpha(int pixel)
IllegalArgumentException
如果这个像素值抛出ColorModel
不便于表示为一个单个int。
pixel
- 指定像素
public int getRGB(int pixel)
IllegalArgumentException
抛出,如果这个像素值ColorModel
不便于表示为一个单个int。
返回的值为非预先乘法格式。
例如,如果alpha被预乘,则该方法将其从颜色分量中分离出来。
如果alpha值为0,则颜色值为0。
pixel
- 指定的像素
getRGBdefault()
public int getRed(Object inData)
ColorSpace
(sRGB)中从0到255。
必要时进行颜色转换。
像素值由作为对象引用传入的transferType类型的数据元素数组指定。
返回的值是非预先乘以的值。
例如,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,则红色值为0.如果inData
不是transferType类型的原始数组,则会抛出ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出inData
是不是大到足以容纳这个像素值ColorModel
。
如果这transferType
不支持,一个UnsupportedOperationException
将被抛出。
由于ColorModel
是抽象类,任何实例必须是子类的实例。
子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType
比其他DataBuffer.TYPE_BYTE
, DataBuffer.TYPE_USHORT
,或DataBuffer.TYPE_INT
。
inData
- 像素值数组
ClassCastException
-如果
inData
不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException
- 如果
inData
不够大,不能持有这个
ColorModel
的像素值
UnsupportedOperationException
- 如果这个
tranferType
不支持此
ColorModel
public int getGreen(Object inData)
ColorSpace
(sRGB)中从0到255。
必要时进行颜色转换。
像素值由作为对象引用传入的transferType类型的数据元素数组指定。
返回的值将是非预倍增值。
例如,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,则绿色值为0.如果inData
不是transferType类型的原始数组,则会抛出ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出inData
是不是大到足以容纳这个像素值ColorModel
。
如果这transferType
不支持,一个UnsupportedOperationException
将被抛出。
由于ColorModel
是一个抽象类,任何实例都必须是一个子类的实例。
子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType
比其他DataBuffer.TYPE_BYTE
, DataBuffer.TYPE_USHORT
,或DataBuffer.TYPE_INT
。
inData
- 像素值数组
ClassCastException
-如果
inData
不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException
- 如果
inData
不够大,不能保持这个
ColorModel
的像素值
UnsupportedOperationException
- 如果这个
tranferType
不支持此
ColorModel
public int getBlue(Object inData)
ColorSpace
sRGB中从0到255。
必要时进行颜色转换。
像素值由作为对象引用传入的transferType类型的数据元素数组指定。
返回的值是非预先乘以的值。
例如,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,则蓝色值将为0.如果inData
不是transferType类型的原始数组,则会抛出ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出inData
是不是大到足以容纳这个像素值ColorModel
。
如果不支持此transferType
,将抛出一个UnsupportedOperationException
。
由于ColorModel
是一个抽象类,任何实例都必须是一个子类的实例。
子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType
比其他DataBuffer.TYPE_BYTE
, DataBuffer.TYPE_USHORT
,或DataBuffer.TYPE_INT
。
inData
- 像素值数组
ClassCastException
-如果
inData
不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException
- 如果
inData
不够大,不能持有这个
ColorModel
的像素值
UnsupportedOperationException
- 如果这个
tranferType
不支持此
ColorModel
public int getAlpha(Object inData)
ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出inData
是不是大到足以容纳这个像素值ColorModel
。
如果不支持此transferType
,将抛出UnsupportedOperationException
。
由于ColorModel
是一个抽象类,任何实例都必须是一个子类的实例。
子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType
比其他DataBuffer.TYPE_BYTE
, DataBuffer.TYPE_USHORT
,或DataBuffer.TYPE_INT
。
inData
- 指定像素
ClassCastException
-如果
inData
不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException
- 如果
inData
不够大,不能保持这个
ColorModel
的像素值
UnsupportedOperationException
- 如果这个
tranferType
不支持此
ColorModel
public int getRGB(Object inData)
ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出inData
是不是大到足以容纳这个像素值ColorModel
。
返回的值将是非预先乘法的格式,即如果alpha被预乘,则该方法将其除以颜色分量(如果alpha值为0,则颜色值将为0)。
inData
- 指定像素
getRGBdefault()
public Object getDataElements(int rgb, Object pixel)
ColorModel
给出在默认RGB颜色模型中的整数像素表示。
然后可以将该数组传递给WritableRaster
对象的WritableRaster.setDataElements(int, int, java.lang.Object)
方法。
如果像素变量为null
,则会null
一个新数组。
如果pixel
不是null
,它必须是类型的基本数组transferType
;
否则,抛出一个ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出pixel
是不是大到足以容纳这个像素值ColorModel
。
返回像素数组。
如果不支持此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
。
一个IllegalArgumentException
如果此像素值将被抛出ColorModel
不便于表示为一个单一int
或如果此颜色分量值ColorModel
不在非标准化形式表示的方便。
例如,该方法可用于检索DirectColorModel中特定像素值的DirectColorModel
。
如果组件数组为null
,则会null
一个新数组。
将返回组件数组。
颜色/ alpha分量存储组件阵列,起始于offset
(即使该阵列由这种方法分配的)。
一个ArrayIndexOutOfBoundsException
如果components数组是不被抛出null
并且不足够大以容纳所有的颜色和alpha分量(以偏移量开始)。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
子类必须重写这个方法,因为这个抽象类中的实现会抛出一个UnsupportedOperationException
。
pixel
- 指定像素
components
- 用于接收指定像素的颜色和alpha分量的数组
offset
- 偏移到
components
阵列,开始存储颜色和alpha组件
UnsupportedOperationException
- 如果此方法不支持此
ColorModel
public int[] getComponents(Object pixel, int[] components, int offset)
ColorModel
一个像素的非规范化颜色/ alpha分量的数组。
像素值由作为对象引用传入的transferType类型的数据元素数组指定。
如果pixel
不是transferType类型的原始数组,则抛出一个ClassCastException
。
一个IllegalArgumentException
如果这种颜色成分值会被抛出ColorModel
不便于用非标准化形式表示。
一个ArrayIndexOutOfBoundsException
如果抛出pixel
是不是大到足以容纳这个像素值ColorModel
。
该方法可用于检索任何ColorModel
特定像素值的ColorModel
。
如果组件数组为null
,则会null
一个新数组。
将返回组件数组。
颜色/ alpha分量存储中components
数组以offset
(即使该阵列由这种方法分配的)。
一个ArrayIndexOutOfBoundsException
如果components数组是不被抛出null
并且不足够大以容纳所有的颜色和alpha分量(开始于offset
)。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
子类必须重写这个方法,因为这个抽象类中的实现会抛出一个UnsupportedOperationException
。
pixel
- 指定像素
components
- 接收指定像素的颜色和alpha分量的数组
offset
- 索引到
components
数组中,开始存储指定像素的颜色和alpha分量
UnsupportedOperationException
- 如果此方法不支持此
ColorModel
public int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
ColorSpace
对象此ColorModel
。
一个IllegalArgumentException
如果这种颜色成分值会被抛出ColorModel
不便于用非标准化形式表示。
如果components
数组是null
,则会null
一个新数组。
将返回components
数组。
颜色/ alpha分量存储中components
数组以offset
(即使该阵列由这种方法分配的)。
一个ArrayIndexOutOfBoundsException
如果被抛出components
数组不null
,不足够大以容纳所有的颜色和alpha分量(开始于offset
)。
IllegalArgumentException
如果normComponents
数组不够大,不能容纳所有的颜色和alpha组件,从normOffset开始就normOffset
。
normComponents
- 包含归一化组件的数组
normOffset
-
normComponents
数组的偏移量,用于开始检索归一化组件
components
- 从
normComponents
接收组件的
normComponents
offset
- 索引为
components
,开始存储normComponents标准化
normComponents
IllegalArgumentException
-如果此组件值
ColorModel
不便于用非标准化形式表示。
IllegalArgumentException
- 如果
normComponents
减去
normOffset
的长度小于
numComponents
UnsupportedOperationException
- 如果这个ColorModel的ColorModel
叫做super(bits)
构造函数,但没有覆盖这个方法。
见构造函数ColorModel(int)
。
public float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)
ColorSpace
对象此ColorModel
。
一个IllegalArgumentException
如果这种颜色成分值会被抛出ColorModel
不便于用非标准化形式表示。
如果normComponents
数组为null
,则会null
一个新数组。
将返回normComponents
数组。
颜色/ alpha分量存储中normComponents
数组以normOffset
(即使该阵列由这种方法分配的)。
一个ArrayIndexOutOfBoundsException
如果被抛出normComponents
数组不null
,不足够大以容纳所有的颜色和alpha分量(开始于normOffset
)。
IllegalArgumentException
如果components
阵列不够大,不能保持从offset开始的所有颜色和alpha组件, offset
。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。 此抽象类中此方法的默认实现假定此类的组件值可以非规范化形式方便地表示。 因此,可能具有不支持非规范化形式的实例的子类必须覆盖此方法。
components
- 包含非规范化组件的数组
offset
-
components
阵列的偏移量,用于开始检索非标准化的组件
normComponents
- 接收归一化组件的数组
normOffset
- 索引到
normComponents
开始存储归一化组件
IllegalArgumentException
-如果此组件值
ColorModel
不便于用非标准化形式表示。
UnsupportedOperationException
- 如果这个ColorModel的ColorModel
称为super(bits)
构造函数,但没有覆盖此方法。
见构造函数ColorModel(int)
。
UnsupportedOperationException
- 如果此方法无法确定每个组件的位数
public int getDataElement(int[] components, int offset)
int
在此ColorModel
,给定非标准化颜色/ alpha分量的阵列。
此方法将引发IllegalArgumentException
;如果此组件值ColorModel
不如便于表示单个int
或如果此颜色分量值ColorModel
不在非标准化形式表示的方便。
一个ArrayIndexOutOfBoundsException
如果被抛出components
阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset
)。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
子类必须重写此方法,因为该抽象类中的实现会抛出一个UnsupportedOperationException
。
components
- 非规范化颜色和alpha组件的数组
offset
- 索引到
components
开始检索颜色和alpha组件
int
像素值在这
ColorModel
对应的指定组件。
IllegalArgumentException
- 如果此
ColorModel
像素值不方便地表示为单个
int
IllegalArgumentException
- 如果此
ColorModel
组件值不方便地以非规范化形式表示
ArrayIndexOutOfBoundsException
-如果
components
阵列是没有大到足以容纳所有的颜色和alpha分量开始于
offset
UnsupportedOperationException
- 如果此方法不支持此
ColorModel
public Object getDataElements(int[] components, int offset, Object obj)
ColorModel
,给定非标准化颜色/ alpha分量的阵列。
然后可以将该数组传递给WritableRaster
对象的setDataElements
方法。
此方法将抛出一个IllegalArgumentException
如果这个颜色成分值ColorModel
不便于用非标准化形式表示。
一个ArrayIndexOutOfBoundsException
如果被抛出components
阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset
)。
如果obj
变量为null
, null
一个新数组。
如果obj
不是null
,它必须是一个类型为transferType的原始数组;
否则,会抛出一个ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出obj
是不是大到足以容纳这个像素值ColorModel
。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
子类必须重写这个方法,因为这个抽象类中的实现会抛出一个UnsupportedOperationException
。
components
- 非规范化颜色和alpha组件的数组
offset
- 索引到
components
开始检索颜色和alpha组件
obj
-
Object
代表颜色和alpha组件的数组
Object
代表一个颜色和alpha组件的数组。
ClassCastException
-如果
obj
不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException
-如果
obj
是不足够大以保存此像素值
ColorModel
或
components
阵列是没有大到足以容纳所有的颜色和alpha分量开始于
offset
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
,给定的归一化的颜色/ alpha分量的阵列。
这个方法会抛出一个IllegalArgumentException
如果这个ColorModel
像素值不方便地表示为一个int
。
ArrayIndexOutOfBoundsException
如果normComponents
阵列不够大,不足以容纳所有颜色和alpha组件(从normOffset
开始), normOffset
。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
此抽象类中此方法的默认实现首先将从规范化形式转换为非规范化形式,然后调用getDataElement(int[], int)
。
可能具有不支持非规范化形式的实例的子类必须覆盖此方法。
normComponents
- 归一化颜色和alpha分量的数组
normOffset
- 索引到
normComponents
开始检索颜色和alpha组件
int
像素值在这
ColorModel
对应的指定组件。
IllegalArgumentException
- 如果这个
ColorModel
像素值不方便地表示为单个
int
ArrayIndexOutOfBoundsException
-如果
normComponents
阵列是没有大到足以容纳所有的颜色和alpha分量开始于
normOffset
public Object getDataElements(float[] normComponents, int normOffset, Object obj)
ColorModel
中像素的数据元素数组表示。
然后可以将该数组传递给WritableRaster
对象的setDataElements
方法。
一个ArrayIndexOutOfBoundsException
如果被抛出normComponents
阵列是没有大到足以容纳所有的颜色和alpha分量(开始于normOffset
)。
如果obj
变量为null
,则会null
一个新数组。
如果obj
不是null
,它必须是一个类型为transferType的原始数组;
否则,抛出一个ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出obj
是不是大到足以容纳这个像素值ColorModel
。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
此抽象类中此方法的默认实现首先将规范化形式转换为非规范化形式,然后调用getDataElement(int[], int, Object)
。
可能具有不支持非规范化形式的实例的子类必须覆盖此方法。
normComponents
- 归一化颜色和alpha分量的数组
normOffset
- 索引到
normComponents
开始检索颜色和alpha组件
obj
- 用于保存返回像素的原始数据数组
Object
,它是像素的原始数据阵列表示
ClassCastException
-如果
obj
不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException
-如果
obj
是不足够大以保存此像素值
ColorModel
或
normComponents
阵列是没有大到足以容纳所有的颜色和alpha分量开始于
normOffset
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分量的ColorModel
。
像素值由作为对象引用传入的transferType类型的数据元素数组指定。
如果像素不是transferType类型的原始数组,则抛出一个ClassCastException
。
一个ArrayIndexOutOfBoundsException
如果抛出pixel
是不是大到足以容纳这个像素值ColorModel
。
正规化成分是每分量最小和最大由指定之间的浮点值ColorSpace
对象此ColorModel
。
如果normComponents
数组为null
,则会null
一个新数组。
将返回normComponents
数组。
颜色/ alpha分量存储中normComponents
数组以normOffset
(即使该阵列由这种方法分配的)。
一个ArrayIndexOutOfBoundsException
如果被抛出normComponents
数组不null
,不足够大以容纳所有的颜色和alpha分量(开始于normOffset
)。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
此抽象类中此方法的默认实现首先使用getComponents(Object, int[], int)
非规范化形式的颜色和alpha getComponents(Object, int[], int)
,然后调用getNormalizedComponents(int[], int, float[], int)
。
可能具有不支持非规范化形式的实例的子类必须覆盖此方法。
pixel
- 指定的像素
normComponents
- 一个接收归一化组件的数组
normOffset
-
normComponents
阵列的偏移量,用于开始存储归一化元件
ClassCastException
- 如果
pixel
不是类型transferType的原始数组
ArrayIndexOutOfBoundsException
-如果
normComponents
是不是大到足以容纳所有的颜色和alpha分量开始
normOffset
ArrayIndexOutOfBoundsException
- 如果
pixel
不够大,不能持有这个
ColorModel
的像素值。
UnsupportedOperationException
- 如果这个ColorModel的ColorModel
称为super(bits)
构造函数,但没有覆盖此方法。
请参阅构造函数ColorModel(int)
。
UnsupportedOperationException
- 如果此方法无法确定每个组件的位数
public boolean equals(Object obj)
Object
是一个实例
ColorModel
,以及它是否该
ColorModel
。
equals
在
Object
obj
-
Object
测试平等
true
如果指定Object
是的一个实例ColorModel
并且等于此ColorModel
;
false
否则。
Object.hashCode()
, HashMap
public int hashCode()
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public final ColorSpace getColorSpace()
ColorSpace
与此相关
ColorModel
。
ColorSpace
的这个
ColorModel
。
public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
isAlphaPremultiplied
变量中指定的状态相匹配,假设数据当前由ColorModel
。
它可以将颜色光栅数据乘以或除以α,如果数据处于正确状态,则不执行任何操作。
如果需要强制数据,这个方法也将返回一个ColorModel
一个实例,其中isAlphaPremultiplied
标志设置得恰当。
这个方法会抛出一个UnsupportedOperationException
如果它不支持这个ColorModel
。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
子类必须重写这个方法,因为这个抽象类中的实现会抛出一个UnsupportedOperationException
。
raster
-
WritableRaster
数据
isAlphaPremultiplied
- true
如果alpha是预乘式的;
false
否则
ColorModel
强制数据的
ColorModel
对象。
public boolean isCompatibleRaster(Raster raster)
raster
与此ColorModel
和false
兼容,则返回true
。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
子类必须重写这个方法,因为这个抽象类中的实现会抛出一个UnsupportedOperationException
。
raster
- Raster
对象测试兼容性
true
如果
raster
与此
ColorModel
。
UnsupportedOperationException
- 如果这种方法还没有实现这个
ColorModel
public WritableRaster createCompatibleWritableRaster(int w, int h)
WritableRaster
具有指定的宽度和高度,其具有的数据布局( SampleModel
)与此兼容ColorModel
。
由于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
true
如果SampleModel
的SampleModel与此ColorModel
;
false
否则。
UnsupportedOperationException
- 如果此方法不支持此
ColorModel
SampleModel
public void finalize()
ColorModel
不再被引用,则处理与此
ColorModel
的系统资源。
finalize
在
Object
WeakReference
, PhantomReference
public WritableRaster getAlphaRaster(WritableRaster raster)
Raster
表示图像的alpha通道,从输入中提取Raster
,提供此的像素值ColorModel
表示颜色和alpha信息为独立的空间频带(例如ComponentColorModel
和DirectColorModel
)。
该方法假设与这样的ColorModel
Raster
对象存储了α带(如果存在)作为最后的图像数据带。
返回null
如果没有与此相关的独立空间alpha通道ColorModel
。
如果这是一个IndexColorModel
,它在查找表中有alpha,该方法将返回null
因为没有空间离散的alpha通道。
此方法将创建一个新的Raster
(但将共享数据数组)。
由于ColorModel
是一个抽象类,任何实例都是一个子类的实例。
子类必须重写此方法来获得比其他返回任何行为null
因为在这个抽象类中的实现返回null
。
raster
- 指定的
Raster
Raster
代表图像的alpha通道,从指定的Raster
Raster
。