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

Class ColorModel

  • All Implemented Interfaces:
    Transparency
    已知直接子类:
    ComponentColorModelIndexColorModelPackedColorModel


    public abstract class ColorModel
    extends Object
    implements Transparency
    ColorModel抽象类封装了将像素值转换为颜色分量(例如,红色,绿色和蓝色)和Alpha组件的方法。 为了将图像呈现到屏幕,打印机或其他图像,像素值必须转换为颜色和alpha组件。 作为这个类的方法的参数或返回值,像素被表示为32位int或者作为原始类型的数组。 ColorModel的颜色分量的数量,顺序和解释由其ColorSpace规定。 与不包含alpha信息的像素数据ColorModel使用的ColorModel将所有像素视为不透明,这是alpha值为1.0。

    这个ColorModel类支持像素值的两个表示。 像素值可以是单个32位int或一个原始数组。 Java(tm)Platform 1.0和1.1 API将像素表示为byte或单个int值。 为了ColorModel类的目的,像素值参数以int形式传递。 Java(tm)2 Platform API引入了用于表示图像的其他类。 使用BufferedImageRenderedImage对象,基于RasterSampleModel类,像素值可能无法方便地表示为单个int。 因此, ColorModel现在具有接受表示为原始类型数组的像素值的方法。 特定ColorModel对象使用的原始类型称为其传输类型。

    ColorModel与图像ColorModel使用的对象,当调用单个int像素参数的方法时,像素值不能方便地表示为单个int抛出IllegalArgumentException ColorModel子类必须指定发生这种情况的条件。 这不与DirectColorModelIndexColorModel对象发生。

    目前,Java 2D(tm)API支持的传输类型是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,DataBuffer.TYPE_INT,DataBuffer.TYPE_SHORT,DataBuffer.TYPE_FLOAT和DataBuffer.TYPE_DOUBLE。 当使用ColorModel和基于前三种类型的图像时,大多数渲染操作将执行得更快。 另外,对于ColorModel和基于后三种类型的图像,不支持某些图像过滤操作。 特定的ColorModel对象的传输类型在创建对象时被明确地或默认地被指定。 ColorModel所有子类必须指定可能的传输类型是什么,以及如何确定表示像素的基元数组中的元素数量。

    对于BufferedImages ,其转让类型为RasterRaster对象的SampleModel (可从这些类的getTransferType方法获得)必须与ColorModel匹配。 表示用于一个像素阵列中的元素的数量RasterSampleModel (可从getNumDataElements这些类的方法)必须匹配的ColorModel

    用于将像素值转换为颜色和α分量的算法因子类而异。 例如,从BufferedImage对象的Raster和颜色/α分量的Raster获得的样本之间SampleModelBufferedImage的。 即使存在这样的对应关系,样本中的比特数也不一定与相应颜色/α分量中的比特数相同。 每个子类必须指定如何从像素值到颜色/ alpha分量的转换。

    ColorModel类中的方法使用颜色和α分量的两种不同表示 - 标准化形式和非规范化形式。 在标准化形式中,每个组件是一些最小值和最大值之间的一个float值。 对于alpha组件,最小值为0.0,最大值为1.0。 对于颜色分量,可以从ColorSpace对象获取每个组件的最小值和最大值。 这些值通常为0.0和1.0(例如,默认sRGB颜色空间范围为0.0到1.0的标准化组件值),但某些颜色空间具有不同上限和下限的组件值。 这些限制可以使用ColorSpace类的getMinValuegetMaxValue方法获得。 归一化颜色分量值不是预乘。 所有ColorModels必须支持标准化形式。

    在非归一化形式中,每个分量是0和2 n -1之间的无符号积分值,其中n是特定分量的有效位数。 如果特定的ColorModel像素值表示由α样本ColorModel颜色样本,则非标准化颜色分量值也被预乘。 非规范化形式仅用于ColorModel的实例,其ColorSpace对于所有组件的最小组件值为0.0,对于所有组件的最大值为1.0。 颜色和alpha分量的非标准化形式可以为ColorModels的方便表示,其标准化分量值都在0.0和1.0之间。 在这种情况下,积分值0映射到0.0,值2 n -1映射到1.0。 在其他情况下,例如当归一化分量值可以是负数或正数时,非正规化形式是不方便的。 当调用涉及非规范化参数的方法时,这样的ColorModel对象会抛出一个IllegalArgumentException ColorModel子类必须指定出现这种情况的条件。

    另请参见:
    IndexColorModelComponentColorModelPackedColorModelDirectColorModelImageBufferedImageRenderedImageColorSpaceSampleModelRasterDataBuffer
    • 构造方法摘要

      构造方法  
      Modifier Constructor 描述
        ColorModel​(int bits)
      构造一个 ColorModel ,它将指定位数的像素转换为颜色/ alpha分量。
      protected ColorModel​(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
      构造一个将像素值转换为颜色/ alpha分量的 ColorModel
    • 方法摘要

      所有方法  静态方法  接口方法  抽象方法  具体的方法  弃用的方法 
      Modifier and Type 方法 描述
      ColorModel coerceData​(WritableRaster raster, boolean isAlphaPremultiplied)
      强制光栅数据与 isAlphaPremultiplied变量中指定的状态相匹配,假设目前 ColorModel正确描述了数据。
      SampleModel createCompatibleSampleModel​(int w, int h)
      创建 SampleModel具有指定的宽度和高度,具有与此兼容的数据布局 ColorModel
      WritableRaster createCompatibleWritableRaster​(int w, int h)
      创建 WritableRaster具有指定的宽度和高度,其具有的数据布局( SampleModel )与此兼容 ColorModel
      boolean equals​(Object obj)
      该方法简单地委托给 Object的默认实现,这与 ==测试相同,因为该类不能在多个独立子类分支之间强制执行适当的等式测试的问题。
      void finalize​()
      已过时。
      finalize方法已被弃用。 为了执行清理而覆盖finalize子类应该修改为使用替代清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
      abstract int getAlpha​(int pixel)
      返回指定像素的alpha分量,从0到255。
      int getAlpha​(Object inData)
      返回指定像素的alpha分量,从0到255。
      WritableRaster getAlphaRaster​(WritableRaster raster)
      返回 Raster表示图像的alpha通道,从输入中提取 Raster ,提供此的像素值 ColorModel表示颜色和alpha信息为独立的空间频带(例如
      abstract int getBlue​(int pixel)
      返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255。
      int getBlue​(Object inData)
      返回指定像素的蓝色分量,在默认RGB ColorSpace (sRGB)中从0到255。
      ColorSpace getColorSpace​()
      返回 ColorSpace与此 ColorModel相关联。
      int[] getComponents​(int pixel, int[] components, int offset)
      在这个 ColorModel给出了一个像素的非归一化颜色/ alpha分量的数组。
      int[] getComponents​(Object pixel, int[] components, int offset)
      在这个 ColorModel给出一个像素,返回一个非标准化的颜色/ alpha分量的数组。
      int[] getComponentSize​()
      返回每个颜色/ alpha分量的位数的数组。
      int getComponentSize​(int componentIdx)
      返回指定颜色/ alpha分量的位数。
      int getDataElement​(float[] normComponents, int normOffset)
      返回表示为一个像素值 int在此 ColorModel ,给定的归一化的颜色/ alpha分量的阵列。
      int getDataElement​(int[] components, int offset)
      返回表示为一个像素值 int在此 ColorModel ,给定非标准化颜色/ alpha分量的阵列。
      Object getDataElements​(float[] normComponents, int normOffset, Object obj)
      给出这个 ColorModel的一个像素的数据元素数组表示,给出了一组归一化的颜色/ alpha分量。
      Object getDataElements​(int[] components, int offset, Object obj)
      给出这个 ColorModel的一个像素的数据元素数组表示,给出了一个非标准化颜色/ alpha分量的数组。
      Object getDataElements​(int rgb, Object pixel)
      返回此 ColorModel中的像素的数据元素数组表示,给出了默认RGB颜色模型中的整数像素表示。
      abstract int getGreen​(int pixel)
      返回指定像素的绿色分量,在默认RGB ColorSpace sRGB中从0到255。
      int getGreen​(Object inData)
      返回指定像素的绿色分量,在默认RGB ColorSpace sRGB中从0到255。
      float[] getNormalizedComponents​(int[] components, int offset, float[] normComponents, int normOffset)
      给定一个非规范化的组件数组,以归一化形式返回所有颜色/ alpha分量的数组。
      float[] getNormalizedComponents​(Object pixel, float[] normComponents, int normOffset)
      给出这个 ColorModel一个像素,以归一化形式返回所有颜色/ alpha分量的 ColorModel
      int getNumColorComponents​()
      返回此 ColorModel的颜色分量数。
      int getNumComponents​()
      返回此 ColorModel的组件数,包括alpha。
      int getPixelSize​()
      返回此 ColorModel描述的每像素的 ColorModel
      abstract int getRed​(int pixel)
      返回指定像素的红色分量,在默认RGB ColorSpace sRGB中从0到255。
      int getRed​(Object inData)
      返回指定像素的红色分量,从默认RGB ColorSpace (sRGB)中的0到255。
      int getRGB​(int pixel)
      以默认RGB颜色模型格式返回像素的颜色/ alpha分量。
      int getRGB​(Object inData)
      以默认RGB颜色模型格式返回指定像素的颜色/ alpha分量。
      static ColorModel getRGBdefault​()
      返回一个 DirectColorModel ,它描述了AWT图像接口中许多方法中使用的整数RGB值的默认格式,以方便程序员。
      int getTransferType​()
      返回此 ColorModel的传输类型。
      int getTransparency​()
      返回透明度。
      int[] getUnnormalizedComponents​(float[] normComponents, int normOffset, int[] components, int offset)
      给定一个归一化的组件数组,以非规范化形式返回所有颜色/ alpha分量的数组。
      boolean hasAlpha​()
      返回此 ColorModel中是否支持 ColorModel
      int hashCode​()
      该方法简单地委派到 Object的默认实现,它返回该类的系统ID。
      boolean isAlphaPremultiplied​()
      返回是否在此 ColorModel要翻译的像素值中预先使用 ColorModel
      boolean isCompatibleRaster​(Raster raster)
      如果 rasterColorModelfalse兼容,则返回 true
      boolean isCompatibleSampleModel​(SampleModel sm)
      检查 SampleModel是否与此 ColorModel兼容。
      String toString​()
      返回 ColorModel对象的内容的 String表示。
    • 字段详细信息

      • pixel_bits

        protected int pixel_bits
        像素中的总位数。
      • transferType

        protected int transferType
        用于表示像素值的数组的数据类型。
    • 构造方法详细信息

      • ColorModel

        public ColorModel​(int bits)
        构造一个ColorModel ,它将指定位数的像素转换为彩色/ alpha分量。 颜色空间是默认的RGB ColorSpace ,这是sRGB。 假设像素值包括alpha信息。 如果在像素值中将颜色和α信息表示为单独的空间频带,则假定色带不与α值预乘。 透明度类型是java.awt.Transparency.TRANSLUCENT。 传输类型将是可容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的数据(如果位大于32,则为DataBuffer.TYPE_UNDEFINED)。 由于该构造函数没有关于每个颜色和alpha组件的位数的信息,所以调用此构造函数的任何子类都应该覆盖任何需要此信息的方法。
        参数
        bits - 像素的位数
        异常
        IllegalArgumentException -如果在比特数 bits小于1
      • ColorModel

        protected ColorModel​(int pixel_bits,
                             int[] bits,
                             ColorSpace cspace,
                             boolean hasAlpha,
                             boolean isAlphaPremultiplied,
                             int transparency,
                             int transferType)
        构造一个将像素值转换为颜色/ alpha组件的ColorModel 颜色组件将在指定的ColorSpace pixel_bits是像素值中的位数。 位数组指定每个颜色和alpha分量的有效位数。 它的长度应该是ColorSpace的组件的数量,如果像素值中没有alpha信息,或者如果有alpha信息,则该数目多于此数字。 hasAlpha表示是否存在α信息。 boolean isAlphaPremultiplied指定如何解释将颜色和阿尔法信息表示为单独的空间带的像素值。 如果booleantrue ,假设颜色样本已被乘以α样本。 transparency指定此颜色模型可以表示哪些Alpha值。 传输类型是用于表示像素值的原始数组的类型。 请注意,位数组包含从像素值转换后每个颜色/ alpha分量的有效位数。 例如,对于一个IndexColorModelpixel_bits等于16,这些比特阵列可能具有与设置为8的每个元素四个元件。
        参数
        pixel_bits - 像素值中的位数
        bits - 指定每个颜色和alpha分量的有效位数的数组
        cspace - 指定的 ColorSpace
        如果存在alpha信息,则为hasAlpha - true ; false否则
        isAlphaPremultiplied - true如果假设颜色样本被alpha样本预乘, 否则为false
        transparency - 这个颜色模型可以表示哪些alpha值
        transferType - 用于表示像素值的数组的类型
        异常
        IllegalArgumentException - 如果位数组的长度小于此 ColorModel的颜色或alpha分量的 ColorModel ,或者透明度不是有效值。
        IllegalArgumentException -如果在比特数的总和 bits小于1,或者如果在任何元件的 bits小于0。
        另请参见:
        Transparency
    • 方法详细信息

      • getRGBdefault

        public static ColorModel getRGBdefault​()
        返回一个DirectColorModel ,它描述了AWT图像接口中许多方法中使用的整数RGB值的默认格式,以方便程序员。 色彩空间是默认的ColorSpace ,sRGB。 RGB值的格式是一个整数,8位,每个alpha,红色,绿色和蓝色颜色分量从最高有效字节到最低有效字节排序,如:0xAARRGGBB。 颜色分量不被alpha分量预乘。 该格式不一定代表特定设备或所有图像的本机或最高效的ColorModel 它仅用作常见的颜色模型格式。
        结果
        描述默认RGB值的 DirectColorModel对象。
      • hasAlpha

        public final boolean hasAlpha​()
        返回此 ColorModel中是否支持alpha。
        结果
        true如果alpha支持ColorModel ; false否则。
      • isAlphaPremultiplied

        public final boolean isAlphaPremultiplied​()
        返回Alpha ColorModel要翻译的像素值中是否已ColorModel 如果布尔值为true ,则该ColorModel将用于解释其中颜色和阿尔法信息被表示为单独的空间带的像素值,并且假定颜色样本已被乘以α样本。
        结果
        true如果alpha值ColorModel要翻译的像素值; 否则为false
      • getTransferType

        public final int getTransferType​()
        返回此ColorModel的传输类型。 传输类型是用于将像素值表示为数组的原始数组的类型。
        结果
        转移类型。
        从以下版本开始:
        1.3
      • getPixelSize

        public int getPixelSize​()
        返回此 ColorModel描述的每像素的 ColorModel
        结果
        每像素的位数。
      • getComponentSize

        public int getComponentSize​(int componentIdx)
        返回指定颜色/ alpha分量的位数。 颜色组件按ColorSpace指定的顺序索引。 通常,此顺序反映了颜色空间类型的名称。 例如,对于TYPE_RGB,索引0对应于红色,索引1为绿色,索引2为蓝色。 如果这个ColorModel支持alpha,则alpha组件对应于最后一个颜色分量之后的索引。
        参数
        componentIdx - 颜色/ alpha分量的索引
        结果
        指定索引处的颜色/ alpha分量的位数。
        异常
        ArrayIndexOutOfBoundsException - 如果 componentIdx大于组件数或小于零
        NullPointerException - 如果位数为 null
      • getComponentSize

        public int[] getComponentSize​()
        返回每个颜色/ alpha分量的位数的数组。 该数组包含由ColorSpace指定的顺序的颜色分量,其后是alpha组件(如果存在)。
        结果
        每个颜色/ alpha分量的位数的数组
      • getNumComponents

        public int getNumComponents​()
        返回此ColorModel的组件数,包括alpha。 这等于颜色分量的数量,可选加一个,如果有一个alpha分量。
        结果
        该组件的数量在这 ColorModel
      • getRed

        public abstract int getRed​(int pixel)
        返回指定像素的红色分量,在默认RGB ColorSpace sRGB中从0到255。 必要时进行颜色转换。 像素值被指定为int。 一个IllegalArgumentException如果这个像素值抛出ColorModel不便于表示为一个单个int。 返回的值不是预乘积值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,则红色值为0。
        参数
        pixel - 指定像素
        结果
        指定像素的红色分量的值。
      • getGreen

        public abstract int getGreen​(int pixel)
        返回指定像素的绿色分量,在默认RGB ColorSpace sRGB中从0到255。 必要时进行颜色转换。 像素值被指定为int。 如果这个ColorModel像素值不方便地表示为单个int,则抛出一个IllegalArgumentException 返回的值是非预先乘以的值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,则绿色值为0。
        参数
        pixel - 指定的像素
        结果
        指定像素的绿色分量的值。
      • getBlue

        public abstract int getBlue​(int pixel)
        返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255。 必要时进行颜色转换。 像素值被指定为int。 一个IllegalArgumentException如果这个像素值抛出ColorModel不便于表示为一个单个int。 返回的值是一个非预先乘法的值,例如,如果alpha被预乘,则该方法在返回该值之前将其除数。 如果alpha值为0,则蓝色值为0。
        参数
        pixel - 指定的像素
        结果
        指定像素的蓝色分量的值。
      • getAlpha

        public abstract int getAlpha​(int pixel)
        返回指定像素的alpha分量,从0到255。像素值被指定为int。 一个IllegalArgumentException如果这个像素值抛出ColorModel不便于表示为一个单个int。
        参数
        pixel - 指定的像素
        结果
        指定像素的alpha分量的值。
      • getRGB

        public int getRGB​(int pixel)
        以默认RGB颜色模型格式返回像素的颜色/ alpha分量。 必要时进行颜色转换。 像素值被指定为int。 一个IllegalArgumentException抛出,如果这个像素值ColorModel不便于表示为一个单个int。 返回的值为非预先乘法格式。 例如,如果alpha被预乘,则该方法将其从颜色分量中分离出来。 如果alpha值为0,则颜色值为0。
        参数
        pixel - 指定的像素
        结果
        指定像素的颜色/ alpha分量的RGB值。
        另请参见:
        getRGBdefault()
      • getRed

        public int getRed​(Object inData)
        返回指定像素的红色分量,在默认RGB ColorSpace (sRGB)中从0到255。 必要时进行颜色转换。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 返回的值是非预先乘以的值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,则红色值为0.如果inData不是transferType类型的原始数组,则抛出ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 如果transferType不支持,一个UnsupportedOperationException将被抛出。 由于ColorModel是抽象类,任何实例必须是子类的实例。 子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType比其他DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或DataBuffer.TYPE_INT
        参数
        inData - 像素值数组
        结果
        指定像素的红色分量的值。
        异常
        ClassCastException -如果 inData不是类型的基本数组 transferType
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能保持这个 ColorModel的像素值
        UnsupportedOperationException - 如果这 transferType不支持此 ColorModel
      • getGreen

        public int getGreen​(Object inData)
        返回指定像素的绿色分量,在默认RGB ColorSpace (sRGB)中从0到255。 必要时进行颜色转换。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 返回的值将是非预倍增值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,则绿色值为0.如果inData不是transferType类型的原始数组,则抛出一个ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 如果不支持这个transferType ,将抛出一个UnsupportedOperationException 由于ColorModel是一个抽象类,任何实例都必须是一个子类的实例。 子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType比其他DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或DataBuffer.TYPE_INT
        参数
        inData - 像素值数组
        结果
        指定像素的绿色分量的值。
        异常
        ClassCastException -如果 inData不是类型的基本数组 transferType
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能保持这个 ColorModel的像素值
        UnsupportedOperationException - 如果这个 transferType不支持这个 ColorModel
      • getBlue

        public int getBlue​(Object inData)
        返回指定像素的蓝色分量,在默认RGB ColorSpace (sRGB)中从0到255。 必要时进行颜色转换。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 返回的值是非预先乘以的值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,蓝色值将为0.如果inData不是transferType类型的原始数组,则抛出一个ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 如果transferType不支持,一个UnsupportedOperationException将被抛出。 由于ColorModel是一个抽象类,任何实例都必须是一个子类的实例。 子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType比其他DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或DataBuffer.TYPE_INT
        参数
        inData - 像素值数组
        结果
        指定像素的蓝色分量的值。
        异常
        ClassCastException -如果 inData不是类型的基本数组 transferType
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能保持这个 ColorModel的像素值
        UnsupportedOperationException - 如果这个 transferType不支持此 ColorModel
      • getAlpha

        public int getAlpha​(Object inData)
        返回指定像素的alpha分量,从0到255。像素值由传入类型transferType的数据元素数组指定为对象引用。 如果inData不是transferType类型的原始数组,则抛出一个ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 如果transferType不支持,一个UnsupportedOperationException将被抛出。 由于ColorModel是一个抽象类,任何实例都必须是一个子类的实例。 子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType比其他DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或DataBuffer.TYPE_INT
        参数
        inData - 指定的像素
        结果
        指定像素的alpha分量,从0到255。
        异常
        ClassCastException -如果 inData不是类型的基本数组 transferType
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能保持这个 ColorModel的像素值
        UnsupportedOperationException - 如果这个 tranferType不支持这个 ColorModel
      • getRGB

        public int getRGB​(Object inData)
        以默认RGB颜色模型格式返回指定像素的颜色/ alpha分量。 必要时进行颜色转换。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 如果inData不是transferType类型的原始数组,则抛出一个ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 返回的值将是非预先乘法的格式,即如果alpha被预乘,则该方法将其除以颜色分量(如果alpha值为0,则颜色值将为0)。
        参数
        inData - 指定的像素
        结果
        指定像素的颜色和alpha分量。
        另请参见:
        getRGBdefault()
      • getComponents

        public int[] getComponents​(int pixel,
                                   int[] components,
                                   int offset)
        在这个ColorModel给出了一个像素的非规范化颜色/ alpha分量的数组。 像素值被指定为int 一个IllegalArgumentException如果此像素值将被抛出ColorModel不便于表示为一个单一int或如果此颜色分量值ColorModel不在非标准化形式表示的方便。 例如,该方法可用于检索DirectColorModel特定像素值的DirectColorModel 如果组件数组为null ,则会分配一个新数组。 将返回组件数组。 颜色/ Alpha组件存储在从offset开始的组件数组中(即使数组是通过此方法分配的)。 如果组件数组不是null并且不够大,不能容纳所有颜色和alpha组件(从偏移开始),则抛出一个ArrayIndexOutOfBoundsException 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        pixel - 指定的像素
        components - 接收指定像素的颜色和alpha分量的数组
        offset - components阵列中的开始存储颜色和alpha组件的偏移量
        结果
        一个数组,包含从指定的偏移开始的指定像素的颜色和alpha分量。
        异常
        UnsupportedOperationException - 如果此方法不支持此 ColorModel
      • getComponents

        public int[] getComponents​(Object pixel,
                                   int[] components,
                                   int offset)
        在这个ColorModel给出一个像素的非规范化颜色/ alpha分量的数组。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 如果pixel不是transferType类型的原始数组,则抛出一个ClassCastException 如果这个ColorModel颜色分量值不能以非规范化形式方便地表示, IllegalArgumentException将抛出一个IllegalArgumentException 一个ArrayIndexOutOfBoundsException如果抛出pixel不够大,不能保存这个像素值ColorModel 该方法可用于检索任何ColorModel特定像素值的ColorModel 如果组件数组是null ,将分配一个新的数组。 将返回组件数组。 颜色/ alpha分量存储中components数组以offset (即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException如果components数组是不被抛出null ,不足够大以容纳所有的颜色和alpha分量(开始于offset )。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法,因为该抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        pixel - 指定的像素
        components - 接收指定像素的颜色和alpha分量的数组
        offset - 索引到 components阵列中,开始存储指定像素的颜色和alpha分量
        结果
        一个数组,包含从指定的偏移开始的指定像素的颜色和alpha分量。
        异常
        UnsupportedOperationException - 如果此方法不支持此 ColorModel
      • getUnnormalizedComponents

        public int[] getUnnormalizedComponents​(float[] normComponents,
                                               int normOffset,
                                               int[] components,
                                               int offset)
        给定一个归一化的组件数组,以非规范化形式返回所有颜色/ alpha分量的数组。 非正则化分量是0和2 n -1之间的无符号积分值,其中n是特定分量的位数。 正规化成分是每分量最小和最大由指定之间的浮点值ColorSpace对象此ColorModel 如果该ColorModel颜色分量值不能以非规范化形式方便地表示, IllegalArgumentException将抛出ColorModel 如果components数组为null ,则将分配一个新数组。 将返回components数组。 颜色/ alpha分量存储中components数组以offset (即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException ,如果被抛出components数组不null ,不足够大以容纳所有的颜色和alpha分量(开始于offset )。 一个IllegalArgumentException如果抛出normComponents阵列是不是大到足以容纳所有开始在颜色和alpha分量normOffset
        参数
        normComponents - 包含归一化组件的数组
        normOffset - 要开始检索归一化组件的 normComponents阵列的偏移量
        components - 从 normComponents接收组件的数组
        offset - 索引为 components ,开始存储标准化组件 normComponents
        结果
        包含非标准化颜色和alpha组件的数组。
        异常
        IllegalArgumentException - 如果此 ColorModel的组件值不方便地以非规范化形式表示。
        IllegalArgumentException - 如果 normComponents减去 normOffset的长度小于 numComponents
        UnsupportedOperationException - 如果这个ColorModel的构造ColorModel称为super(bits)构造函数,但没有覆盖此方法。 参见构造函数, ColorModel(int)
      • getNormalizedComponents

        public float[] getNormalizedComponents​(int[] components,
                                               int offset,
                                               float[] normComponents,
                                               int normOffset)
        给定一个非规范化的组件数组,以归一化形式返回所有颜色/ alpha分量的数组。 非正则化分量是0和2 n -1之间的无符号积分值,其中n是特定分量的位数。 正规化成分是每分量最小和最大由指定之间的浮点值ColorSpace对象此ColorModel 一个IllegalArgumentException如果这种颜色成分值会被抛出ColorModel不便于用非标准化形式表示。 如果normComponents数组为null ,则将分配一个新数组。 将返回normComponents数组。 颜色/ alpha分量存储中normComponents数组以normOffset (即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException ,如果被抛出normComponents数组不null ,不足够大以容纳所有的颜色和alpha分量(开始于normOffset )。 一个IllegalArgumentException如果抛出components阵列是不是大到足以容纳所有开始在颜色和alpha分量offset

        由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 此抽象类中此方法的默认实现假定此类的组件值可以非规范化形式方便地表示。 因此,可能具有不支持非规范化形式的实例的子类必须覆盖此方法。

        参数
        components - 包含非规范化组件的数组
        offset - components阵列的偏移量,用于开始检索非规范化组件
        normComponents - 接收归一化组件的数组
        normOffset - 索引到 normComponents ,开始存储归一化组件
        结果
        包含归一化颜色和alpha组件的数组。
        异常
        IllegalArgumentException - 如果此 ColorModel的组件值不方便地以非规范化形式表示。
        UnsupportedOperationException - 如果这个ColorModel的构造ColorModel称为super(bits)构造函数,但没有覆盖此方法。 参见构造函数, ColorModel(int)
        UnsupportedOperationException - 如果此方法无法确定每个组件的位数
      • getDataElement

        public int getDataElement​(int[] components,
                                  int offset)
        返回表示为一个像素值int在此ColorModel ,给定非标准化颜色/ alpha分量的阵列。 此方法将引发IllegalArgumentException ;如果此组件值ColorModel不如便于表示单个int或如果此颜色分量值ColorModel不在非标准化形式表示的方便。 一个ArrayIndexOutOfBoundsException ,如果被抛出components阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset )。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须覆盖此方法,因为此抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        components - 非规范化颜色和alpha组件的数组
        offset - 索引到 components开始检索颜色和alpha组件
        结果
        这个 int像素值在这个 ColorModel对应的指定组件。
        异常
        IllegalArgumentException - 如果这个 ColorModel像素值不能方便地表示为一个 int
        IllegalArgumentException - 如果该 ColorModel组件值不方便地以非规范化形式表示
        ArrayIndexOutOfBoundsException - 如果 components阵列不够大,不能保持从 offset开始的所有颜色和alpha组件
        UnsupportedOperationException - 如果此方法不支持此 ColorModel
      • getDataElements

        public Object getDataElements​(int[] components,
                                      int offset,
                                      Object obj)
        给出这个ColorModel的一个像素的数据元素数组表示,给出了一个非标准化颜色/ alpha分量的数组。 然后可以将该数组传递给WritableRaster对象的setDataElements方法。 此方法将抛出IllegalArgumentException如果此颜色分量值ColorModel不便于用非标准化形式表示。 一个ArrayIndexOutOfBoundsException ,如果被抛出components阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset )。 如果obj变量为null ,则将分配一个新数组。 如果obj不是null ,它必须是一个类型为transferType的原始数组; 否则,抛出一个ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出obj不够大,不能保存这个像素值ColorModel 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写这个方法,因为这个抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        components - 非规范化颜色和alpha组件的数组
        offset - 索引到 components ,开始检索颜色和alpha组件
        obj - 表示一系列颜色和alpha组件的 Object
        结果
        一个 Object表示一个颜色和alpha组件的数组。
        异常
        ClassCastException -如果 obj不是类型的基本数组 transferType
        ArrayIndexOutOfBoundsException - 如果 obj不够大,不能容纳 ColorModel的像素值,或者 components阵列不够大,不能容纳所有颜色和alpha组件,从 offset开始
        IllegalArgumentException - 如果该 ColorModel组件值不方便地以非规范化形式表示
        UnsupportedOperationException - 如果此方法不支持此 ColorModel
        另请参见:
        WritableRaster.setDataElements(int, int, java.lang.Object)SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
      • getDataElement

        public int getDataElement​(float[] normComponents,
                                  int normOffset)
        给出一个归一化的颜色/ alpha分量的数组,返回在这个ColorModel表示为int的像素值。 这个方法会抛出一个IllegalArgumentException如果这个ColorModel像素值不方便地表示为一个int 一个ArrayIndexOutOfBoundsException ,如果被抛出normComponents阵列是没有大到足以容纳所有的颜色和alpha分量(开始于normOffset )。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 此抽象类中此方法的默认实现首先将规范化形式转换getDataElement(int[], int)规范化形式,然后调用getDataElement(int[], int) 可能具有不支持非规范化形式的实例的子类必须覆盖此方法。
        参数
        normComponents - 归一化颜色和alpha组件的数组
        normOffset - 索引到 normComponents ,开始检索颜色和alpha组件
        结果
        这个 int像素值在这个 ColorModel对应的指定组件。
        异常
        IllegalArgumentException - 如果这个 ColorModel像素值不方便地表示为一个 int
        ArrayIndexOutOfBoundsException - 如果 normComponents数组不够大,不能容纳从 normOffset开始的所有颜色和alpha组件
        从以下版本开始:
        1.4
      • getDataElements

        public Object getDataElements​(float[] normComponents,
                                      int normOffset,
                                      Object obj)
        给出这个ColorModel中的像素的数据元素数组表示,给出了一组归一化的颜色/ alpha分量。 然后可以将该数组传递给WritableRaster对象的setDataElements方法。 一个ArrayIndexOutOfBoundsException ,如果被抛出normComponents阵列是没有大到足以容纳所有的颜色和alpha分量(开始于normOffset )。 如果obj变量为null ,则会分配一个新数组。 如果obj不是null ,它必须是一个类型为transferType的原始数组; 否则,抛出一个ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出obj不够大,不能保存这个像素值ColorModel 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 此抽象类中此方法的默认实现首先将规范化形式转换getDataElement(int[], int, Object)规范化形式,然后调用getDataElement(int[], int, Object) 可能具有不支持非规范化形式的实例的子类必须覆盖此方法。
        参数
        normComponents - 归一化颜色和alpha组件的数组
        normOffset - 索引到 normComponents ,开始检索颜色和alpha组件
        obj - 用于保存返回像素的原始数据数组
        结果
        一个 Object ,它是像素的原始数据阵列表示
        异常
        ClassCastException -如果 obj不是类型的基本数组 transferType
        ArrayIndexOutOfBoundsException - 如果 obj不够大,不足以持有这个 ColorModel的像素值,或者 normComponents阵列不够大,不能容纳所有颜色和alpha分量,从 normOffset开始
        从以下版本开始:
        1.4
        另请参见:
        WritableRaster.setDataElements(int, int, java.lang.Object)SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
      • getNormalizedComponents

        public float[] getNormalizedComponents​(Object pixel,
                                               float[] normComponents,
                                               int normOffset)
        给出这个ColorModel一个像素,返回所有颜色/ alpha分量的ColorModel 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 如果像素不是transferType类型的原始数组,则抛出一个ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出pixel不够大,不能保存这个像素值ColorModel 正规化成分是每分量最小和最大由指定之间的浮点值ColorSpace对象此ColorModel 如果normComponents阵列为null ,则将分配一个新阵列。 将返回normComponents数组。 颜色/ alpha分量存储中normComponents数组以normOffset (即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException ,如果被抛出normComponents数组不null ,不足够大以容纳所有的颜色和alpha分量(开始于normOffset )。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 此抽象类中此方法的默认实现首先使用getComponents(Object, int[], int)检索非规范化形式的颜色和alpha组件,然后调用getNormalizedComponents(int[], int, float[], int) 可能具有不支持非规范化形式的实例的子类必须覆盖此方法。
        参数
        pixel - 指定的像素
        normComponents - 用于接收标准化组件的数组
        normOffset - normComponents阵列中的起始存储归一化分量的偏移量
        结果
        包含归一化颜色和alpha组件的数组。
        异常
        ClassCastException - 如果 pixel不是transferType类型的原始数组
        ArrayIndexOutOfBoundsException - 如果 normComponents不够大,不能容纳所有颜色和alpha组件,从 normOffset开始
        ArrayIndexOutOfBoundsException - 如果 pixel不够大,不能容纳 ColorModel的像素值。
        UnsupportedOperationException - 如果这个ColorModel的构造ColorModel称为super(bits)构造函数,但没有覆盖此方法。 见构造函数, ColorModel(int)
        UnsupportedOperationException - 如果此方法无法确定每个组件的位数
        从以下版本开始:
        1.4
      • equals

        public boolean equals​(Object obj)
        该方法简单地委托到Object的默认实现,这与==测试相同,因为该类不能在多个独立子类分支之间强制执行正确的等式测试的问题。 鼓励子类覆盖此方法,并为其自己的属性提供等式测试,以及ColorModel的以下常见基础属性的等式测试:
        • 支持alpha组件。
        • 是alpha预乘。
        • 每像素位数
        • 透明度类型,如不透明度,位掩模或半透明。
        • 像素中的分量数。
        • ColorSpace类型。
        • 用于表示像素值的数组的类型。
        • 每个颜色和alpha分量的有效位数。
        重写:
        equalsObject
        参数
        obj - 与之比较的参考对象。
        结果
        如果此对象与obj参数相同, true ; 否则为false
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode​()
        该方法简单地委托给Object的默认实现,它返回该类的系统ID。 鼓励子类覆盖此方法,并为其自己的属性提供散列,除了散列以下公共基本属性的ColorModel
        • 支持alpha组件。
        • 是alpha预乘。
        • 每像素位数
        • 透明度类型,如不透明度,位掩模或半透明。
        • 像素中的分量数。
        • ColorSpace类型。
        • 用于表示像素值的数组的类型。
        • 每个颜色和alpha分量的有效位数。
        重写:
        hashCodeObject
        结果
        该对象的哈希码值。
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.Object)
      • getColorSpace

        public final ColorSpace getColorSpace​()
        返回 ColorSpace与此相关 ColorModel
        结果
        ColorSpaceColorModel
      • coerceData

        public ColorModel coerceData​(WritableRaster raster,
                                     boolean isAlphaPremultiplied)
        强制光栅数据与isAlphaPremultiplied变量中指定的状态相匹配,假设目前ColorModel正确描述了数据。 它可以将颜色光栅数据乘以或除以alpha,如果数据处于正确状态,则不执行任何操作。 如果需要强制数据,那么这个方法也会返回一个ColorModel一个实例,其中isAlphaPremultiplied标志是适当的。 这个方法会抛出一个UnsupportedOperationException如果这个ColorModel不支持。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法,因为该抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        raster - WritableRaster数据
        isAlphaPremultiplied - true如果alpha是预乘的; 否则为false
        结果
        一个表示强制数据的 ColorModel对象。
      • isCompatibleRaster

        public boolean isCompatibleRaster​(Raster raster)
        如果rasterraster兼容, ColorModelfalse返回true 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法,因为该抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        raster - 要测试兼容性的Raster对象
        结果
        true如果 raster与此 ColorModel兼容。
        异常
        UnsupportedOperationException - 如果这个方法还没有被实现 ColorModel
      • createCompatibleWritableRaster

        public WritableRaster createCompatibleWritableRaster​(int w,
                                                             int h)
        创建WritableRaster具有指定的宽度和高度,其具有的数据布局( SampleModel )与此兼容ColorModel 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法,因为该抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        w - 要应用于新的 WritableRaster的宽度
        h - 适用于新的 WritableRaster的高度
        结果
        一个 WritableRaster具有指定宽度和高度的对象。
        异常
        UnsupportedOperationException - 如果此方法不支持此 ColorModel
        另请参见:
        WritableRasterSampleModel
      • createCompatibleSampleModel

        public SampleModel createCompatibleSampleModel​(int w,
                                                       int h)
        创建SampleModel具有指定的宽度和高度,具有与此兼容的数据布局ColorModel 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须覆盖此方法,因为该抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        w - 适用于新的 SampleModel的宽度
        h - 适用于新的 SampleModel的高度
        结果
        一个 SampleModel对象具有指定的宽度和高度。
        异常
        UnsupportedOperationException - 如果此方法不支持此 ColorModel
        另请参见:
        SampleModel
      • isCompatibleSampleModel

        public boolean isCompatibleSampleModel​(SampleModel sm)
        检查SampleModel是否与此ColorModel兼容。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出一个UnsupportedOperationException
        参数
        sm - 指定的 SampleModel
        结果
        true如果指定的SampleModel与此兼容ColorModel ; 否则为false
        异常
        UnsupportedOperationException - 如果此方法不支持此 ColorModel
        另请参见:
        SampleModel
      • finalize

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

        public WritableRaster getAlphaRaster​(WritableRaster raster)
        返回Raster表示图像的alpha通道,从输入中提取Raster ,提供此的像素值ColorModel表示颜色和alpha信息为独立的空间频带(例如ComponentColorModelDirectColorModel )。 该方法假设与这样的ColorModel相关联的Raster对象存储了α波段(如果存在)作为最后的图像数据带。 返回null ,如果有与此相关的独立空间alpha通道ColorModel 如果这是一个IndexColorModel在查找表中有alpha,该方法将返回null因为没有空间离散的alpha通道。 此方法将创建一个新的Raster (但将共享数据数组)。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法以获得除了返回null以外的任何行为,因为此抽象类中的实现将返回null
        参数
        raster - 指定的 Raster
        结果
        一个 Raster表示图像的alpha通道,从指定的获得 Raster
      • toString

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