java.lang.Objectjava.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