|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.awt.image
类 DirectColorModel
java.lang.Object java.awt.image.ColorModel java.awt.image.PackedColorModel java.awt.image.DirectColorModel
- 所有已实现的接口:
- Transparency
-
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 空间的常见值)。像素值中必须有三个颜色样本,且可以有一个 alpha 样本。对于那些使用类型 transferType
的基本数组像素表示形式的方法,数组长度总是 1。受支持的转换类型是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 和 DataBuffer.TYPE_INT。颜色和 alpha 样本以位为单位存储在位掩码指示的数组的单个元素中。每个位掩码必须是连续的,并且掩码一定不能重叠。相同的掩码可以应用于由其他方法使用的单个 int 像素表示形式。掩码和颜色/alpha 样本间的对应关系如下:
- 如果 alpha 不存在,掩码则由运行 0 到 2 的索引标识,如果 alpha 存在,则由运行 3 的索引标识。
- 前三个索引指的是颜色样本;索引 0 对应于红色,索引 1 对应于绿色,索引 2 对应于蓝色。
- 索引 3 对应于 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 |
构造方法详细信息 |
---|
DirectColorModel
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
- 指定指示整数像素中哪些位包含蓝色分量的掩码
DirectColorModel
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 分量的掩码
DirectColorModel
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。
方法详细信息 |
---|
getRedMask
public final int getRedMask()
-
返回指定
int
像素表示形式中哪些位包含红色分量的掩码。 -
- 返回:
-
指示
int
像素表示形式的哪些位包含红色颜色样本的掩码。
getGreenMask
public final int getGreenMask()
-
返回指示
int
像素表示形式中哪些位包含绿色颜色分量的掩码。 -
- 返回:
-
指示
int
像素表示形式的哪些位包含绿色颜色样本的掩码。
getBlueMask
public final int getBlueMask()
-
返回指示
int
像素表示形式中哪些位包含蓝色颜色分量的掩码。 -
- 返回:
-
指示
int
像素表示形式的哪些位包含蓝色颜色样本的掩码。
getAlphaMask
public final int getAlphaMask()
-
返回指示
int
像素表示形式中哪些位包含 alpha 分量的掩码。 -
- 返回:
-
指示
int
像素表示形式的哪些位包含 alpha 样本的掩码。
getRed
public final int getRed(int pixel)
-
返回指定像素(在默认的 RGB
ColorSpace
sRGB 中缩放范围从 0 到 255)的红色颜色分量。如有必要,可进行颜色转换。将像素值指定为int
。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则红色值为 0。 -
- 指定者:
-
类
ColorModel
中的getRed
-
- 参数:
-
pixel
- 指定的像素 - 返回:
-
指定像素(在 sRGB
ColorSpace
中缩放范围从 0 到 255)的红色颜色分量。