java.lang.Object
java.awt.image.ColorModel
java.awt.image.PackedColorModel
- 所有已实现的接口:
-
透明度
- 直接已知的子类:
-
DirectColorModel
PackedColorModel类是一个抽象的ColorModel类,它处理将表示颜色和alpha信息的像素值作为单独样本,并将单个像素的所有样本打包到单个int、short或byte数量中。此类可与任意ColorSpace一起使用。像素值中的颜色样本数量必须与ColorSpace中的颜色分量数量相同。可以有一个单独的alpha样本。对于使用transferType类型的原始数组像素表示的方法,数组长度始终为1。支持的传输类型为DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT和DataBuffer.TYPE_INT。颜色和alpha样本存储在数组的单个元素中,位掩码指示的位。每个位掩码必须是连续的,且掩码不能重叠。相同的掩码适用于其他方法使用的单个int像素表示。掩码和颜色/alpha样本的对应关系如下:
- 掩码由索引从0到
getNumComponents- 1标识。 - 前
getNumColorComponents个索引指的是颜色样本。 - 如果存在alpha样本,则对应于最后一个索引。
- 颜色索引的顺序由
ColorSpace指定。通常,这反映了颜色空间类型的名称(例如,TYPE_RGB),索引0对应于红色,索引1对应于绿色,索引2对应于蓝色。
从像素值到用于显示或处理目的的颜色/alpha分量的转换是样本到分量的一对一对应关系。通常,PackedColorModel与使用掩码定义打包样本的图像数据一起使用。例如,PackedColorModel可以与SinglePixelPackedSampleModel结合使用以构造BufferedImage。通常,SampleModel和ColorModel使用的掩码将是相同的。但是,如果它们不同,则根据ColorModel的掩码执行像素数据的颜色解释。
由于始终可以将用于此类的像素值表示为单个int,因此此类的所有对象都有效。因此,使用此表示的方法不会因为无效的像素值而抛出IllegalArgumentException。
PackedColorModel的子类是DirectColorModel,类似于X11 TrueColor视觉。
- 参见:
-
Field Summary
Fields declared in class java.awt.image.ColorModel
pixel_bits, transferTypeFields declared in interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT -
Constructor Summary
ConstructorsConstructorDescriptionPackedColorModel(ColorSpace space, int bits, int[] colorMaskArray, int alphaMask, boolean isAlphaPremultiplied, int trans, int transferType) 从颜色掩码数组构造PackedColorModel,该数组指定int像素表示中包含每个颜色样本的位,并指定一个alpha掩码。PackedColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int trans, int transferType) 从指定的掩码构造PackedColorModel,指示int像素表示中包含alpha、红色、绿色和蓝色颜色样本的位。 -
Method Summary
Modifier and TypeMethodDescriptioncreateCompatibleSampleModel(int w, int h) 创建一个具有与此ColorModel兼容的数据布局的SampleModel,其具有指定的宽度和高度。boolean测试指定的Object是否是PackedColorModel的实例,并且是否等于此PackedColorModel。getAlphaRaster(WritableRaster raster) 返回表示从输入WritableRaster中提取的图像的alpha通道的WritableRaster。final intgetMask(int index) 返回掩码,指示像素中包含指定颜色/alpha样本的位。final int[]getMasks()返回一个掩码数组,指示像素中包含颜色和alpha样本的位。inthashCode()返回此PackedColorModel的哈希码。boolean检查指定的SampleModel是否与此ColorModel兼容。Methods declared in class java.awt.image.ColorModel
coerceData, createCompatibleWritableRaster, getAlpha, getAlpha, getBlue, getBlue, getColorSpace, getComponents, getComponents, getComponentSize, getComponentSize, getDataElement, getDataElement, getDataElements, getDataElements, getDataElements, getGreen, getGreen, getNormalizedComponents, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRed, getRed, getRGB, getRGB, getRGBdefault, getTransferType, getTransparency, getUnnormalizedComponents, hasAlpha, isAlphaPremultiplied, isCompatibleRaster, toString
-
Constructor Details
-
PackedColorModel
public PackedColorModel(ColorSpace space, int bits, int[] colorMaskArray, int alphaMask, boolean isAlphaPremultiplied, int trans, int transferType) 从颜色掩码数组构造PackedColorModel,该数组指定int像素表示中包含每个颜色样本的位,并指定一个alpha掩码。颜色分量在指定的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
-
PackedColorModel
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必须是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空间 - 参见:
-
-
Method Details
-
getMask
public final int getMask(int index) 返回掩码,指示像素中包含指定颜色/alpha样本的位。对于颜色样本,index对应于颜色空间中颜色样本名称的放置。因此,对于CMYK ColorSpace,等于0的index对应于Cyan,等于1的index对应于Magenta。如果存在alpha,则alphaindex将是:alphaIndex = numComponents() - 1;
- 参数:
-
index- 指定的颜色或alpha样本 - 返回:
-
掩码,指示
int像素表示中包含由index指定的颜色或alpha样本的位。 - 抛出:
-
ArrayIndexOutOfBoundsException- 如果index大于此PackedColorModel中的组件数减1,或者index小于零
-
getMasks
public final int[] getMasks()返回一个掩码数组,指示像素中包含颜色和alpha样本的位。- 返回:
-
掩码数组,指示
int像素表示中包含颜色或alpha样本的位。
-
createCompatibleSampleModel
创建一个具有与此ColorModel兼容的数据布局的SampleModel,其具有指定的宽度和高度。- 覆盖:
-
createCompatibleSampleModel在类ColorModel中 - 参数:
-
w- 描述图像数据区域的宽度(以像素为单位) -
h- 描述图像数据区域的高度(以像素为单位) - 返回:
-
新创建的
SampleModel。 - 抛出:
-
IllegalArgumentException- 如果w或h不大于0 - 参见:
-
isCompatibleSampleModel
检查指定的SampleModel是否与此ColorModel兼容。如果sm为null,此方法返回false。- 覆盖:
-
isCompatibleSampleModel在类ColorModel中 - 参数:
-
sm- 指定的SampleModel,或null - 返回:
-
如果指定的
SampleModel与此ColorModel兼容,则返回true;否则返回false。 - 参见:
-
getAlphaRaster
返回表示从输入WritableRaster中提取的图像的alpha通道的WritableRaster。此方法假定与此ColorModel关联的WritableRaster对象(如果存在)将alpha通道存储为图像数据的最后一个波段。如果没有单独的空间alpha通道与此ColorModel关联,则返回null。此方法创建一个新的WritableRaster,但共享数据数组。- 覆盖:
-
getAlphaRaster在类ColorModel中 - 参数:
-
raster- 包含图像的WritableRaster - 返回:
-
代表
raster中图像的alpha通道的WritableRaster。
-
equals
测试指定的Object是否是PackedColorModel的实例并等于此PackedColorModel。- 覆盖:
-
equals在类ColorModel中 - 参数:
-
obj- 要测试相等性的Object - 返回:
-
如果指定的
Object是PackedColorModel的实例并等于此PackedColorModel,则返回true;否则返回false。 - 参见:
-
hashCode
public int hashCode()返回此PackedColorModel的哈希码。- 覆盖:
-
hashCode在类ColorModel中 - 返回:
- 此PackedColorModel的哈希码。
- 参见:
-