public class DirectColorModel extends PackedColorModel
DirectColorModel类是一个ColorModel类,适用于将RGB颜色和alpha信息表示为单独样本的像素值,并将单个像素的所有样本包装为单个int,short或byte数量。
该类只能用于ColorSpace.TYPE_RGB类型的ColorSpaces。
此外,对于ColorSpace的每个组件,通过ColorSpace的getMinValue()方法获得的最小归一化分量值必须为0.0,并且通过getMaxValue()方法获得的最大值必须为1.0(这些最小值/最大值是RGB空间的典型值) 。
在像素值中必须有三个颜色样本,并且可以有一个单一的α样本。
对于使用transferType类型的原始数组像素表示的transferType ,数组长度总是为1。
支持的传输类型是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT和DataBuffer.TYPE_INT。
颜色和alpha样本以位掩码表示的位存储在阵列的单个元素中。
每个位掩码必须是连续的,掩码不能重叠。
相同的掩码适用于其他方法使用的单个int像素表示。
面具和颜色/阿尔法样本的对应关系如下:
从显示或处理目的,从像素值到颜色/α分量的转换是样本与组件的一一对应关系。 A DirectColorModel通常用于使用掩模来定义打包样本的图像数据。 例如, DirectColorModel可以结合使用具有SinglePixelPackedSampleModel构建BufferedImage 。 通常SampleModel和ColorModel所使用的面具将是一样的。 但是,如果它们是不同的,像素数据的颜色解释将根据的面具做ColorModel 。
单个int像素表示对于此类的所有对象是有效的,因为总是可以在单个int中表示与该类一起使用的像素值。 因此,由于无效的像素值,使用此表示的方法不会抛出IllegalArgumentException 。
此颜色模型与X11 TrueColor视觉相似。 由指定的默认RGB ColorModel getRGBdefault方法是DirectColorModel具有以下参数:
Number of bits: 32
Red mask: 0x00ff0000
Green mask: 0x0000ff00
Blue mask: 0x000000ff
Alpha mask: 0xff000000
Color space: sRGB
isAlphaPremultiplied: False
Transparency: Transparency.TRANSLUCENT
transferType: DataBuffer.TYPE_INT
这个类中的很多方法都是最终的。 这是因为底层本机图形代码对该类的布局和操作做出假设,这些假设反映在这里标记为final的方法的实现中。 您可以通过其他原因对此类进行子类化,但不能覆盖或修改这些方法的行为。
pixel_bits, transferTypeBITMASK, OPAQUE, TRANSLUCENT| Constructor and Description |
|---|
DirectColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int transferType)
构造一个
DirectColorModel从指定的参数。
|
DirectColorModel(int bits, int rmask, int gmask, int bmask)
从指定的掩码构造一个
DirectColorModel ,指示
int像素表示中的哪些位包含红色,绿色和蓝色样本。
|
DirectColorModel(int bits, int rmask, int gmask, int bmask, int amask)
从指定的掩码构造一个
DirectColorModel ,指示
int像素表示中的哪些位包含红色,绿色和蓝色样本以及alpha样本(如果存在)。
|
| Modifier and Type | Method and Description |
|---|---|
ColorModel |
coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
强制光栅数据与
isAlphaPremultiplied变量中指定的状态相匹配,假设数据目前由该
ColorModel 。
|
WritableRaster |
createCompatibleWritableRaster(int w, int h)
创建
WritableRaster具有指定的宽度和高度,其具有的数据布局(
SampleModel )与此兼容
ColorModel 。
|
int |
getAlpha(int pixel)
返回指定像素的alpha分量,从0到255。
|
int |
getAlpha(Object inData)
返回指定像素的alpha分量,从0到255。
|
int |
getAlphaMask()
返回掩码,指示
int像素表示中的哪些位包含alpha组件。
|
int |
getBlue(int pixel)
返回指定像素的蓝色分量,在默认RGB
ColorSpace (sRGB)中从0到255。
|
int |
getBlue(Object inData)
返回指定像素的蓝色分量,在默认RGB
ColorSpace (sRGB)中从0到255。
|
int |
getBlueMask()
返回掩码,指示
int像素表示中的哪些位包含蓝色分量。
|
int[] |
getComponents(int pixel, int[] components, int offset)
在此
ColorModel给出一个像素的非归一化颜色/ alpha分量的数组。
|
int[] |
getComponents(Object pixel, int[] components, int offset)
在此
ColorModel给出一个像素的非规范化颜色/ alpha分量的数组。
|
int |
getDataElement(int[] components, int offset)
返回一个像
int在
ColorModel中表示的像素值,给出了一系列非规范化颜色/ alpha分量。
|
Object |
getDataElements(int[] components, int offset, Object obj)
返回此的像素的数据元素数组表示
ColorModel ,给定非标准化颜色/ alpha分量的阵列。
|
Object |
getDataElements(int rgb, Object pixel)
返回此的像素的数据元素数组表示
ColorModel给出在默认RGB颜色模型中的整数像素表示。
|
int |
getGreen(int pixel)
返回指定像素的绿色分量,在默认RGB
ColorSpace (sRGB)中从0到255。
|
int |
getGreen(Object inData)
返回指定像素的绿色分量,在默认RGB
ColorSpace sRGB中从0到255。
|
int |
getGreenMask()
返回掩码,指示
int像素表示中的哪些位包含绿色分量。
|
int |
getRed(int pixel)
返回指定像素的红色分量,在默认RGB
ColorSpace (sRGB)中从0到255。
|
int |
getRed(Object inData)
返回指定像素的红色分量,在默认RGB
ColorSpace sRGB中从0到255。
|
int |
getRedMask()
返回掩码,指示
int像素表示中的哪些位包含红色分量。
|
int |
getRGB(int pixel)
以默认RGB颜色模型格式返回像素的颜色/ alpha分量。
|
int |
getRGB(Object inData)
以默认RGB颜色模型格式返回指定像素的颜色/ alpha分量。
|
boolean |
isCompatibleRaster(Raster raster)
如果
raster与此
ColorModel和
false兼容,则返回
true 。
|
String |
toString()
返回
String表示此
DirectColorModel 。
|
createCompatibleSampleModel, equals, getAlphaRaster, getMask, getMasks, isCompatibleSampleModelfinalize, getColorSpace, getComponentSize, getComponentSize, getDataElement, getDataElements, getNormalizedComponents, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransferType, getTransparency, getUnnormalizedComponents, hasAlpha, hashCode, isAlphaPremultipliedpublic DirectColorModel(int bits,
int rmask,
int gmask,
int bmask)
DirectColorModel ,指示int像素表示中的哪些位包含红色,绿色和蓝色样本。
由于像素值不包含alpha信息,因此所有像素都被视为不透明,这意味着alpha = 1.0。
每个掩码中的所有位必须是连续的,并且适合int像素表示的指定数目的最低有效位。
ColorSpace是默认的sRGB空间。
透明度值为Transparency.OPAQUE。
传输类型是可容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的。
bits - 像素值中的位数;
例如,掩码中的比特数之和。
rmask - 指定一个掩码,指示整数像素中的哪些位包含红色分量
gmask - 指定一个掩码,指示整数像素中的哪些位包含绿色分量
bmask - 指定一个掩码,指示整数像素中的哪些位包含蓝色分量
public DirectColorModel(int bits,
int rmask,
int gmask,
int bmask,
int amask)
DirectColorModel ,指示int像素表示中的哪些位包含红色,绿色和蓝色样本以及alpha样本(如果存在)。
如果amask为0,像素值不包含alpha信息,所有像素都被视为不透明,这意味着alpha = 1.0。
每个掩码中的所有位必须是连续的,并且适合int像素表示的指定数目的最低有效位。
阿尔法,如果存在,不是预付费。
ColorSpace是默认的sRGB空间。
透明度值是Transparency.OPAQUE,如果不存在alpha,或Transparency.TRANSLUCENT,否则。
传输类型是可容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的。
bits - 像素值中的位数;
例如,掩码中的比特数之和。
rmask - 指定一个掩码,指示整数像素中的哪些位包含红色分量
gmask - 指定指示整数像素中的哪些位包含绿色分量的掩码
bmask - 指定指示整数像素中的哪些位包含蓝色分量的掩码
amask - 指定一个掩码,指示整数像素中的哪些位包含alpha分量
public DirectColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int transferType)
DirectColorModel从指定的参数。
颜色组件在指定的ColorSpace ,它必须是ColorSpace.TYPE_RGB类型,并且具有最小的归一化组件值,它们全部为0.0,最大值均为1.0。
掩码指定int像素表示中的哪些位包含红色,绿色和蓝色样本以及alpha样本(如果存在)。
如果amask为0,像素值不包含alpha信息,所有像素都被视为不透明,这意味着alpha = 1.0。
每个掩码中的所有位必须是连续的,并且适合int像素表示的指定数目的最低有效位。
如果有alpha, boolean isAlphaPremultiplied指定如何在像素值中解释颜色和alpha样本。
如果boolean是true ,假设颜色样本已经乘以α样本。
透明度值为Transparency.OPAQUE,如果不存在alpha,或Transparency.TRANSLUCENT则为透明度。
传输类型是用于表示像素值的原始数组的类型,必须是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT之一。
space - 指定的
ColorSpace
bits - 像素值中的位数;
例如,掩码中的比特数之和。
rmask - 指定一个掩码,指示整数像素中的哪些位包含红色分量
gmask - 指定一个掩码,指示整数像素中的哪些位包含绿色分量
bmask - 指定指示整数像素中的哪些位包含蓝色分量的掩码
amask - 指定一个掩码,指示整数像素中的哪些位包含alpha分量
isAlphaPremultiplied - true如果颜色样品被alpha样品预乘,
false否则
transferType - 用于表示像素值的数组类型
IllegalArgumentException - 如果
space不是TYPE_RGB空间,或者最小/最大归一化分量值不是0.0 / 1.0。
public final int getRedMask()
int像素表示中的哪些位包含红色分量。
int像素表示的哪个位包含红色样本。
public final int getGreenMask()
int像素表示中的哪些位包含绿色分量。
int像素表示的哪个位包含绿色样本。
public final int getBlueMask()
int像素表示中的哪些位包含蓝色分量。
int像素表示的哪个位包含蓝色样本。
public final int getAlphaMask()
int像素表示中的哪些位包含alpha组件。
int像素表示的哪个位包含α样本。
public final int getRed(int pixel)
ColorSpace (sRGB)中从0到255。
必要时进行颜色转换。
像素值指定为int 。
返回的值是非预先乘以的值。
因此,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,例如,红色值为0。
getRed在
ColorModel
pixel - 指定的像素
ColorSpace中的0到255。
public final int getGreen(int pixel)
ColorSpace (sRGB)中从0到255。
必要时进行颜色转换。
像素值被指定为int 。
返回的值是非预先乘以的值。
因此,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,例如,绿色值为0。
getGreen在
ColorModel
pixel - 指定像素
ColorSpace中的0到255。
public final int getBlue(int pixel)
ColorSpace (sRGB)中从0到255。
必要时进行颜色转换。
像素值指定为int 。
返回的值是非预先乘以的值。
因此,如果alpha被预乘,则该方法在返回值之前将其分开。
如果alpha值为0,例如,蓝色值为0。
getBlue在
ColorModel
pixel - 指定的像素
ColorSpace中的0到255。
public final int getAlpha(int pixel)
int 。
getAlpha在
ColorModel
pixel - 指定的像素
pixel从0到255。
public final int getRGB(int pixel)
int 。
返回的值为非预先乘法格式。
因此,如果alpha被预乘,则该方法将其从颜色分量中分离出来。
如果alpha值为0,例如,颜色值分别为0。
getRGB在
ColorModel
pixel - 指定的像素
ColorModel.getRGBdefault()
public int getRed(Object inData)
ColorSpace (sRGB)中从0到255。
必要时进行颜色转换。
的像素值是由类型的数据元素的数组指定transferType传入作为对象引用。
返回的值是非预先乘以的值。
因此,如果alpha被预乘,则该方法在返回值之前将其分开。
如果α值是0,例如,红色值是0。如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。
一个ArrayIndexOutOfBoundsException如果抛出inData是不是大到足以容纳这个像素值ColorModel 。
由于DirectColorModel可以被子类化,子类继承了该方法的实现,如果它们不覆盖它,那么如果使用不支持的transferType,它们将抛出transferType 。
一个UnsupportedOperationException如果这是抛出transferType不受此支持ColorModel 。
getRed在
ColorModel
inData - 包含像素值的数组
ArrayIndexOutOfBoundsException - 如果
inData不够大,不能保持该颜色模型的像素值
ClassCastException -如果
inData不是类型的基本数组
transferType
UnsupportedOperationException - 如果此颜色模型不支持此
transferType
public int getGreen(Object inData)
ColorSpace (sRGB)中从0到255。
必要时进行颜色转换。
的像素值是由类型的数据元素的数组指定transferType传入作为对象引用。
返回的值是非预先乘以的值。
因此,如果alpha被预乘,则该方法在返回值之前将其分开。
如果α值是0,例如,绿色的值为0。如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。
一个ArrayIndexOutOfBoundsException如果抛出inData是不是大到足以容纳这个像素值ColorModel 。
由于DirectColorModel可以被子类化,子类继承了该方法的实现,如果它们不覆盖它,那么如果他们使用不支持的transferType,它们会引发transferType 。
一个UnsupportedOperationException如果这是抛出transferType不受此支持ColorModel 。
getGreen在
ColorModel
inData - 包含像素值的数组
ArrayIndexOutOfBoundsException - 如果
inData不够大,不能持有该颜色模型的像素值
ClassCastException -如果
inData不是类型的基本数组
transferType
UnsupportedOperationException - 如果此颜色模型不支持此
transferType
public int getBlue(Object inData)
ColorSpace (sRGB)中从0到255。
必要时进行颜色转换。
像素值由作为对象引用传递的类型为transferType的数据元素数组指定。
返回的值是非预先乘以的值。
因此,如果alpha被预乘,则该方法在返回值之前将其分开。
如果α值是0,例如,蓝色值为0。如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。
一个ArrayIndexOutOfBoundsException如果抛出inData是不是大到足以容纳这个像素值ColorModel 。
由于DirectColorModel可以被子类化,子类继承了该方法的实现,如果它们不覆盖它,那么如果他们使用不支持的transferType,它们将抛出transferType 。
一个UnsupportedOperationException如果这是抛出transferType不受此支持ColorModel 。
getBlue在
ColorModel
inData - 包含像素值的数组
ArrayIndexOutOfBoundsException - 如果
inData不够大,不能持有该颜色模型的像素值
ClassCastException -如果
inData不是类型的基本数组
transferType
UnsupportedOperationException - 如果此颜色模型不支持此
transferType
public int getAlpha(Object inData)
transferType的数据元素数组指定。
如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。
一个ArrayIndexOutOfBoundsException如果抛出inData是不是大到足以容纳这个像素值ColorModel 。
由于DirectColorModel可以被子类化,子类继承了该方法的实现,如果它们不覆盖它,那么如果使用不支持的transferType,它们将抛出transferType 。
如果不支持此transferType ,则抛出UnsupportedOperationException 。
getAlpha在
ColorModel
inData - 指定像素
ClassCastException -如果
inData不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException - 如果
inData不够大,不能保持这个
ColorModel的像素值
UnsupportedOperationException - 如果这个
tranferType不支持此
ColorModel
public int getRGB(Object inData)
transferType的数据元素数组指定。
如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。
一个ArrayIndexOutOfBoundsException如果抛出inData是不是大到足以容纳这个像素值ColorModel 。
返回的值为非预先乘法格式。
因此,如果alpha被预乘,则该方法将其从颜色分量中分离出来。
例如,如果alpha值为0,则颜色值为0.由于DirectColorModel可以被子类化,子类继承此方法的实现,如果它们不覆盖它,则如果使用不支持的transferType ,则它们将抛出transferType 。
getRGB在
ColorModel
inData - 指定像素
UnsupportedOperationException - 如果这个
transferType不支持此
ColorModel
ColorModel.getRGBdefault()
public Object getDataElements(int rgb, Object pixel)
ColorModel给出在默认RGB颜色模型中的整数像素表示。
然后可以将该数组传递给WritableRaster对象的setDataElements方法。
如果像素变量为null ,则会null一个新数组。
如果pixel不是null ,它必须是类型的基本数组transferType ;
否则,抛出一个ClassCastException 。
一个ArrayIndexOutOfBoundsException如果抛出pixel是不是大到足以容纳这个像素值ColorModel 。
返回像素数组。
由于DirectColorModel可以被子类化,子类继承了该方法的实现,如果它们不覆盖它,那么如果它们使用不支持的transferType,它们将抛出transferType 。
getDataElements在
ColorModel
rgb - 默认RGB颜色模型中的整数像素表示
pixel - 指定的像素
ColorModel
ClassCastException -如果
pixel不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException - 如果
pixel不够大,可以持有这个
ColorModel的像素值
UnsupportedOperationException - 如果这个
transferType不支持此
ColorModel
WritableRaster.setDataElements(int, int, java.lang.Object) ,
SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
public final int[] getComponents(int pixel,
int[] components,
int offset)
ColorModel给出一个像素的返回一个非标准化颜色/ alpha分量的数组。
像素值被指定为int 。
如果components阵列为null ,则会null一个新阵列。
返回components数组。
颜色/ alpha分量存储中components数组以offset ,即使阵列通过这种方法分配的。
一个ArrayIndexOutOfBoundsException如果抛出components数组不null ,而不是大到足以容纳所有的颜色和alpha分量,开始offset 。
getComponents在
ColorModel
pixel - 指定的像素
components - 用于接收指定像素的颜色和alpha分量的数组
offset - 偏移到
components阵列中,开始存储颜色和alpha组件
public final int[] getComponents(Object pixel, int[] components, int offset)
ColorModel给出一个像素的非归一化颜色/ alpha分量的数组。
的像素值是由类型的数据元素的数组指定transferType传入作为对象引用。
如果pixel不是类型的基本数组transferType ,一个ClassCastException被抛出。
一个ArrayIndexOutOfBoundsException如果抛出pixel是不是大到足以容纳这个像素值ColorModel 。
如果components数组为null ,则会null一个新数组。
返回components数组。
颜色/ alpha分量存储中components数组以offset ,即使阵列通过这种方法分配的。
一个ArrayIndexOutOfBoundsException如果抛出components数组不null ,而不是大到足以容纳所有的颜色和alpha分量,开始offset 。
由于DirectColorModel可以被子类化,子类继承了该方法的实现,如果它们不覆盖它,那么如果它们使用不支持的transferType,它们将抛出transferType 。
getComponents在
ColorModel
pixel - 指定像素
components - 数组接收指定像素的颜色和alpha分量
offset -
components阵列的偏移量,用于开始存储颜色和alpha组件
ClassCastException -如果
pixel不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException - 如果
pixel不够大,不能容纳这个
ColorModel的像素值,或者如果
components不是
null ,并且不够大,不能容纳所有的颜色和alpha组件,从
offset开始
UnsupportedOperationException - 如果此颜色模型不支持此
transferType
public final WritableRaster createCompatibleWritableRaster(int w, int h)
WritableRaster具有指定的宽度和高度,其具有的数据布局(
SampleModel )与此兼容
ColorModel 。
createCompatibleWritableRaster在
ColorModel
w - 适用于新的
WritableRaster的宽度
h - 适用于新的
WritableRaster的高度
WritableRaster对象。
IllegalArgumentException - 如果
w或
h小于或等于零
WritableRaster , SampleModel
public int getDataElement(int[] components,
int offset)
int在此ColorModel ,给定非标准化颜色/ alpha分量的阵列。
一个ArrayIndexOutOfBoundsException如果抛出components阵列是不是大到足以容纳所有的颜色和alpha分量,开始offset 。
getDataElement在
ColorModel类
components - 非规范化颜色和alpha组件的数组
offset - 索引到
components开始检索颜色和alpha组件
int像素值在这个
ColorModel对应的指定组件。
ArrayIndexOutOfBoundsException -如果
components阵列是没有大到足以容纳所有的颜色和alpha分量开始于
offset
public Object getDataElements(int[] components, int offset, Object obj)
ColorModel ,给定非标准化颜色/ alpha分量的阵列。
然后可以将该数组传递给WritableRaster对象的setDataElements方法。
ArrayIndexOutOfBoundsException如果components阵列不够大,不能容纳所有颜色和alpha组件,从偏移开始就抛出。
如果obj变量为null ,则会null一个新数组。
如果obj不是null ,它必须是类型的基本数组transferType ;
否则,将抛出一个ClassCastException 。
一个ArrayIndexOutOfBoundsException如果抛出obj是不是大到足以容纳这个像素值ColorModel 。
由于DirectColorModel可以被子类化,子类继承了该方法的实现,如果它们不覆盖它,那么如果它们使用不支持的transferType,它们将抛出transferType 。
getDataElements在
ColorModel
components - 非规范化颜色和alpha组件的数组
offset - 索引到
components开始检索颜色和alpha组件
obj -
Object表示颜色和alpha组件的数组
Object表示一个颜色和alpha组件的数组。
ClassCastException -如果
obj不是类型的基本数组
transferType
ArrayIndexOutOfBoundsException -如果
obj是不足够大以保存此像素值
ColorModel或
components阵列是没有大到足以容纳所有的颜色和alpha分量开始于
offset
UnsupportedOperationException - 如果此颜色模型不支持此
transferType
WritableRaster.setDataElements(int, int, java.lang.Object) ,
SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
public final ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
isAlphaPremultiplied变量中指定的状态相匹配,假设数据当前由此ColorModel正确ColorModel 。
它可以将颜色光栅数据乘以或除以α,如果数据处于正确状态,则不执行任何操作。
如果数据需要被强制,这种方法也将返回该实例ColorModel与isAlphaPremultiplied标志适当设置。
此方法将抛出一个UnsupportedOperationException如果transferType时不受此支持ColorModel 。
由于ColorModel可以被子类化,子类继承了该方法的实现,并且如果它们不覆盖它,那么如果它们使用不受支持的transferType,它们将抛出异常。
coerceData在
ColorModel
raster -
WritableRaster数据
isAlphaPremultiplied - true如果alpha是预乘的;
false否则
ColorModel强制数据的
ColorModel对象。
UnsupportedOperationException - 如果此颜色模型不支持此
transferType
public boolean isCompatibleRaster(Raster raster)
true如果
raster是兼容这个
ColorModel和
false如果不是。
isCompatibleRaster在
ColorModel
raster - Raster对象测试兼容性
true如果raster是兼容这个ColorModel ;
false否则。
public String toString()
String表示此
DirectColorModel 。
toString在
ColorModel
String代表这
DirectColorModel 。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.