- java.lang.Object
-
- java.awt.image.ColorModel
-
- java.awt.image.PackedColorModel
-
- All Implemented Interfaces:
-
Transparency
- 已知直接子类:
-
DirectColorModel
public abstract class PackedColorModel extends ColorModel
PackedColorModel
类是一个抽象的ColorModel
类,它与像素值一起使用,它们将颜色和alpha信息表示为单独的样本,并将单个像素的所有样本包装为单个int,short或byte数量。 这个类可以随意使用ColorSpace
。 像素值中的颜色样本数必须与ColorSpace
中颜色分量的数量相同。 可以有一个单一的alpha样本。 对于使用transferType
类型的原始数组像素表示的方法,数组长度总是为1。 支持的传输类型是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT和DataBuffer.TYPE_INT。 颜色和alpha样本以位掩码表示的位存储在阵列的单个元素中。 每个位掩码必须是连续的,掩码不能重叠。 相同的掩码适用于其他方法使用的单个int像素表示。 面具和颜色/阿尔法样本的对应关系如下:- 掩码由0到
getNumComponents
-1之间的索引识别。 - 第一个
getNumColorComponents
指数是指颜色样本。 - 如果存在α样本,则它对应于最后一个索引。
- 颜色索引的顺序由
ColorSpace
指定。 通常,这反映了颜色空间类型的名称(例如,TYPE_RGB),索引0对应于红色,索引1为绿色,索引2为蓝色。
从显示或处理目的,从像素值到颜色/α分量的转换是样本与组件的一一对应关系。 A
PackedColorModel
通常用于使用掩模来定义打包样本的图像数据。 例如,一个PackedColorModel
可以与一个SinglePixelPackedSampleModel
结合使用来构建一个BufferedImage
。 通常,SampleModel
和ColorModel
使用的掩码将是一样的。 然而,如果它们不同,则像素数据的颜色解释是根据ColorModel
的掩码进行的。单个
int
像素表示对于此类的所有对象是有效的,因为总是可以在单个int
表示与该类一起使用的像素值。 因此,由于无效的像素值,使用此表示的方法不会抛出IllegalArgumentException
。PackedColorModel
的子类是DirectColorModel
,类似于X11 TrueColor视觉。
-
-
Field Summary
-
Fields inherited from class java.awt.image.ColorModel
pixel_bits, transferType
-
Fields inherited from interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT
-
-
构造方法摘要
构造方法 Constructor 描述 PackedColorModel(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,红,绿和蓝色样本。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 SampleModel
createCompatibleSampleModel(int w, int h)
创建SampleModel
具有指定的宽度和高度,具有与此兼容的数据布局ColorModel
。boolean
equals(Object obj)
测试指定Object
是一个实例PackedColorModel
和等于这个PackedColorModel
。WritableRaster
getAlphaRaster(WritableRaster raster)
返回一个WritableRaster
,表示从输入WritableRaster
提取的图像的Alpha通道。int
getMask(int index)
返回掩码,指示像素中的哪些位包含指定的颜色/ alpha样本。int[]
getMasks()
返回一个掩码数组,指示像素中的哪些位包含颜色和alpha样本。int
hashCode()
返回此PackedColorModel的哈希码。boolean
isCompatibleSampleModel(SampleModel sm)
检查指定的SampleModel
是否与此ColorModel
兼容。-
Methods inherited from class java.awt.image.ColorModel
coerceData, createCompatibleWritableRaster, finalize, 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
-
-
-
-
构造方法详细信息
-
PackedColorModel
public PackedColorModel(ColorSpace space, int bits, int[] colorMaskArray, int alphaMask, boolean isAlphaPremultiplied, int trans, int transferType)
从颜色掩码数组构造一个PackedColorModel
,它指定int
像素表示中的哪个位包含每个颜色样本和一个alpha掩码。 颜色分量在ColorSpace
。colorMaskArray
的长度应为colorMaskArray
中组件的ColorSpace
。 每个掩码中的所有位必须是连续的,并且适合int
像素表示的指定数目的最低有效位。 如果alphaMask
为0,则不存在alpha。 如果有alpha,boolean isAlphaPremultiplied
指定如何解释像素值中的颜色和alpha样本。 如果boolean
为true
,则假定颜色样本已被乘以α样本。 透明度,trans
,指定可以通过此颜色模型表示哪些alpha值。 传输类型是用于表示像素值的原始数组的类型。- 参数
-
space
- 指定的ColorSpace
-
bits
- 像素值中的位数 -
colorMaskArray
- 指定表示表示颜色分量的像素值的位的掩码的数组 -
alphaMask
- 指定表示表示α分量的像素值的位的掩码 -
isAlphaPremultiplied
-true
如果颜色样品被alpha样品预乘, 否则为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.TYPE_RGB。 每个掩码中的所有位必须是连续的,并且适合int
像素表示的指定数目的最低有效位。 如果amask
为0,则不存在alpha。 如果有alpha,则boolean isAlphaPremultiplied
指定如何在像素值中解释颜色和alpha样本。 如果boolean
为true
,则假定颜色样本已被乘以α样本。 透明度(trans
)指定了此颜色模型可以表示哪些alpha值。 传输类型是用于表示像素值的原始数组的类型。- 参数
-
space
- 指定的ColorSpace
-
bits
- 像素值中的位数 -
rmask
- 指定表示表示红色分量的像素值的位的掩码 -
gmask
- 指定表示表示绿色分量的像素值的位的掩码 -
bmask
- 指定表示表示蓝色分量的像素值的位的掩码 -
amask
- 指定表示表示α分量的像素值的位的掩码 -
isAlphaPremultiplied
-true
如果颜色样品被alpha样品预乘,false
否则 -
trans
- 指定可以由此颜色模型表示的alpha值 -
transferType
- 用于表示像素值的数组类型 - 异常
-
IllegalArgumentException
- 如果space
不是TYPE_RGB空间 - 另请参见:
-
ColorSpace
-
-
方法详细信息
-
getMask
public final int getMask(int index)
返回掩码,指示像素中的哪些位包含指定的颜色/ alpha样本。 对于颜色样本,index
对应于颜色空间中颜色样本名称的位置。 因此,对于CMYK ColorSpace,等于0的index
将对应于青色,等于1的index
对应于洋红色。 如果有alpha,alphaindex
将是:alphaIndex = numComponents() - 1;
- 参数
-
index
- 指定的颜色或alpha样本 - 结果
-
该掩码指示
int
像素表示的哪些位包含由index
指定的颜色或alpha样本。 - 异常
-
ArrayIndexOutOfBoundsException
- 如果index
大于此PackedColorModel
的组件数减1,或者如果index
小于零
-
getMasks
public final int[] getMasks()
返回一个掩码数组,指示像素中的哪些位包含颜色和alpha样本。- 结果
-
掩码阵列,其指示
int
像素表示的哪个位包含颜色或α样本。
-
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w, int h)
创建SampleModel
具有指定的宽度和高度,具有与此兼容的数据布局ColorModel
。- 重写:
-
createCompatibleSampleModel
在ColorModel
- 参数
-
w
- 描述的图像数据的区域的宽度(以像素为单位) -
h
- 描述的图像数据的区域的高度(以像素为单位) - 结果
-
新创
SampleModel
。 - 异常
-
IllegalArgumentException
- 如果w
或h
不大于0 - 另请参见:
-
SampleModel
-
isCompatibleSampleModel
public boolean isCompatibleSampleModel(SampleModel sm)
检查指定的SampleModel
是否与此ColorModel
兼容。 如果sm
为null
,此方法返回false
。- 重写:
-
isCompatibleSampleModel
在ColorModel
- 参数
-
sm
- 指定的SampleModel
或null
- 结果
-
true
如果指定的SampleModel
与此兼容ColorModel
; 否则为false
。 - 另请参见:
-
SampleModel
-
getAlphaRaster
public WritableRaster getAlphaRaster(WritableRaster raster)
返回WritableRaster
表示图像的alpha通道,从输入中提取WritableRaster
。 该方法假定与该ColorModel
相关联的WritableRaster
对象存储α波段(如果存在)作为最后的图像数据带。 返回null
,如果有与此相关的独立空间alpha通道ColorModel
。 此方法创建一个新的WritableRaster
,但共享数据数组。- 重写:
-
getAlphaRaster
在ColorModel
- 参数
-
raster
- 一个包含图像的WritableRaster
- 结果
-
一个表示
WritableRaster
中包含的图像的Alpha通道的raster
。
-
equals
public boolean equals(Object obj)
测试指定Object
是一个实例PackedColorModel
和等于这个PackedColorModel
。- 重写:
-
equals
在ColorModel
- 参数
-
obj
-Object
测试平等 - 结果
-
true
如果指定Object
是的一个实例PackedColorModel
并且等于此PackedColorModel
; 否则为false
。 - 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回此PackedColorModel的哈希码。- 重写:
-
hashCode
在ColorModel
- 结果
- 此PackedColorModel的哈希码。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-