Module java.desktop
Package java.awt.image

Class IndexColorModel

java.lang.Object
java.awt.image.ColorModel
java.awt.image.IndexColorModel
所有已实现的接口:
透明度

public class IndexColorModel extends ColorModel
IndexColorModel类是一个与像素值一起工作的ColorModel类,该像素值由单个样本组成,该样本是默认sRGB颜色空间中固定颜色映射表中的索引。颜色映射表指定了与每个索引对应的红色、绿色、蓝色和可选的alpha分量。所有分量在颜色映射表中都表示为8位无符号整数值。一些构造函数允许调用者通过指示在BigInteger对象中设置的位来指定颜色映射表中哪些颜色映射是有效的,哪些代表不可用的颜色。这种颜色模型类似于X11伪彩色视觉效果。

一些构造函数提供了一种方法,用于为颜色映射表中的每个像素指定一个alpha分量,而其他构造函数要么不提供这种方法,要么在某些情况下提供一个标志,指示颜色映射数据是否包含alpha值。如果构造函数没有提供alpha,则假定每个条目的alpha分量为不透明(alpha = 1.0)。可以提供一个可选的透明像素值,该值指示要使其完全透明的像素,而不考虑为该像素值提供或假定的任何alpha分量。请注意,IndexColorModel对象的颜色映射表中的颜色分量永远不会与alpha分量预先相乘。

IndexColorModel对象的透明度是通过检查颜色映射表中的颜色的alpha分量并在考虑可选的alpha值和指定的任何透明索引后选择最具体的值来确定的。如果颜色映射表中的所有有效颜色都是不透明的,并且没有有效的透明像素,则透明度值仅为Transparency.OPAQUE。如果颜色映射表中的所有有效颜色都是完全不透明的(alpha = 1.0)或完全透明的(alpha = 0.0),这通常发生在指定了有效的透明像素时,该值为Transparency.BITMASK。否则,该值为Transparency.TRANSLUCENT,表示某些有效颜色具有既非完全透明又非完全不透明的alpha分量(0.0 < alpha < 1.0)。

如果IndexColorModel对象的透明度值为Transparency.OPAQUE,则hasAlphagetNumComponents方法(都是从ColorModel继承的)分别返回false和3。对于任何其他透明度值,hasAlpha返回true,getNumComponents返回4。

用于索引颜色映射表的值取自像素表示的最低有效位n,其中n基于构造函数中指定的像素大小。对于小于8位的像素大小,n四舍五入为2的幂(3变为4,5、6、7变为8)。对于8到16位之间的像素大小,n等于像素大小。此类不支持大于16位的像素大小。像素表示中超出n的高阶位将被忽略。大于或等于映射大小但小于2n的索引值是未定义的,并且对所有颜色和alpha分量返回0。

对于那些使用transferType类型的原始数组像素表示的方法,数组长度始终为1。支持的传输类型为DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT。单个int像素表示对于此类的所有对象都是有效的,因为始终可以用单个int表示与此类一起使用的像素值。因此,使用此表示的方法不会因为无效的像素值而抛出IllegalArgumentException

此类中的许多方法都是final的。这样做的原因是底层的本机图形代码对这个类的布局和操作做出了假设,这些假设反映在这里标记为final的方法的实现中。您可以为其他原因对此类进行子类化,但不能覆盖或修改这些方法的行为。

