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

Class ColorModel

  • 实现的所有接口
    Transparency
    已知直接子类:
    ComponentColorModelIndexColorModelPackedColorModel

    public abstract class ColorModel
    extends Object
    implements Transparency
    ColorModel抽象类封装了将像素值转换为颜色分量(例如,红色,绿色和蓝色)和alpha分量的方法。 为了将图像渲染到屏幕,打印机或其他图像,必须将像素值转换为颜色和alpha分量。 作为此类方法的参数或返回值,像素表示为32位整数或基本类型数组。 的数目,顺序,以及一个颜色分量的解释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用于图像的对象,其像素值不能方便地表示为单个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 ,其的转印型Raster和的Raster对象的SampleModel (可从getTransferType这些类的方法)必须匹配的ColorModel 表示用于一个像素阵列中的元素的数量RasterSampleModel (可从getNumDataElements这些类的方法)必须匹配的ColorModel

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

    ColorModel类中的方法使用颜色和alpha分量的两种不同表示 - 标准化形式和非标准化形式。 在归一化形式中,每个部件是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像素值表示由alpha样本预乘的颜色样本,则还会对非标准化颜色分量值进行预乘。 非标准化形式仅用于ColorModel的实例,其ColorSpace的所有组件的最小组件值为0.0,所有组件的最大值为1.0。 颜色和alpha分量的非标准化形式可以是ColorModels的方便表示,其标准化分量值都在0.0和1.0之间。 在这种情况下,积分值0映射到0.0,值2 n - 1映射到1.0。 在其他情况下,例如当归一化的分量值可以是负的或正的时,非标准化的形式是不方便的。 当调用涉及非标准化参数的方法时,这样的ColorModel对象抛出IllegalArgumentException 子类ColorModel必须指定发生这种情况的条件。

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

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

      所有方法  静态方法  实例方法 抽象方法  具体的方法  弃用的方法 
      变量和类型 方法 描述
      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方法已被弃用。
      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分量 ColorModel
      int[] getComponents​(Object pixel, int[] components, int offset)
      返回此 ColorModel给定像素的非标准化颜色/ alpha分量 ColorModel
      int[] getComponentSize()
      返回每个颜色/ alpha分量的位数数组。
      int getComponentSize​(int componentIdx)
      返回指定颜色/ alpha分量的位数。
      int getDataElement​(float[] normComponents, int normOffset)
      在给定一组标准化颜色/ alpha分量的情况下,返回此 ColorModel表示为 int的像素值。
      int getDataElement​(int[] components, int offset)
      在给定一组非标准化颜色/ alpha分量的情况下,返回此 ColorModel表示为 int的像素值。
      Object getDataElements​(float[] normComponents, int normOffset, Object obj)
      在给定一组标准化颜色/ alpha分量的情况下,返回此 ColorModel像素的数据元素数组表示形式。
      Object getDataElements​(int[] components, int offset, Object obj)
      在给定一组非标准化颜色/ alpha分量的情况下,返回此 ColorModel像素的数据元素数组表示。
      Object getDataElements​(int rgb, Object pixel)
      在给定默认RGB颜色模型中的整数像素表示的情况下,返回此 ColorModel像素的数据元素数组表示形式。
      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是否支持alpha。
      int hashCode()
      此方法仅委托 Object的默认实现,该实现返回类的系统ID。
      boolean isAlphaPremultiplied()
      返回是否已在此 ColorModel要转换的像素值中预乘alpha。
      boolean isCompatibleRaster​(Raster raster)
      如果 raster与此 ColorModelfalse兼容,则返回 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)
        构造一个ColorModel ,将像素值转换为颜色/ alpha分量。 颜色组件将在指定的ColorSpace pixel_bits是像素值中的位数。 bits数组指定每种颜色和alpha分量的有效位数。 如果像素值中没有alpha信息,则其长度应为ColorSpace的组件数,如果存在alpha信息,则应为此数字的一个以上。 hasAlpha指示是否存在字母信息。 boolean isAlphaPremultiplied指定如何解释像素值,其中颜色和alpha信息表示为单独的空间带。 如果booleantrue ,则假定颜色样本已乘以alpha样本。 transparency指定此颜色模型可以表示的alpha值。 传输类型是用于表示像素值的基本数组的类型。 注意,位数组包含从像素值转换后每个颜色/ alpha分量的有效位数。 例如,对于IndexColorModel其中pixel_bits等于16,位数组可能有四个元素,每个元素设置为8。
        参数
        pixel_bits - 像素值中的位数
        bits - 指定每种颜色和alpha分量的有效位数的数组
        cspace - 指定的 ColorSpace
        hasAlpha - true如果存在alpha信息; 否则为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位,α,红,绿和蓝颜色分量,从最高有效字节到最低有效字节相应排序,如:0xAARRGGBB。 颜色分量不会被alpha分量预乘。 此格式不一定代表特定设备或所有图像的本机或最高效ColorModel 它仅用作常见的颜色模型格式。
        结果
        描述默认RGB值的 DirectColorModel对象。
      • hasAlpha

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

        public final boolean isAlphaPremultiplied()
        返回是否已在此ColorModel要转换的像素值中预乘alpha。 如果布尔值为true ,则此ColorModel将用于解释像素值,其中颜色和alpha信息表示为单独的空间带,并且假设颜色样本已乘以alpha样本。
        结果
        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。 一个IllegalArgumentException如果这个像素值抛出ColorModel不便于表示为一个单个int。 返回值是非预乘值。 例如,如果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。 如果此ColorModel像素值不能方便地表示为单个int, IllegalArgumentException抛出ColorModel 返回的值采用非预乘格式。 例如,如果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分量ColorModel 像素值指定为int 一个IllegalArgumentException如果此像素值将被抛出ColorModel不便于表示为一个单一的int ,或者如果该颜色分量的值ColorModel不在非标准化形式表示的方便。 例如,此方法可用于检索DirectColorModel特定像素值的DirectColorModel 如果组件数组是null ,则将分配新阵列。 将返回组件数组。 颜色/ alpha分量存储在组件数组中,从offset开始(即使数组是通过此方法分配的)。 一个ArrayIndexOutOfBoundsException如果components数组是不被抛出null ,不足够大以容纳所有的颜色和alpha分量(以偏移量开始)。 由于ColorModel是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
        参数
        pixel - 指定的像素
        components - 用于接收指定像素的颜色和alpha分量的数组
        offset - 进入 components数组的偏移量,开始存储颜色和alpha分量
        结果
        一个数组,包含从指定偏移量开始的指定像素的颜色和alpha分量。
        异常
        UnsupportedOperationException -如果此方法不受此支持 ColorModel
      • getComponents

        public int[] getComponents​(Object pixel,
                                   int[] components,
                                   int offset)
        返回此ColorModel给定像素的非标准化颜色/ alpha分量ColorModel 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 如果pixel不是transferType类型的基本数组,则抛出ClassCastException 一个IllegalArgumentException如果这种颜色成分值会被抛出ColorModel不便于用非标准化形式表示。 一个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 一个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)
        在给定一组非标准化颜色/ alpha分量的情况下,返回在此ColorModel表示为int的像素值。 如果此ColorModel组件值不能方便地表示为单个int或者此ColorModel颜色组件值不能以非标准化形式方便地表示,则此方法将抛出IllegalArgumentException 一个ArrayIndexOutOfBoundsException如果被抛出components阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset )。 由于ColorModel是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
        参数
        components - 非标准化颜色和alpha分量的数组
        offset - 开始检索颜色和alpha分量的 components索引
        结果
        ColorModel对应于指定组件的 int像素值。
        异常
        IllegalArgumentException - 如果此 ColorModel像素值不能方便地表示为单个 int
        IllegalArgumentException - 如果此 ColorModel组件值不能以非标准化形式方便地表示
        ArrayIndexOutOfBoundsException - 如果 components数组不足以容纳从 offset开始的所有颜色和alpha分量
        UnsupportedOperationException -如果此方法不受此支持 ColorModel
      • getDataElements

        public Object getDataElements​(int[] components,
                                      int offset,
                                      Object obj)
        在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel像素的数据元素数组表示。 然后可以将此数组传递给WritableRaster对象的setDataElements方法。 如果此ColorModel颜色分量值不能以非标准化形式方便地表示,则此方法将抛出IllegalArgumentException 一个ArrayIndexOutOfBoundsException如果被抛出components阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset )。 如果obj变量为null ,则将分配新数组。 如果obj不是null ,则它必须是transferType类型的基本数组; 否则,抛出ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出obj不够大,不能保存这个像素值ColorModel 由于ColorModel是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
        参数
        components - 非标准化颜色和alpha分量的数组
        offset - 开始检索颜色和alpha分量的 components索引
        obj - 表示颜色和alpha分量数组的 Object
        结果
        Object表示颜色和alpha分量的数组。
        异常
        ClassCastException - 如果 obj不是类型 transferType的基本数组
        ArrayIndexOutOfBoundsException - 如果 obj不足以容纳此 ColorModel的像素值,或者 components数组不足以容纳从 offset开始的所有颜色和alpha分量
        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分量
        结果
        ColorModel与指定组件对应的 int像素值。
        异常
        IllegalArgumentException - 如果此 ColorModel像素值不能方便地表示为单个 int
        ArrayIndexOutOfBoundsException - 如果 normComponents数组不足以容纳从 normOffset开始的所有颜色和alpha分量
        从以下版本开始:
        1.4
      • getDataElements

        public Object getDataElements​(float[] normComponents,
                                      int normOffset,
                                      Object obj)
        在给定一个标准化颜色/ alpha分量数组的情况下,返回此ColorModel像素的数据元素数组表示形式。 然后可以将此数组传递给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数组不足以容纳从 normOffset开始的所有颜色和alpha分量
        从以下版本开始:
        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类型的数据元素数组指定。 如果pixel不是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不足以容纳从 normOffset开始的所有颜色和alpha分量
        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分量的有效位数。
        重写:
        equals在类 Object
        参数
        obj - 要与之比较的引用对象。
        结果
        true如果此对象与obj参数相同; 否则为false
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode()
        此方法仅委托Object的默认实现,该实现返回类的系统ID。 除了散列以下常见基本属性ColorModel的值之外,还鼓励子类重写此方法并为其自己的属性提供哈希:
        • 支持alpha组件。
        • 是alpha预乘。
        • 每像素的位数。
        • 透明类型,如不透明,位掩码或半透明。
        • 像素中的组件数。
        • ColorSpace类型。
        • 用于表示像素值的数组类型。
        • 每种颜色和alpha分量的有效位数。
        重写:
        hashCode在课程 Object
        结果
        此对象的哈希码值。
        另请参见:
        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设置isAlphaPremultiplied标志。 此方法将抛出一个UnsupportedOperationException ,如果它不受此支持ColorModel 由于ColorModel是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
        参数
        raster - WritableRaster数据
        isAlphaPremultiplied - true如果alpha被预乘; 否则为false
        结果
        一个 ColorModel对象,表示强制数据。
      • isCompatibleRaster

        public boolean isCompatibleRaster​(Raster raster)
        返回true如果raster与此兼容ColorModelfalse ,如果事实并非如此。 由于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()
        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相关联的系统资源。
        重写:
        finalizeObject
        另请参见:
        WeakReferencePhantomReference
      • getAlphaRaster

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

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