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

Class IndexColorModel

    • 构造方法摘要

      构造方法  
      构造器 描述
      IndexColorModel​(int bits, int size, byte[] r, byte[] g, byte[] b)
      根据指定的红色,绿色和蓝色组件数组构造 IndexColorModel
      IndexColorModel​(int bits, int size, byte[] r, byte[] g, byte[] b, byte[] a)
      根据给定的红色,绿色,蓝色和alpha分量数组构造 IndexColorModel
      IndexColorModel​(int bits, int size, byte[] r, byte[] g, byte[] b, int trans)
      从给定的红色,绿色和蓝色组件阵列构造 IndexColorModel
      IndexColorModel​(int bits, int size, byte[] cmap, int start, boolean hasalpha)
      从单个交错的红色,绿色,蓝色和可选alpha分量阵列构造 IndexColorModel
      IndexColorModel​(int bits, int size, byte[] cmap, int start, boolean hasalpha, int trans)
      从单个交错的红色,绿色,蓝色和可选alpha分量数组构造 IndexColorModel
      IndexColorModel​(int bits, int size, int[] cmap, int start, boolean hasalpha, int trans, int transferType)
      从一组int构造一个 IndexColorModel ,其中每个int由默认RGB颜色模型格式的红色,绿色,蓝色和可选alpha组件组成。
      IndexColorModel​(int bits, int size, int[] cmap, int start, int transferType, BigInteger validBits)
      int阵列构造 IndexColorModel ,其中每个 int由默认RGB颜色模型格式的红色,绿色,蓝色和alpha分量组成。
    • 构造方法详细信息

      • IndexColorModel

        public IndexColorModel​(int bits,
                               int size,
                               byte[] r,
                               byte[] g,
                               byte[] b)
        根据指定的红色,绿色和蓝色组件数组构造IndexColorModel 此颜色模型描述的像素都具有255非标准化的alpha分量(1.0标准化),这意味着它们是完全不透明的。 指定颜色组件的所有数组必须至少具有指定数量的条目。 ColorSpace是默认的sRGB空间。 由于此构造函数的任何参数中都没有alpha信息,因此透明度值始终为Transparency.OPAQUE 传输类型是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT中最小的,可以容纳单个像素。
        参数
        bits - 每个像素占用的位数
        size - 颜色分量数组的大小
        r - 红色组件的数组
        g - 绿色组件数组
        b - 蓝色组件数组
        异常
        IllegalArgumentException - 如果 bits小于1或大于16
        IllegalArgumentException - 如果 size小于1
      • IndexColorModel

        public IndexColorModel​(int bits,
                               int size,
                               byte[] r,
                               byte[] g,
                               byte[] b,
                               int trans)
        从给定的红色,绿色和蓝色组件阵列构造IndexColorModel 由该颜色模型描述的像素都具有255非标准化的α分量(1.0标准化),这意味着它们是完全不透明的,除了要使透明的指示像素。 指定颜色组件的所有数组必须至少具有指定数量的条目。 ColorSpace是默认的sRGB空间。 透明度值可以是Transparency.OPAQUETransparency.BITMASK具体取决于参数,如上面的class description中所述。 传输类型是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT中可以容纳单个像素的最小值。
        参数
        bits - 每个像素占用的位数
        size - 颜色分量数组的大小
        r - 红色组件的数组
        g - 绿色组件数组
        b - 蓝色组件数组
        trans - 透明像素的索引
        异常
        IllegalArgumentException - 如果 bits小于1或大于16
        IllegalArgumentException - 如果 size小于1
      • IndexColorModel

        public IndexColorModel​(int bits,
                               int size,
                               byte[] r,
                               byte[] g,
                               byte[] b,
                               byte[] a)
        从给定的红色,绿色,蓝色和alpha分量数组构造IndexColorModel 指定组件的所有数组必须至少具有指定数量的条目。 ColorSpace是默认的sRGB空间。 透明度值可以是任何的Transparency.OPAQUETransparency.BITMASK ,或Transparency.TRANSLUCENT取决于参数,如在指定class description上方。 传输类型是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT中可以容纳单个像素的最小值。
        参数
        bits - 每个像素占用的位数
        size - 颜色分量数组的大小
        r - 红色组件数组
        g - 绿色组件数组
        b - 蓝色组件的数组
        a - alpha值组件的数组
        异常
        IllegalArgumentException - 如果 bits小于1或大于16
        IllegalArgumentException - 如果 size小于1
      • IndexColorModel

        public IndexColorModel​(int bits,
                               int size,
                               byte[] cmap,
                               int start,
                               boolean hasalpha)
        从单个交错的红色,绿色,蓝色和可选alpha组件阵列构造IndexColorModel 该数组必须具有足够的值以填充指定大小的所有所需组件数组。 ColorSpace是默认的sRGB空间。 透明度值可以是任何的Transparency.OPAQUETransparency.BITMASK ,或Transparency.TRANSLUCENT取决于参数,如在指定class description上方。 传输类型是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT中可以容纳单个像素的最小值。
        参数
        bits - 每个像素占用的位数
        size - 颜色分量数组的大小
        cmap - 颜色分量数组
        start - 第一个颜色分量的起始偏移量
        hasalpha - 指示 cmap阵列中是否包含alpha值
        异常
        IllegalArgumentException - 如果 bits小于1或大于16
        IllegalArgumentException - 如果 size小于1
      • IndexColorModel

        public IndexColorModel​(int bits,
                               int size,
                               byte[] cmap,
                               int start,
                               boolean hasalpha,
                               int trans)
        从单个交错的红色,绿色,蓝色和可选alpha分量阵列构造IndexColorModel 指定的透明索引表示无论为其指定的任何alpha值,都完全透明的像素。 该数组必须具有足够的值以填充指定大小的所有所需组件数组。 ColorSpace是默认的sRGB空间。 透明度值可以是任何的Transparency.OPAQUETransparency.BITMASK ,或Transparency.TRANSLUCENT取决于参数,如在指定class description上方。 传输类型是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT中可以容纳单个像素的最小值。
        参数
        bits - 每个像素占用的位数
        size - 颜色分量数组的大小
        cmap - 颜色分量数组
        start - 第一个颜色分量的起始偏移量
        hasalpha - 指示 cmap阵列中是否包含alpha值
        trans - 完全透明像素的索引
        异常
        IllegalArgumentException - 如果 bits小于1或大于16
        IllegalArgumentException - 如果 size小于1
      • IndexColorModel

        public IndexColorModel​(int bits,
                               int size,
                               int[] cmap,
                               int start,
                               boolean hasalpha,
                               int trans,
                               int transferType)
        从一组int构造一个IndexColorModel ,其中每个int由默认RGB颜色模型格式的红色,绿色,蓝色和可选alpha组件组成。 指定的透明索引表示无论为其指定的任何alpha值,都完全透明的像素。 该数组必须具有足够的值以填充指定大小的所有所需组件数组。 ColorSpace是默认的sRGB空间。 透明度值可以是任何的Transparency.OPAQUETransparency.BITMASK ,或Transparency.TRANSLUCENT取决于参数,如在指定class description上方。
        参数
        bits - 每个像素占用的位数
        size - 颜色分量数组的大小
        cmap - 颜色分量数组
        start - 第一个颜色分量的起始偏移量
        hasalpha - 指示 cmap阵列中是否包含alpha值
        trans - 完全透明像素的索引
        transferType - 用于表示像素值的数组的数据类型。 数据类型必须为DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
        异常
        IllegalArgumentException - 如果 bits小于1或大于16
        IllegalArgumentException - 如果 size小于1
        IllegalArgumentException - 如果 transferType不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
      • IndexColorModel

        public IndexColorModel​(int bits,
                               int size,
                               int[] cmap,
                               int start,
                               int transferType,
                               BigInteger validBits)
        int阵列构造IndexColorModel ,其中每个int由默认RGB颜色模型格式的红色,绿色,蓝色和alpha分量组成。 该数组必须具有足够的值以填充指定大小的所有所需组件数组。 ColorSpace是默认的sRGB空间。 透明度值可以是任何的Transparency.OPAQUETransparency.BITMASK ,或Transparency.TRANSLUCENT取决于参数,如在指定class description上方。 传输类型必须是DataBuffer.TYPE_BYTE DataBuffer.TYPE_USHORT BigInteger对象指定cmap数组中的有效/无效像素。 如果设置了该索引处的BigInteger值,则该像素有效;如果未设置该索引处的BigInteger位,则该BigInteger无效。
        参数
        bits - 每个像素占用的位数
        size - 颜色分量数组的大小
        cmap - 颜色分量数组
        start - 第一个颜色分量的起始偏移量
        transferType - 指定的数据类型
        validBits - BigInteger对象。 如果在BigInteger中设置了一个位,则该索引处的像素有效。 如果未设置某个位,则该索引处的像素将被视为无效。 如果为null,则所有像素均有效。 仅考虑从0到地图大小的位。
        异常
        IllegalArgumentException - 如果 bits小于1或大于16
        IllegalArgumentException - 如果 size小于1
        IllegalArgumentException - 如果 transferType不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
        从以下版本开始:
        1.3
    • 方法详细信息

      • getComponentSize

        public int[] getComponentSize()
        返回每个颜色/ alpha分量的位数数组。 该数组包含红色,绿色,蓝色顺序的颜色分量,后跟alpha分量(如果存在)。
        重写:
        getComponentSizeColorModel
        结果
        包含此 IndexColorModel的每种颜色和alpha分量的 IndexColorModel
      • getMapSize

        public final int getMapSize()
        返回此 IndexColorModel颜色/ alpha分量数组的 IndexColorModel
        结果
        颜色和alpha组件数组的大小。
      • getTransparentPixel

        public final int getTransparentPixel()
        返回此 IndexColorModel透明像素的索引,如果没有alpha值为0的像素,则返回-1。如果在其中一个构造函数中通过其索引显式指定了透明像素,则该索引将是首选,否则,可以返回恰好完全透明的任何像素的索引。
        结果
        IndexColorModel对象中透明像素的索引,如果没有此类像素,则为-1
      • getReds

        public final void getReds​(byte[] r)
        将红色组件数组复制到指定的数组中。 仅写入由getMapSize指定的数组的初始条目。
        参数
        r - 复制红色组件数组元素的指定数组
      • getGreens

        public final void getGreens​(byte[] g)
        将绿色组件数组复制到指定的数组中。 仅写入由getMapSize指定的数组的初始条目。
        参数
        g - 复制绿色组件数组元素的指定数组
      • getBlues

        public final void getBlues​(byte[] b)
        将蓝色组件数组复制到指定的数组中。 仅写入由getMapSize指定的数组的初始条目。
        参数
        b - 复制蓝色组件数组元素的指定数组
      • getAlphas

        public final void getAlphas​(byte[] a)
        将Alpha透明度组件数组复制到指定的数组中。 仅写入由getMapSize指定的数组的初始条目。
        参数
        a - 复制了alpha组件数组元素的指定数组
      • getRGBs

        public final void getRGBs​(int[] rgb)
        将每个索引的数据从颜色和alpha组件数组转换为默认RGB ColorModel格式的int,并将生成的32位ARGB值复制到指定的数组中。 仅写入由getMapSize指定的数组的初始条目。
        参数
        rgb - 指定的数组,其中复制了此颜色和alpha分量数组中转换的ARGB值。
      • getRed

        public final int getRed​(int pixel)
        返回指定像素的红色分量,在默认RGB ColorSpace(sRGB)中从0到255缩放。 像素值指定为int。 只有像上面class description中指定的像素值的低n位用于计算返回值。 返回值是非预乘值。
        Specified by:
        getRedColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的红色分量的值
      • getGreen

        public final int getGreen​(int pixel)
        返回指定像素的绿色分量,在默认RGB ColorSpace(sRGB)中从0到255缩放。 像素值指定为int。 只有像上面class description中指定的像素值的低n位用于计算返回值。 返回值是非预乘值。
        Specified by:
        getGreen在类 ColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的绿色分量的值
      • getBlue

        public final int getBlue​(int pixel)
        返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255缩放。 像素值指定为int。 只有像上面class description中指定的像素值的低n位用于计算返回值。 返回值是非预乘值。
        Specified by:
        getBlueColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的蓝色分量的值
      • getAlpha

        public final int getAlpha​(int pixel)
        返回指定像素的alpha分量,从0到255缩放。像素值指定为int。 只有像上面class description中指定的像素值的低n位用于计算返回值。
        Specified by:
        getAlphaColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的alpha分量的值
      • getRGB

        public final int getRGB​(int pixel)
        以默认RGB颜色模型格式返回像素的颜色/ alpha分量。 像素值指定为int。 只有像上面class description中指定的像素值的低n位用于计算返回值。 返回的值采用非预乘格式。
        重写:
        getRGBColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的颜色和alpha分量
        另请参见:
        ColorModel.getRGBdefault()
      • getComponents

        public int[] getComponents​(int pixel,
                                   int[] components,
                                   int offset)
        返回此ColorModel指定像素的非标准化颜色/ alpha分量ColorModel 像素值指定为int。 如果components数组是null ,则分配一个包含offset + getNumComponents()元素的新数组。 返回components数组,仅当hasAlpha返回true时才包含alpha分量。 颜色/ alpha分量存储在components数组中,从offset开始,即使数组是通过此方法分配的。 一个ArrayIndexOutOfBoundsException如果抛出components数组不null并没有大到足以容纳所有开始在颜色和alpha分量offset
        重写:
        getComponents在课程 ColorModel
        参数
        pixel - 指定的像素
        components - 用于接收指定像素的颜色和alpha分量的数组
        offset - 进入 components数组的偏移量,开始存储颜色和alpha分量
        结果
        一个数组,包含从指定偏移量开始的指定像素的颜色和alpha分量。
        另请参见:
        ColorModel.hasAlpha()ColorModel.getNumComponents()
      • getComponents

        public int[] getComponents​(Object pixel,
                                   int[] components,
                                   int offset)
        返回此ColorModel指定像素的非标准化颜色/ alpha分量ColorModel 像素值由作为对象引用传入的类型为transferType的数据元素数组指定。 如果pixel不是类型为transferType的基本数组,则抛出ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出pixel不够大,不能保存这个像素值ColorModel 如果components数组是null ,则分配一个包含offset + getNumComponents()元素的新数组。 返回components数组,仅当hasAlpha返回true时才包含alpha分量。 颜色/ alpha分量存储在components数组中,从offset开始,即使数组是通过此方法分配的。 一个ArrayIndexOutOfBoundsException如果也抛出components数组不null并没有大到足以容纳所有开始在颜色和alpha分量offset

        由于IndexColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType ,则会抛出异常。

        重写:
        getComponentsColorModel
        参数
        pixel - 指定的像素
        components - 接收指定像素的颜色和alpha分量的数组
        offset - 进入 components数组的索引,开始存储指定像素的颜色和alpha分量
        结果
        一个数组,包含从指定偏移量开始的指定像素的颜色和alpha分量。
        异常
        ArrayIndexOutOfBoundsException - 如果 pixel不足以容纳此 ColorModel的像素值或者如果 components阵列不是 null并且不足以容纳从 offset开始的所有颜色和alpha分量
        ClassCastException - 如果 pixel不是类型为 transferType的基本数组
        UnsupportedOperationException - 如果 transferType不是受支持的传输类型之一
        另请参见:
        ColorModel.hasAlpha()ColorModel.getNumComponents()
      • getDataElement

        public int getDataElement​(int[] components,
                                  int offset)
        在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel表示为int的像素值。 一个ArrayIndexOutOfBoundsException如果抛出components阵列是不是大到足以容纳所有的颜色和alpha分量的开始offset 由于ColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType,则会抛出异常。
        重写:
        getDataElementColorModel
        参数
        components - 非标准化颜色和alpha分量的数组
        offset -索引为 components ,从此处开始检索颜色和alpha分量
        结果
        ColorModelint像素值对应于指定的组件。
        异常
        ArrayIndexOutOfBoundsException - 如果 components数组不足以容纳从 offset开始的所有颜色和alpha分量
        UnsupportedOperationException - 如果 transferType无效
      • getDataElements

        public Object getDataElements​(int[] components,
                                      int offset,
                                      Object pixel)
        在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel像素的数据元素数组表示。 然后可以将此数组传递给WritableRaster对象的setDataElements方法。 一个ArrayIndexOutOfBoundsException如果抛出components阵列是不是大到足以容纳所有的颜色和alpha分量的开始offset 如果像素变量为null ,则分配新数组。 如果pixel不是null ,则它必须是类型为transferType的基本数组; 否则,抛出ClassCastException 一个ArrayIndexOutOfBoundsException如果pixel不是特别大,不能保存此像素值抛出ColorModel

        由于IndexColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,那么如果它们使用不受支持的transferType它们会抛出异常

        重写:
        getDataElementsColorModel
        参数
        components - 非标准化颜色和alpha分量的数组
        offset -索引为 components在开始检索颜色和alpha分量
        pixel - Object表示颜色和alpha分量的数组
        结果
        Object表示颜色和alpha分量的数组。
        异常
        ClassCastException - 如果 pixel不是类型 transferType的原始数组
        ArrayIndexOutOfBoundsException - 如果 pixel不足以容纳此 ColorModel的像素值,或者 components数组不足以容纳从 offset开始的所有颜色和alpha分量
        UnsupportedOperationException - 如果 transferType不是受支持的传输类型之一
        另请参见:
        WritableRaster.setDataElements(int, int, java.lang.Object)SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
      • createCompatibleWritableRaster

        public WritableRaster createCompatibleWritableRaster​(int w,
                                                             int h)
        创建具有指定宽度和高度的WritableRaster ,其数据布局( SampleModel )与此ColorModel兼容。 此方法仅适用于每像素16位或更少位的颜色模型。

        由于IndexColorModel可以是子类,因此任何支持每像素大于16位的子类都必须覆盖此方法。

        重写:
        createCompatibleWritableRaster在类 ColorModel
        参数
        w - 要应用于新 WritableRaster的宽度
        h - 要应用于新 WritableRaster的高度
        结果
        具有指定宽度和高度的 WritableRaster对象。
        异常
        UnsupportedOperationException - 如果像素中的位数大于16
        另请参见:
        WritableRasterSampleModel
      • isCompatibleRaster

        public boolean isCompatibleRaster​(Raster raster)
        返回 true如果 raster与此兼容 ColorModelfalse如果不是与此兼容 ColorModel
        重写:
        isCompatibleRasterColorModel
        参数
        raster - 要测试兼容性的Raster对象
        结果
        true如果raster与此ColorModel兼容; 否则为false
      • createCompatibleSampleModel

        public SampleModel createCompatibleSampleModel​(int w,
                                                       int h)
        创建具有指定宽度和高度的 SampleModel ,其数据布局与此 ColorModel兼容。
        重写:
        createCompatibleSampleModel在类 ColorModel
        参数
        w - 要应用于新 SampleModel的宽度
        h - 要应用于新 SampleModel的高度
        结果
        具有指定宽度和高度的 SampleModel对象。
        异常
        IllegalArgumentException - 如果 wh不大于0
        另请参见:
        SampleModel
      • isCompatibleSampleModel

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

        public BufferedImage convertToIntDiscrete​(Raster raster,
                                                  boolean forceARGB)
        返回一个新BufferedImage TYPE_INT_ARGB或TYPE_INT_RGB的具有Raster通过展开源的索引来计算的与像素数据Raster使用此的颜色/ alpha分量数组ColorModel 只有源Raster中每个索引值的低n位(如上面的class description中所指定)用于计算返回图像中的颜色/ alpha值。 如果forceARGBtrue ,则返回TYPE_INT_ARGB图像,无论此ColorModel是否具有alpha分量数组或透明像素。
        参数
        raster - 指定的 Raster
        forceARGB - 如果是true ,则返回的BufferedImage是TYPE_INT_ARGB; 否则是TYPE_INT_RGB
        结果
        一个 BufferedImage带有指定创建 Raster
        异常
        IllegalArgumentException - 如果raster参数与此IndexColorModel不兼容
      • isValid

        public boolean isValid​(int pixel)
        返回像素是否有效。
        参数
        pixel - 指定的像素值
        结果
        true如果pixel有效; 否则为false
        从以下版本开始:
        1.3
      • isValid

        public boolean isValid()
        返回所有像素是否有效。
        结果
        true如果所有像素都有效; 否则为false
        从以下版本开始:
        1.3
      • getValidPixels

        public BigInteger getValidPixels()
        返回BigInteger ,指示colormap中的有效/无效像素。 如果设置了该索引处的BigInteger值,则该位有效;如果未设置该索引处的BigInteger值,则该BigInteger无效。 要在BigInteger中查询的唯一有效范围介于0和地图大小之间。
        结果
        a BigInteger指示有效/无效像素。
        从以下版本开始:
        1.3
      • finalize

        @Deprecated(since="9")
        public void finalize()
        Deprecated.
        The finalize method has been deprecated. Subclasses that override finalize in order to perform cleanup should be modified to use alternative cleanup mechanisms and to remove the overriding finalize method. When overriding the finalize method, its implementation must explicitly ensure that super.finalize() is invoked as described in Object.finalize(). See the specification for Object.finalize() for further information about migration options.
        一旦此 ColorModel不再被引用,则处置与此 ColorModel相关的系统资源。
        重写:
        finalizeColorModel
        另请参见:
        WeakReferencePhantomReference
      • toString

        public String toString()
        返回此 ColorModel对象的内容的 String表示形式。
        重写:
        toString在类 ColorModel
        结果
        String表示此 ColorModel对象的内容。
      • equals

        public boolean equals​(Object obj)
        如果指定的测试 Object是一个实例 IndexColorModel ,以及它是否该 IndexColorModel
        重写:
        equals ,类 ColorModel
        参数
        obj - 用于测试相等性的 Object
        结果
        true如果指定的Object于此IndexColorModel ; 否则为false
        另请参见:
        Object.hashCode()HashMap