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

Class IndexColorModel

    • 构造方法摘要

      构造方法  
      Constructor 描述
      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的非标准化(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归一化)的alpha分量,这意味着它们是完全不透明的,除了指示的像素被制成透明。 指定颜色分量的所有数组必须至少具有指定数量的条目。 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 - 表示alpha值是否包含在 cmap数组中
        异常
        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 - 表示alpha值是否包含在 cmap数组中
        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 - 表示alpha值是否包含在 cmap数组中
        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 - a BigInteger对象。 如果在BigInteger中设置了一个位,该索引处的像素是有效的。 如果未设置位,该索引处的像素被认为是无效的。 如果为空,则所有像素均为有效。 只考虑从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​()
        如果没有Alpha值为0的像素,则返回此 IndexColorModel中的透明像素的索引或-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:
        getGreenColorModel
        参数
        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
        重写:
        getComponentsColorModel
        参数
        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 - 要开始存储指定像素的颜色和alpha分量的 components数组中的索引
        结果
        一个数组,包含从指定的偏移开始的指定像素的颜色和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,它们将抛出异常。
        重写:
        getDataElement ColorModel
        参数
        components - 非规范化颜色和alpha组件的数组
        offset - 索引到 components ,开始检索颜色和alpha组件
        结果
        这个 int像素值在这个 ColorModel对应的指定组件。
        异常
        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位的任何子类必须覆盖此方法。

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

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

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

        public boolean isCompatibleSampleModel​(SampleModel sm)
        检查指定的SampleModel是否与此ColorModel兼容。 如果smnull ,此方法返回false
        重写:
        isCompatibleSampleModelColorModel
        参数
        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 每个索引值的源只有较低的nRaster ,在指定的class description以上,用于计算返回的图像中的颜色/α值。 如果forceARGBtrue ,则返回TYPE_INT_ARGB图像,无论此ColorModel是否具有Alpha组件数组或透明像素。
        参数
        raster - 指定的 Raster
        forceARGB - 如果是true ,返回的BufferedImage是TYPE_INT_ARGB; 否则为TYPE_INT_RGB
        结果
        一个 BufferedImage具有指定创建 Raster
        异常
        IllegalArgumentException - 如果栅格参数与此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 ,表示BigInteger中的有效/无效像素。 如果该索引处的BigInteger值被设置,则该位有效,如果该索引处的BigInteger值未设置,则该BigInteger无效。 BigInteger中查询的唯一有效范围是0和地图大小之间。
        结果
        一个表示有效/无效像素的 BigInteger
        从以下版本开始:
        1.3
      • finalize

        @Deprecated(since="9")
        public void finalize​()
        已过时。 finalize方法已被弃用。 为了执行清理,覆盖finalize子类应被修改为使用替代清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确地确保按照super.finalize()中所述调用super.finalize() 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
        一旦这个 ColorModel不再被引用, ColorModel与这个 ColorModel相关联的系统资源。
        重写:
        finalizeColorModel
        另请参见:
        WeakReferencePhantomReference
      • toString

        public String toString​()
        返回此 ColorModel对象的内容的 String表示。
        重写:
        toStringColorModel
        结果
        一个 String表示此内容 ColorModel对象。
      • equals

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