java.awt.image

接口
异常
java.lang.Object
  继承者 java.awt.image.ColorModel
      继承者 java.awt.image.PackedColorModel
所有已实现的接口:
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 像素表示形式。掩码和颜色/alpha 采样的对应关系如下:

  • 通过 0 到 getNumComponents - 1 的索引来标识各掩码。
  • getNumColorComponents 个索引指颜色采样。
  • 如果存在 alpha 采样,则对应于最后一个索引。
  • 颜色索引的顺序由 ColorSpace 所指定。此顺序通常反映颜色空间类型的名称(例如 TYPE_RGB),索引 0 对应于红色、索引 1 对应于绿色、索引 2 则对应于蓝色。

出于显示或处理目的而执行的像素值到颜色/alpha 分量的转换是采样到分量的一一对应关系。PackedColorModel 通常与使用掩码来定义已打包采样的图像数据一起使用。例如,可结合使用 PackedColorModelSinglePixelPackedSampleModel 来构造一个 BufferedImage。通常 SampleModel 所用的掩码与 ColorModel 使用的相同。但是如果它们不同,则根据 ColorModel 的掩码对像素数据进行颜色解释。

单个 int 的像素表示形式对于此类的所有对象都是有效的,因为总是能够以单个 int 表示此类使用的像素值。因此,使用此种表示形式的方法不会由于无效的像素值而抛出 IllegalArgumentException

PackedColorModel 的子类是 DirectColorModel,类似于 X11 TrueColor 可视化模型类型。

另请参见:
DirectColorModel, SinglePixelPackedSampleModel, BufferedImage

字段摘要
 
从类 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.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, hashCode, isAlphaPremultiplied, isCompatibleRaster, toString
 
从类 java.lang.Object 继承的方法
clone, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

PackedColorModel

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,则 booleanisAlphaPremultiplied 指定如何解释像素值中的颜色和 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.TYPE_RGB 类型。每个掩码中的所有位必须是连续的,并且能够放入指定 int 像素表示形式的最低有效位数中。如果 amask 是 0,则不存在 alpha。如果存在 alpha,则 booleanisAlphaPremultiplied 指定如何解释像素值中的颜色和 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
方法详细信息

getMask

public final int getMask(int index)
返回指示像素中哪些位包含指定颜色/alpha 采样的掩码。对于颜色采样, 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

getMasks

public final int[] getMasks()
返回指示像素中的哪些位包含颜色和 alpha 采样的掩码数组。

返回:
掩码数组,指示 int 像素表示形式中的哪些位包含颜色或 alpha 采样。

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
创建一个具有指定宽度和高度、数据布局与此 ColorModel 兼容的 SampleModel

覆盖:
ColorModel 中的 createCompatibleSampleModel
参数:
w - 所描述的图像数据区域的宽度(以像素为单位)
h - 所描述的图像数据区域的高度(以像素为单位)
返回:
新创建的 SampleModel
抛出:
IllegalArgumentException - 如果 wh 不大于 0
另请参见:
SampleModel

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)
检查指定的 SampleModel 是否与此 ColorModel 兼容。如果 smnull,则此方法返回 false

覆盖:
ColorModel 中的 isCompatibleSampleModel
参数:
sm - 指定的 SampleModel,或者为 null
返回:
如果指定的 SampleModel 与此 ColorModel 兼容,则返回 true;否则返回 false
另请参见:
SampleModel

getAlphaRaster

public WritableRaster getAlphaRaster(WritableRaster raster)
返回从输入 WritableRaster 提取,并且表示图像 alpha 通道的 WritableRaster。此方法假定与此 ColorModel 关联的 WritableRaster 对象将 alpha band(如果有)存储为图像数据的最后一个 band。如果没有与此 ColorModel 关联的、占据独立空间的 alpha 通道,则返回 null。此方法创建一个新的 WritableRaster,但是共享原来的数据数组。

覆盖:
ColorModel 中的 getAlphaRaster
参数:
raster - 包含图像的 WritableRaster
返回:
表示 raster 中所含图像 alpha 通道的 WritableRaster

equals

public boolean equals(Object obj)
测试指定的 Object 是否为 PackedColorModel 的一个实例并且等于此 PackedColorModel

覆盖:
ColorModel 中的 equals
参数:
obj - 要测试相等性的 Object
返回:
如果指定的 ObjectPackedColorModel 的一个实例并且等于此 PackedColorModel,则返回 true;否则返回 false
另请参见:
Object.hashCode(), Hashtable