java.lang.Object java.awt.image.ColorModel java.awt.image.PackedColorModel java.awt.image.DirectColorModel
public class DirectColorModel
DirectColorModel
类是使用像素值的 ColorModel
类,像素值以单独样本的形式表示 RGB 颜色和 alpha 信息,并将单个像素的所有样本打包成单个 int、short 或 byte 量。此类只能与类型 ColorSpace.TYPE_RGB 的 ColorSpaces 一起使用。此外,对于 ColorSpace 的每个分量,通过 ColorSpace 的 getMinValue()
方法得到的最小标准化分量值必须是 0.0,通过 getMaxValue()
方法得到的最大值必须是 1.0(这些最小/最大值是 RGB 空间的常见值)。像素值中必须有三个颜色样本,且可以有一个 alpha 样本。对于那些使用类型 transferType
的基本数组像素表示形式的方法,数组长度总是 1。受支持的转换类型是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 和 DataBuffer.TYPE_INT。颜色和 alpha 样本以位为单位存储在位掩码指示的数组的单个元素中。每个位掩码必须是连续的,并且掩码一定不能重叠。相同的掩码可以应用于由其他方法使用的单个 int 像素表示形式。掩码和颜色/alpha 样本间的对应关系如下:
出于显示或处理的目的,像素值到颜色/alpha 分量的转换是从样本到分量一一对应的。DirectColorModel
通常与使用掩码定义打包样本的图像数据一起使用。例如,DirectColorModel
可以与 SinglePixelPackedSampleModel
一起使用来构造 BufferedImage
。通常,SampleModel
和 ColorModel
使用的掩码是相同的。但是,如果掩码不相同,像素数据的颜色解释将根据 ColorModel
的掩码进行。
单个 int 像素表示形式对此类的所有对象都有效,因为它总是能够表示在单个 int 中与此类一起使用的像素值。因此,使用此表示形式的方法将不会因无效的像素值而抛出 IllegalArgumentException
。
此颜色模型类似于 X11 TrueColor 可视分量。由 getRGBdefault
方法指定的默认 RGB ColorModel 是一个具有以下参数的 DirectColorModel
:
位数: 32 红色掩码:0x00ff0000 绿色掩码:0x0000ff00 蓝色掩码:0x000000ff Alpha 掩码:0xff000000 颜色空间:sRGB isAlphaPremultiplied:False 透明度:Transparency.TRANSLUCENT transferType:DataBuffer.TYPE_INT
此类中的许多方法都是 final。这是因为基础本机图形代码假定此类的布局和操作,并在此处标记 final 的方法实现中反映了这些假定。您可以出于其他原因将此类子类化,但不能重写或修改那些方法的行为。
ColorModel
,
ColorSpace
,
SinglePixelPackedSampleModel
,
BufferedImage
,
ColorModel.getRGBdefault()
字段摘要 |
---|
从类 java.awt.image.ColorModel 继承的字段 |
---|
pixel_bits, transferType |
从接口 java.awt.Transparency 继承的字段 |
---|
BITMASK, OPAQUE, TRANSLUCENT |
构造方法摘要 | |
---|---|
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) 根据指定的指示 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本的掩码构造 DirectColorModel 。 |
|
DirectColorModel(int bits, int rmask, int gmask, int bmask, int amask) 根据指定的指示在 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)的掩码构造 DirectColorModel 。 |
方法摘要 | |
---|---|
ColorModel |
coerceData(WritableRaster raster, boolean isAlphaPremultiplied) 强制光栅数据与在 isAlphaPremultiplied 变量中指定的状态匹配,假定此 ColorModel 现在已对该数据进行正确描述。 |
WritableRaster |
createCompatibleWritableRaster(int w, int h) 创建具有指定宽度和高度、拥有与此 ColorModel 兼容的数据布局 (SampleModel ) 的 WritableRaster 。 |
int |
getAlpha(int pixel) 返回指定像素(缩放范围从 0 到 255)的 alpha 分量。 |
int |
getAlpha(Object inData) 返回指定像素(在 0 到 255 之间缩放)的 alpha 分量。 |
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) 在给定未标准化颜色/alpha 分量的数组的情况下,返回以 int 类型表示在此 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。 |
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 兼容,则返回 true ,如果不兼容,则返回 false 。 |
String |
toString() 返回表示此 DirectColorModel 的 String 。 |
从类 java.awt.image.PackedColorModel 继承的方法 |
---|
createCompatibleSampleModel, equals, getAlphaRaster, getMask, getMasks, isCompatibleSampleModel |
从类 java.lang.Object 继承的方法 |
---|
clone, getClass, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
public DirectColorModel(int bits, int rmask, int gmask, int bmask)
int
像素表示形式中哪些位包含红色、绿色和蓝色颜色样本的掩码构造
DirectColorModel
。因为像素值不包含 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)
int
像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)的掩码构造
DirectColorModel
。如果
amask
为 0,则像素值不包含 alpha 信息,且所有像素都可视为不透明的,这意味着 alpha = 1.0。每个掩码中的所有位必须是连续的,并且符合
int
像素表示形式的最低有效位的指定数量。Alpha(如果存在)不是预先乘得的值。
ColorSpace
是默认的 sRGB 空间。如果 alpha 不存在,则透明度值是 Transparency.OPAQUE,否则是 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
,则假定颜色样本已经乘以 alpha 样本。如果 alpha 不存在,则透明度值为 Transparency.OPAQUE,否则为 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
像素表示形式的哪些位包含 alpha 样本的掩码。
public final int getRed(int pixel)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为
int
。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则红色值为 0。
ColorModel
中的
getRed
pixel
- 指定的像素
ColorSpace
中缩放范围从 0 到 255)的红色颜色分量。
public final int getGreen(int pixel)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为
int
。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则绿色值为 0。
ColorModel
中的
getGreen
pixel
- 指定像素
ColorSpace
中缩放范围从 0 到 255)的绿色颜色分量。
public final int getBlue(int pixel)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为
int
。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则蓝色值为 0。
ColorModel
中的
getBlue
pixel
- 指定的像素
ColorSpace
中缩放范围从 0 到 255)的蓝色颜色分量。
public final int getAlpha(int pixel)
int
。
ColorModel
中的
getAlpha
pixel
- 指定像素
pixel
(0 到 255)的 alpha 分量的值。
public final int getRGB(int pixel)
int
。返回的值是非预乘格式。因此,如果预乘 alpha,则此方法会将它从颜色分量中分离出来。例如,如果 alpha 值为 0,则颜色值每个分量都是 0。
ColorModel
中的
getRGB
pixel
- 指定的像素
ColorModel.getRGBdefault()
public int getRed(Object inData)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型
transferType
的数据元素的数组指定。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则红色值为 0。如果
inData
不是类型
transferType
的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。因为
DirectColorModel
可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的
transferType
时,将抛出异常。如果此
transferType
不受该
ColorModel
支持,则抛出
UnsupportedOperationException
。
ColorModel
中的
getRed
inData
- 包含该像素值的数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此颜色模型的像素值
ClassCastException
- 如果
inData
不是类型
transferType
的基本数组
UnsupportedOperationException
- 如果此颜色模型不支持
transferType
public int getGreen(Object inData)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型
transferType
的数据元素的数组指定。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则绿色值为 0。如果
inData
不是类型
transferType
的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。因为
DirectColorModel
可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的
transferType
时,将抛出异常。如果此
transferType
不受该
ColorModel
支持,则抛出
UnsupportedOperationException
。
ColorModel
中的
getGreen
inData
- 包含该像素值的数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此颜色模型的像素值
ClassCastException
- 如果
inData
不是类型
transferType
的基本数组
UnsupportedOperationException
- 如果此颜色模型不支持
transferType
public int getBlue(Object inData)
ColorSpace
(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型
transferType
的数据元素的数组指定。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则蓝色值为 0。如果
inData
不是类型
transferType
的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。因为
DirectColorModel
可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的
transferType
时,将抛出异常。如果此
transferType
不受该
ColorModel
支持,则抛出
UnsupportedOperationException
。
ColorModel
中的
getBlue
inData
- 包含像素值的数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此颜色模型的像素值
ClassCastException
- 如果
inData
不是类型
transferType
的基本数组
UnsupportedOperationException
- 如果此颜色模型不支持
transferType
public int getAlpha(Object inData)
transferType
的数据元素的数组指定。如果
inData
不是类型
transferType
的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。因为
DirectColorModel
可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的
transferType
时,将抛出异常。如果此
transferType
不受支持,则抛出
UnsupportedOperationException
。
ColorModel
中的
getAlpha
inData
- 指定的像素
ClassCastException
- 如果
inData
不是类型
transferType
的基本数组
ArrayIndexOutOfBoundsException
- 如果
inData
不是特别大,不能存储此
ColorModel
的像素
UnsupportedOperationException
- 如果此
tranferType
不受此
ColorModel
支持
public int getRGB(Object inData)
transferType
的数据元素的数组指定。如果
inData
不是类型
transferType
的基本数组,则抛出
ClassCastException
。如果
inData
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。返回的值是非预乘格式。因此,如果预乘 alpha,则此方法会将它从颜色分量中分离出来。例如,如果 alpha 值为 0,则颜色值为 0。因为
DirectColorModel
可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的
transferType
时,将抛出异常。
ColorModel
中的
getRGB
inData
- 指定的像素
UnsupportedOperationException
- 如果该
transferType
不受此
ColorModel
支持
ColorModel.getRGBdefault()
public Object getDataElements(int rgb, Object pixel)
ColorModel
中像素的数据元素数组的表示形式。然后可以将此数组传递给
WritableRaster
对象的
setDataElements
方法。如果像素变量为
null
,则分配一个新数组。如果
pixel
不为
null
,则它必须是类型
transferType
的基本数组;否则,抛出
ClassCastException
。如果
pixel
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。此像素数组被返回。因为
DirectColorModel
可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的
transferType
时,将抛出异常。
ColorModel
中的
getDataElements
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
,则分配一个新数组。该
components
数组被返回。将颜色/alpha 分量存储在以
offset
开头的
components
数组中,即便此方法已分配了数组也如此。如果
components
数组不为
null
且不是特别大,不能以
offset
开头存储所有颜色和 alpha 分量,则抛出
ArrayIndexOutOfBoundsException
。
ColorModel
中的
getComponents
pixel
- 指定的像素
components
- 接收指定像素的颜色和 alpha 分量的数组
offset
- 开始存储颜色和 alpha 分量时的
components
数组的偏移量
public final int[] getComponents(Object pixel, int[] components, int offset)
ColorModel
中已给定像素的未标准化颜色/alpha 分量。像素值由作为对象引用传入的类型
transferType
的数据元素的数组指定。如果
pixel
不是类型
transferType
的基本数组,则抛出
ClassCastException
。如果
pixel
不是特别大,不能存储此
ColorModel
的像素值,则抛出
ArrayIndexOutOfBoundsException
。如果该
components
数组为
null
,则分配一个新数组。该
components
数组被返回。将颜色/alpha 分量存储在以
offset
开头的
components
数组中,即便此方法已分配了数组也如此。如果
components
数组不为
null
且不是特别大,不能以
offset
开头存储所有颜色和 alpha 分量,则抛出
ArrayIndexOutOfBoundsException
。因为
DirectColorModel
可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的
transferType
时,将抛出异常。
ColorModel
中的
getComponents
pixel
- 指定的像素
components
- 接收指定像素的颜色和 alpha 分量的数组
offset
- 开始存储颜色和 alpha 分量时的
components
数组的偏移量
ClassCastException
- 如果
pixel
不是类型
transferType
的基本数组
ArrayIndexOutOfBoundsException
- 如果
pixel
不是特别大,不能存储此
ColorModel
的像素值,或如果
components
不为
null
且不是特别大,不能以
offset
开头保存所有颜色和 alpha 分量
UnsupportedOperationException
- 如果此
transferType
不受此颜色模型支持
public final WritableRaster createCompatibleWritableRaster(int w, int h)
ColorModel
兼容的数据布局 (
SampleModel
) 的
WritableRaster
。
ColorModel
中的
createCompatibleWritableRaster
w
- 应用到新
WritableRaster
的宽度
h
- 应用到新
WritableRaster
的高度
WritableRaster
对象。
IllegalArgumentException
- 如果
w
或
h
小于或等于 0