java.lang.Object java.awt.image.ColorModel java.awt.image.PackedColorModel
public abstract class PackedColorModel
PackedColorModel
类是一个抽象 ColorModel
类,它使用的像素值以单独采样表示颜色和 alpha 信息,并将单个像素的所有采样打包到单个 int、short 或 byte 量中。此类可与任意 ColorSpace
一起使用。像素值中的颜色采样数必须与 ColorSpace
中的颜色分量数相同。可以有单个 alpha 采样。对于那些使用 transferType
类型的基本数组像素表示形式的方法,数组的长度总是 1。受支持的传输类型有 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 和 DataBuffer.TYPE_INT。颜色和 alpha 采样按位掩码所指示的位存储在数组的单个元素中。每个位掩码必须是连续的,并且掩码不能重叠。相同的掩码适用于其他方法使用的单个 int 像素表示形式。掩码和颜色/alpha 采样的对应关系如下:
getNumComponents
- 1 的索引来标识各掩码。 getNumColorComponents
个索引指颜色采样。 ColorSpace
所指定。此顺序通常反映颜色空间类型的名称(例如 TYPE_RGB),索引 0 对应于红色、索引 1 对应于绿色、索引 2 则对应于蓝色。 出于显示或处理目的而执行的像素值到颜色/alpha 分量的转换是采样到分量的一一对应关系。PackedColorModel
通常与使用掩码来定义已打包采样的图像数据一起使用。例如,可结合使用 PackedColorModel
和 SinglePixelPackedSampleModel
来构造一个 BufferedImage
。通常 SampleModel
所用的掩码与 ColorModel
使用的相同。但是如果它们不同,则根据 ColorModel
的掩码对像素数据进行颜色解释。
单个 int
的像素表示形式对于此类的所有对象都是有效的,因为总是能够以单个 int
表示此类使用的像素值。因此,使用此种表示形式的方法不会由于无效的像素值而抛出 IllegalArgumentException
。
PackedColorModel
的子类是 DirectColorModel
,类似于 X11 TrueColor 可视化模型类型。
字段摘要 |
---|
从类 java.awt.image.ColorModel 继承的字段 |
---|
pixel_bits, transferType |
从接口 java.awt.Transparency 继承的字段 |
---|
BITMASK, OPAQUE, TRANSLUCENT |
构造方法摘要 | |
---|---|
PackedColorModel(ColorSpace space, int bits, int[] colorMaskArray, int alphaMask, boolean isAlphaPremultiplied, int trans, int transferType) 根据颜色掩码数组(指定了 int 像素表示形式中哪些位包含每个颜色的采样)和 alpha 掩码来构造一个 PackedColorModel 。 |
|
PackedColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int trans, int transferType) 根据指定的掩码构造一个 PackedColorModel ,该掩码指示 int 像素表示形式中的哪些位包含 alpha、红色、绿色和蓝色采样。 |
方法摘要 | |
---|---|
SampleModel |
createCompatibleSampleModel(int w, int h) 创建一个具有指定宽度和高度、数据布局与此 ColorModel 兼容的 SampleModel 。 |
boolean |
equals(Object obj) 测试指定的 Object 是否为 PackedColorModel 的一个实例并且等于此 PackedColorModel 。 |
WritableRaster |
getAlphaRaster(WritableRaster raster) 返回从输入 WritableRaster 提取,并且表示图像 alpha 通道的 WritableRaster 。 |
int |
getMask(int index) 返回指示像素中哪些位包含指定颜色/alpha 采样的掩码。 |
int[] |
getMasks() 返回指示像素中的哪些位包含颜色和 alpha 采样的掩码数组。 |
boolean |
isCompatibleSampleModel(SampleModel sm) 检查指定的 SampleModel 是否与此 ColorModel 兼容。 |
从类 java.lang.Object 继承的方法 |
---|
clone, getClass, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
public PackedColorModel(ColorSpace space, int bits, int[] colorMaskArray, int alphaMask, boolean isAlphaPremultiplied, int trans, int transferType)
int
像素表示形式中哪些位包含每个颜色的采样)和 alpha 掩码来构造一个
PackedColorModel
。颜色分量在指定的
ColorSpace
中。
colorMaskArray
的长度应该是
ColorSpace
中的分量数。每个掩码中的所有位必须是连续的,并且能够放入指定
int
像素表示形式的最低有效位数中。如果
alphaMask
为 0,则不存在 alpha。如果存在 alpha,则
boolean
值
isAlphaPremultiplied
指定如何解释像素值中的颜色和 alpha 采样。如果该
boolean
值为
true
,则假定颜色采样已经预乘以 alpha 采样。透明度
trans
指定了此颜色模型可以表示的 alpha 值。传输类型是用于表示像素值的基本数组类型。
space
- 指定的
ColorSpace
bits
- 像素值中的位数
colorMaskArray
- 指定掩码的数组,该掩码表示像素值中表示颜色分量的位
alphaMask
- 指定像素值中表示 alpha 分量的位掩码
isAlphaPremultiplied
- 如果颜色采样预乘了 alpha 采样,则为
true
;否则为
false
trans
- 指定可由此颜色模型表示的 alpha 值
transferType
- 用于表示像素值的数组类型
IllegalArgumentException
- 如果
bits
小于 1 或大于 32
public PackedColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int trans, int transferType)
PackedColorModel
,该掩码指示
int
像素表示形式中的哪些位包含 alpha、红色、绿色和蓝色采样。颜色分量在指定的
ColorSpace
中,并且必须是 ColorSpace.TYPE_RGB 类型。每个掩码中的所有位必须是连续的,并且能够放入指定
int
像素表示形式的最低有效位数中。如果
amask
是 0,则不存在 alpha。如果存在 alpha,则
boolean
值
isAlphaPremultiplied
指定如何解释像素值中的颜色和 alpha 采样。如果该
boolean
值为
true
,则假定颜色采样已经预乘以 alpha 采样。透明度
trans
指定了此颜色模型可以表示的 alpha 值。传输类型是用于表示像素值的基本数组类型。
space
- 指定的
ColorSpace
bits
- 像素值中的位数
rmask
- 指定像素值中表示红色分量的位掩码
gmask
- 指定像素值中表示绿色分量的位掩码
bmask
- 指定像素值中表示蓝色分量的位掩码
amask
- 指定像素值中表示 alpha 分量的位掩码
isAlphaPremultiplied
- 如果颜色采样预乘了 alpha 采样,则为
true
;否则为
false
trans
- 指定可由此颜色模型表示的 alpha 值
transferType
- 用于表示像素值的数组类型
IllegalArgumentException
- 如果
space
不是 TYPE_RGB 空间
ColorSpace
方法详细信息 |
---|
public final int getMask(int index)
index
对应于颜色空间中颜色采样名称的放置位置。因此对于 CMYK ColorSpace,
index
0 对应 Cyan,而
index
1 则对应 Magenta。如果存在 alpha,则 alpha 的
index
是:
alphaIndex = numComponents() - 1;
index
- 指定的颜色或 alpha 采样
int
像素表示中的哪些位包含
index
所指定的颜色或 alpha 采样的掩码。
ArrayIndexOutOfBoundsException
- 如果
index
大于此
PackedColorModel
中的分量数减 1,或者
index
小于 0
public final int[] getMasks()
int
像素表示形式中的哪些位包含颜色或 alpha 采样。
public SampleModel createCompatibleSampleModel(int w, int h)
ColorModel
兼容的
SampleModel
。
ColorModel
中的
createCompatibleSampleModel
w
- 所描述的图像数据区域的宽度(以像素为单位)
h
- 所描述的图像数据区域的高度(以像素为单位)
SampleModel
。
IllegalArgumentException
- 如果
w
或
h
不大于 0
SampleModel
public boolean isCompatibleSampleModel(SampleModel sm)
SampleModel
是否与此
ColorModel
兼容。如果
sm
为
null
,则此方法返回
false
。
ColorModel
中的
isCompatibleSampleModel
sm
- 指定的
SampleModel
,或者为
null
SampleModel
与此
ColorModel
兼容,则返回
true
;否则返回
false
。
SampleModel
public WritableRaster getAlphaRaster(WritableRaster raster)
WritableRaster
提取,并且表示图像 alpha 通道的
WritableRaster
。此方法假定与此
ColorModel
关联的
WritableRaster
对象将 alpha band(如果有)存储为图像数据的最后一个 band。如果没有与此
ColorModel
关联的、占据独立空间的 alpha 通道,则返回
null
。此方法创建一个新的
WritableRaster
,但是共享原来的数据数组。
ColorModel
中的
getAlphaRaster
raster
- 包含图像的
WritableRaster
raster
中所含图像 alpha 通道的
WritableRaster
。
public boolean equals(Object obj)
Object
是否为
PackedColorModel
的一个实例并且等于此
PackedColorModel
。
ColorModel
中的
equals
obj
- 要测试相等性的
Object
Object
是
PackedColorModel
的一个实例并且等于此
PackedColorModel
,则返回
true
;否则返回
false
。
Object.hashCode()
,
Hashtable