参见:
  • Field Summary

    Fields declared in class java.awt.image.ColorModel

    pixel_bits, transferType

    Fields declared in interface java.awt.Transparency

    BITMASK, OPAQUE, TRANSLUCENT
  • Constructor Summary

    Constructors
    Constructor
    Description
    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分量组成。
  • Method Summary

    Modifier and Type
    Method
    Description
    convertToIntDiscrete(Raster raster, boolean forceARGB)
    返回一个新的BufferedImage,其类型为TYPE_INT_ARGB或TYPE_INT_RGB,其Raster使用此ColorModel的颜色/alpha分量数组扩展源Raster中的索引计算像素数据。
    createCompatibleSampleModel(int w, int h)
    创建一个具有指定宽度和高度的SampleModel,其数据布局与此ColorModel兼容。
    创建一个具有指定宽度和高度的WritableRaster,其数据布局(SampleModel)与此ColorModel兼容。
    boolean
    equals(Object obj)
    检查指定的Object是否是IndexColorModel的实例,并且是否等于此IndexColorModel
    final int
    getAlpha(int pixel)
    返回指定像素的alpha分量,从0到255进行缩放。
    final void
    getAlphas(byte[] a)
    将alpha透明度分量数组复制到指定的数组中。
    final int
    getBlue(int pixel)
    返回指定像素的蓝色分量,在默认RGB ColorSpace sRGB中从0到255进行缩放。
    final void
    getBlues(byte[] b)
    将蓝色分量数组复制到指定的数组中。
    int[]
    getComponents(int pixel, int[] components, int offset)
    返回此ColorModel中指定像素的未归一化颜色/alpha分量数组。
    int[]
    getComponents(Object pixel, int[] components, int offset)
    返回此ColorModel中指定像素的未归一化颜色/alpha分量数组。
    int[]
    返回每个颜色/alpha分量的位数数组。
    int
    getDataElement(int[] components, int offset)
    给定一组未归一化的颜色/alpha分量数组,返回此ColorModel中表示为int的像素值。
    getDataElements(int[] components, int offset, Object pixel)
    给定一组未归一化的颜色/alpha分量数组,返回此ColorModel中表示为数据元素数组的像素。
    getDataElements(int rgb, Object pixel)
    给定默认RGB颜色模型中的整数像素表示,返回此ColorModel中像素的数据元素数组表示。
    final int
    getGreen(int pixel)
    返回指定像素的绿色分量,在默认RGB ColorSpace sRGB中从0到255进行缩放。
    final void
    getGreens(byte[] g)
    将绿色分量数组复制到指定的数组中。
    final int
    返回此IndexColorModel中颜色/alpha分量数组的大小。
    final int
    getRed(int pixel)
    返回指定像素的红色分量,在默认RGB ColorSpace sRGB中从0到255进行缩放。
    final void
    getReds(byte[] r)
    将红色分量数组复制到指定的数组中。
    final int
    getRGB(int pixel)
    返回默认RGB颜色模型格式中像素的颜色/alpha分量。
    final void
    getRGBs(int[] rgb)
    将颜色和alpha分量数组中的每个索引的数据转换为默认RGB ColorModel格式中的int,并将生成的32位ARGB值复制到指定的数组中。
    int
    返回透明度。
    final int
    返回此IndexColorModel中透明像素的索引,如果没有alpha值为0的像素,则返回-1。
    返回指示颜色映射表中有效/无效像素的BigInteger
    int
    返回IndexColorModel的哈希码。
    boolean
    如果raster与此ColorModel兼容,则返回true,否则返回false
    boolean
    检查指定的SampleModel是否与此ColorModel兼容。
    boolean
    返回所有像素是否都有效。
    boolean
    isValid(int pixel)
    返回像素是否有效。
    返回此ColorModel对象内容的String表示形式。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • IndexColorModel

      public IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b)
      从指定的红色、绿色和蓝色分量数组构造一个IndexColorModel。由此颜色模型描述的像素都具有未归一化的alpha分量255(1.0标准化),这意味着它们是完全不透明的。指定颜色分量的所有数组必须至少具有指定数量的条目。颜色空间是默认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。由该颜色模型描述的像素的alpha分量都是未归一化的255(1.0归一化),这意味着它们是完全不透明的,除了要设置为透明的指定像素。所有指定颜色分量的数组必须至少具有指定数量的条目。 ColorSpace 是默认的sRGB空间。透明度值可以是Transparency.OPAQUETransparency.BITMASK,具体取决于参数,如上述类描述中所述。传输类型是可以容纳单个像素的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.BITMASKTransparency.TRANSLUCENT中的任意一个,具体取决于参数,如上述类描述中所述。传输类型是可以容纳单个像素的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.BITMASKTransparency.TRANSLUCENT中的任意一个,具体取决于参数,如上述类描述中所述。传输类型是可以容纳单个像素的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.BITMASKTransparency.TRANSLUCENT中的任意一个,具体取决于参数,如上述类描述中所述。传输类型是可以容纳单个像素的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)
      从一个包含红色、绿色、蓝色和可选alpha分量的int数组构造一个IndexColorModel,每个int都采用默认RGB颜色模型格式。指定的透明索引表示一个像素,无论为其指定的任何alpha值,都将完全透明。数组必须具有足够的值来填充指定大小的所有所需组件数组。 ColorSpace 是默认的sRGB空间。透明度值可以是Transparency.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT中的任意一个,具体取决于参数,如上述类描述中所述。
      参数:
      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都由红色、绿色、蓝色和alpha分量组成,采用默认的RGB颜色模型格式。数组必须具有足够的值来填充指定大小的所有所需组件数组。 ColorSpace 是默认的sRGB空间。透明度值可以是Transparency.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT中的任意一个,具体取决于参数,如上述类描述中所述。传输类型必须是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT之一。 BigInteger对象指定了cmap数组中的有效/无效像素。如果在该索引处的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
  • Method Details

    • getTransparency

      public int getTransparency()
      返回透明度。返回OPAQUE、BITMASK或TRANSLUCENT中的一个
      指定由:
      getTransparency 在接口 Transparency
      覆盖:
      getTransparency 在类 ColorModel
      返回:
      IndexColorModel的透明度
      参见:
    • getComponentSize

      public int[] getComponentSize()
      返回每个颜色/alpha组件的位数数组。数组按照红色、绿色、蓝色的顺序排列,然后是alpha组件(如果存在)。
      覆盖:
      getComponentSize 在类 ColorModel
      返回:
      包含此IndexColorModel的每个颜色和alpha组件的位数的数组
    • getMapSize

      public final int getMapSize()
      返回此IndexColorModel中颜色/alpha组件数组的大小。
      返回:
      颜色和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的0到255进行缩放。像素值以int形式指定。仅使用像素值的较低n位(如上述类描述中指定的)来计算返回值。返回值是非预乘值。
      指定由:
      getRed 在类 ColorModel
      参数:
      pixel - 指定的像素
      返回:
      指定像素的红色颜色组件的值
    • getGreen

      public final int getGreen(int pixel)
      返回指定像素的绿色颜色组件,从默认RGB ColorSpace的0到255进行缩放。像素值以int形式指定。仅使用像素值的较低n位(如上述类描述中指定的)来计算返回值。返回值是非预乘值。
      指定由:
      getGreen 在类 ColorModel
      参数:
      pixel - 指定的像素
      返回:
      指定像素的绿色颜色组件的值
    • getBlue

      public final int getBlue(int pixel)
      返回指定像素的蓝色颜色组件,从默认RGB ColorSpace的0到255进行缩放。像素值以int形式指定。仅使用像素值的较低n位(如上述类描述中指定的)来计算返回值。返回值是非预乘值。
      指定由:
      getBlue 在类 ColorModel
      参数:
      pixel - 指定的像素
      返回:
      指定像素的蓝色颜色组件的值
    • getAlpha

      public final int getAlpha(int pixel)
      返回指定像素的alpha组件,从0到255进行缩放。像素值以int形式指定。仅使用像素值的较低n位(如上述类描述中指定的)来计算返回值。
      指定由:
      getAlpha 在类 ColorModel
      参数:
      pixel - 指定的像素
      返回:
      指定像素的alpha组件的值
    • getRGB

      public final int getRGB(int pixel)
      返回默认RGB颜色模型格式中像素的颜色/alpha组件。像素值以int形式指定。仅使用像素值的较低n位(如上述类描述中指定的)来计算返回值。返回值是非预乘格式。
      覆盖:
      getRGB 在类 ColorModel
      参数:
      pixel - 默认RGB颜色模型中的整数像素表示
      返回:
      指定像素在此IndexColorModel中的数组表示
      参见:
    • getDataElements

      public Object getDataElements(int rgb, Object pixel)
      返回此ColorModel中像素的数据元素数组表示,给定默认RGB颜色模型中的整数像素表示。然后可以将此数组传递给WritableRaster对象的setDataElements方法。如果像素变量为null,则会分配一个新数组。如果pixel不为null,它必须是transferType类型的原始数组;否则,将抛出ClassCastException。如果pixel不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。返回像素数组。

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

      覆盖:
      getDataElements 在类 ColorModel
      参数:
      rgb - 默认RGB颜色模型中的整数像素表示
      pixel - 指定的像素
      返回:
      IndexColorModel中指定像素的数组表示
      抛出:
      ClassCastException - 如果pixel不是transferType类型的原始数组
      ArrayIndexOutOfBoundsException - 如果pixel不足以容纳此ColorModel的像素值
      UnsupportedOperationException - 如果transferType无效
      参见:
    • getComponents

      public int[] getComponents(int pixel, int[] components, int offset)
      返回此ColorModel中指定像素的未标准化颜色/alpha组件的数组。像素值以int形式指定。如果components数组为null,则会分配一个包含offset + getNumComponents()个元素的新数组。返回components数组,仅当hasAlpha返回true时才包括alpha组件。即使由此方法分配数组,颜色/alpha组件也会从offset开始存储在components数组中。如果components数组不为null且不足以容纳从offset开始的所有颜色和alpha组件,则会抛出ArrayIndexOutOfBoundsException异常。
      覆盖:
      getComponents 在类中 ColorModel
      参数:
      pixel - 指定的像素
      components - 用于接收指定像素的颜色和alpha组件的数组
      offset - 开始存储颜色和alpha组件的components数组中的偏移量
      返回:
      包含从指定偏移量开始的指定像素的颜色和alpha组件的数组。
      参见:
    • getComponents

      public int[] getComponents(Object pixel, int[] components, int offset)
      返回此ColorModel中指定像素的未标准化颜色/alpha组件的数组。像素值由作为对象引用传入的transferType类型的数据元素数组指定。如果pixel不是transferType类型的原始数组,则会抛出ClassCastException异常。如果pixel不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException异常。如果components数组为null,则会分配一个包含offset + getNumComponents()个元素的新数组。返回components数组,仅当hasAlpha返回true时才包括alpha组件。即使由此方法分配数组,颜色/alpha组件也会从offset开始存储在components数组中。如果components数组不足以容纳从offset开始的所有颜色和alpha组件,则还会抛出ArrayIndexOutOfBoundsException异常。

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

      覆盖:
      getComponents 在类中 ColorModel
      参数:
      pixel - 指定的像素
      components - 用于接收指定像素的颜色和alpha组件的数组
      offset - 开始存储指定像素的颜色和alpha组件的components数组中的索引
      返回:
      包含从指定偏移量开始的指定像素的颜色和alpha组件的数组。
      抛出:
      ArrayIndexOutOfBoundsException - 如果pixel不足以容纳此ColorModel的像素值,或者components数组不为null且不足以容纳从offset开始的所有颜色和alpha组件
      ClassCastException - 如果pixel不是transferType类型的原始数组
      UnsupportedOperationException - 如果transferType不是受支持的传输类型之一
      参见:
    • getDataElement

      public int getDataElement(int[] components, int offset)
      返回此ColorModel中以int形式表示的像素值,给定一个未标准化颜色/alpha组件的数组。如果components数组不足以容纳从offset开始的所有颜色和alpha组件,则会抛出ArrayIndexOutOfBoundsException异常。由于ColorModel可以被子类化,子类会继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      getDataElement 在类中 ColorModel
      参数:
      components - 未标准化颜色和alpha组件的数组
      offset - 开始检索颜色和alpha组件的components中的索引
      返回:
      在此ColorModel中对应于指定组件的int像素值。
      抛出:
      ArrayIndexOutOfBoundsException - 如果components数组不足以容纳从offset开始的所有颜色和alpha组件
      UnsupportedOperationException - 如果transferType无效
    • getDataElements

      public Object getDataElements(int[] components, int offset, Object pixel)
      返回此ColorModel中像素的数据元素数组表示,给定一个未标准化颜色/alpha组件的数组。然后可以将此数组传递给WritableRaster对象的setDataElements方法。如果components数组不足以容纳从offset开始的所有颜色和alpha组件,则会抛出ArrayIndexOutOfBoundsException异常。如果像素变量为null,则会分配一个新数组。如果pixel不为null,则它必须是transferType类型的原始数组;否则,会抛出ClassCastException异常。如果像素不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException异常。

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

      覆盖:
      getDataElements 在类中 ColorModel
      参数:
      components - 未标准化颜色和alpha组件的数组
      offset - 开始检索颜色和alpha组件的components中的索引
      pixel - 表示颜色和alpha组件数组的Object
      返回:
      表示颜色和alpha组件数组的Object
      抛出:
      ClassCastException - 如果pixel不是transferType类型的原始数组
      ArrayIndexOutOfBoundsException - 如果pixel不足以容纳此ColorModel的像素值,或者components数组不足以容纳从offset开始的所有颜色和alpha组件
      UnsupportedOperationException - 如果transferType不是受支持的传输类型之一
      参见:
    • createCompatibleWritableRaster

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

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

      覆盖:
      createCompatibleWritableRaster 在类中 ColorModel
      参数:
      w - 应用于新WritableRaster的宽度
      h - 应用于新WritableRaster的高度
      返回:
      具有指定宽度和高度的WritableRaster对象。
      抛出:
      UnsupportedOperationException - 如果每像素的位数大于16
      参见:
    • isCompatibleRaster

      public boolean isCompatibleRaster(Raster raster)
      如果raster与此ColorModel兼容,则返回true;如果不兼容,则返回false
      覆盖:
      isCompatibleRaster 在类 ColorModel
      参数:
      raster - 要测试兼容性的Raster对象
      返回:
      如果raster与此ColorModel兼容,则返回true;否则返回false
    • createCompatibleSampleModel

      public SampleModel createCompatibleSampleModel(int w, int h)
      创建一个具有指定宽度和高度的SampleModel,其数据布局与此ColorModel兼容。
      覆盖:
      createCompatibleSampleModel 在类 ColorModel
      参数:
      w - 要应用于新SampleModel的宽度
      h - 要应用于新SampleModel的高度
      返回:
      具有指定宽度和高度的SampleModel对象。
      抛出:
      IllegalArgumentException - 如果wh不大于0
      参见:
    • isCompatibleSampleModel

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

      public BufferedImage convertToIntDiscrete(Raster raster, boolean forceARGB)
      返回一个新的TYPE_INT_ARGB或TYPE_INT_RGB的BufferedImage,其Raster使用此ColorModel的颜色/alpha组件数组扩展源Raster中的索引来计算像素数据。仅使用源Raster中每个索引值的低n位(如上面的类描述中指定的)来计算返回图像中的颜色/alpha值。如果forceARGBtrue,则无论此ColorModel是否具有alpha组件数组或透明像素,都将返回TYPE_INT_ARGB图像。
      参数:
      raster - 指定的Raster
      forceARGB - 如果为true,返回的BufferedImage为TYPE_INT_ARGB;否则为TYPE_INT_RGB
      返回:
      使用指定Raster创建的BufferedImage
      抛出:
      IllegalArgumentException - 如果raster参数与此IndexColorModel不兼容
    • isValid

      public boolean isValid(int pixel)
      返回像素是否有效。
      参数:
      pixel - 指定的像素值
      返回:
      如果pixel有效,则返回true;否则返回false
      自:
      1.3
    • isValid

      public boolean isValid()
      返回所有像素是否有效。
      返回:
      如果所有像素有效,则返回true;否则返回false
      自:
      1.3
    • getValidPixels

      public BigInteger getValidPixels()
      返回一个BigInteger,指示颜色映射中的有效/无效像素。如果在BigInteger中的索引处设置了值,则该位有效,如果在BigInteger中的索引处未设置值,则该位无效。在BigInteger中查询的唯一有效范围是0到映射大小。
      返回:
      表示有效/无效像素的BigInteger
      自:
      1.3
    • toString

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

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

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