模块  java.desktop
软件包  java.awt.image

Class 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通常与图像数据一起使用,该图像数据使用掩码来定义打包样本。 例如, 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应该是在部件的数量ColorSpace 每个掩码中的所有位必须是连续的并且适合于int像素表示的指定数量的最低有效位。 如果alphaMask为0,则没有alpha。 如果存在alpha,则boolean isAlphaPremultiplied指定如何解释像素值中的颜色和alpha样本。 如果booleantrue ,则假定颜色样本已乘以alpha样本。 透明度trans指定此颜色模型可以表示的alpha值。 传输类型是用于表示像素值的基本数组的类型。
        参数
        space - 指定的 ColorSpace
        bits - 像素值中的位数
        colorMaskArray - 指定表示代表颜色分量的像素值位的掩码的数组
        alphaMask - 指定表示代表alpha分量的像素值的位的掩码
        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,red,green和blue颜色样本。 颜色组件位于指定的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 - true如果颜色样本被alpha样本预乘; 否则为false
        trans - 指定可由此颜色模型表示的Alpha值
        transferType - 用于表示像素值的数组类型
        异常
        IllegalArgumentException - 如果 space不是TYPE_RGB空间
        另请参见:
        ColorSpace
    • 方法详细信息

      • 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)
        创建具有指定宽度和高度的 SampleModel ,其数据布局与此 ColorModel兼容。
        重写:
        createCompatibleSampleModel在类 ColorModel
        参数
        w - 所描述的图像数据的区域的宽度(以像素为单位)
        h - 所描述的图像数据的区域的高度(以像素为单位)
        结果
        新创建的 SampleModel
        异常
        IllegalArgumentException - 如果 wh不大于0
        另请参见:
        SampleModel
      • isCompatibleSampleModel

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

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

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