Module java.desktop
Package java.awt.image

Class PackedColorModel

java.lang.Object
java.awt.image.ColorModel
java.awt.image.PackedColorModel
所有已实现的接口:
透明度
直接已知的子类:
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与使用掩码定义打包样本的图像数据一起使用。例如,PackedColorModel可以与SinglePixelPackedSampleModel结合使用以构造BufferedImage。通常,SampleModelColorModel使用的掩码将是相同的。但是,如果它们不同,则根据ColorModel的掩码执行像素数据的颜色解释。

由于始终可以将用于此类的像素值表示为单个int,因此此类的所有对象都有效。因此,使用此表示的方法不会因为无效的像素值而抛出IllegalArgumentException

PackedColorModel的子类是DirectColorModel,类似于X11 TrueColor视觉。

参见:
  • 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样本。如果booleantrue,则假定颜色样本已乘以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样本。如果booleantrue,则假定颜色样本已乘以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,则alpha index将是:
            alphaIndex = numComponents() - 1;
       
      参数:
      index - 指定的颜色或alpha样本
      返回:
      掩码,指示int像素表示中包含由index指定的颜色或alpha样本的位。
      抛出:
      ArrayIndexOutOfBoundsException - 如果index大于此PackedColorModel中的组件数减1,或者index小于零
    • getMasks

      public final int[] getMasks()
      返回一个掩码数组,指示像素中包含颜色和alpha样本的位。
      返回:
      掩码数组,指示int像素表示中包含颜色或alpha样本的位。
    • createCompatibleSampleModel

      public SampleModel createCompatibleSampleModel(int w, int h)
      创建一个具有与此ColorModel兼容的数据布局的SampleModel,其具有指定的宽度和高度。
      覆盖:
      createCompatibleSampleModel 在类 ColorModel
      参数:
      w - 描述图像数据区域的宽度(以像素为单位)
      h - 描述图像数据区域的高度(以像素为单位)
      返回:
      新创建的SampleModel
      抛出:
      IllegalArgumentException - 如果wh不大于0
      参见:
    • isCompatibleSampleModel

      public boolean isCompatibleSampleModel(SampleModel sm)
      检查指定的SampleModel是否与此ColorModel兼容。如果smnull,此方法返回false
      覆盖:
      isCompatibleSampleModel 在类 ColorModel
      参数:
      sm - 指定的SampleModel,或null
      返回:
      如果指定的SampleModel与此ColorModel兼容,则返回true;否则返回false
      参见:
    • getAlphaRaster

      public WritableRaster getAlphaRaster(WritableRaster raster)
      返回表示从输入WritableRaster中提取的图像的alpha通道的WritableRaster。此方法假定与此ColorModel关联的WritableRaster对象(如果存在)将alpha通道存储为图像数据的最后一个波段。如果没有单独的空间alpha通道与此ColorModel关联,则返回null。此方法创建一个新的WritableRaster,但共享数据数组。
      覆盖:
      getAlphaRaster 在类 ColorModel
      参数:
      raster - 包含图像的WritableRaster
      返回:
      代表raster中图像的alpha通道的WritableRaster
    • equals

      public boolean equals(Object obj)
      测试指定的Object是否是PackedColorModel的实例并等于此PackedColorModel
      覆盖:
      equals 在类 ColorModel
      参数:
      obj - 要测试相等性的Object
      返回:
      如果指定的ObjectPackedColorModel的实例并等于此PackedColorModel,则返回true;否则返回false
      参见:
    • hashCode

      public int hashCode()
      返回此PackedColorModel的哈希码。
      覆盖:
      hashCode 在类 ColorModel
      返回:
      此PackedColorModel的哈希码。
      参见: