Module  java.desktop
软件包  java.awt.image

Class 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 通常, SampleModelColorModel使用的掩码将是一样的。 然而,如果它们不同,则像素数据的颜色解释是根据ColorModel的掩码进行的。

    单个int像素表示对于此类的所有对象是有效的,因为总是可以在单个int表示与该类一起使用的像素值。 因此,由于无效的像素值,使用此表示的方法不会抛出IllegalArgumentException

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

    另请参见:
    DirectColorModelSinglePixelPackedSampleModelBufferedImage
    • 构造方法详细信息

      • 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样本。 如果booleantrue ,则假定颜色样本已被乘以α样本。 透明度, 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样本。 如果booleantrue ,则假定颜色样本已被乘以α样本。 透明度( 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,alpha index将是:
          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
        重写:
        createCompatibleSampleModelColorModel
        参数
        w - 描述的图像数据的区域的宽度(以像素为单位)
        h - 描述的图像数据的区域的高度(以像素为单位)
        结果
        新创 SampleModel
        异常
        IllegalArgumentException - 如果 wh不大于0
        另请参见:
        SampleModel
      • isCompatibleSampleModel

        public boolean isCompatibleSampleModel​(SampleModel sm)
        检查指定的SampleModel是否与此ColorModel兼容。 如果smnull ,此方法返回false
        重写:
        isCompatibleSampleModelColorModel
        参数
        sm - 指定的 SampleModelnull
        结果
        true如果指定的SampleModel与此兼容ColorModel ; 否则为false
        另请参见:
        SampleModel
      • getAlphaRaster

        public WritableRaster getAlphaRaster​(WritableRaster raster)
        返回WritableRaster表示图像的alpha通道,从输入中提取WritableRaster 该方法假定与该ColorModel相关联的WritableRaster对象存储α波段(如果存在)作为最后的图像数据带。 返回null ,如果有与此相关的独立空间alpha通道ColorModel 此方法创建一个新的WritableRaster ,但共享数据数组。
        重写:
        getAlphaRasterColorModel
        参数
        raster - 一个包含图像的 WritableRaster
        结果
        一个表示 WritableRaster中包含的图像的Alpha通道的 raster
      • equals

        public boolean equals​(Object obj)
        测试指定 Object是一个实例 PackedColorModel和等于这个 PackedColorModel
        重写:
        equalsColorModel
        参数
        obj - Object测试平等
        结果
        true如果指定Object是的一个实例PackedColorModel并且等于此PackedColorModel ; 否则为false
        另请参见:
        Object.hashCode()HashMap