Module java.desktop
Package java.awt.image

Class ComponentColorModel

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

public class ComponentColorModel extends ColorModel
一个与将颜色和alpha信息表示为单独样本并将每个样本存储在单独数据元素中的像素值一起工作的ColorModel类。此类可以与任意ColorSpace一起使用。像素值中的颜色样本数量必须与ColorSpace中的颜色分量数量相同。可能有一个单独的alpha样本。

对于使用transferType类型的原始数组像素表示的方法,数组长度与颜色和alpha样本的数量相同。颜色样本首先存储在数组中,然后是alpha样本(如果存在)。颜色样本的顺序由ColorSpace指定。通常,此顺序反映了颜色空间类型的名称。例如,对于TYPE_RGB,索引0对应于红色,索引1对应于绿色,索引2对应于蓝色。

将像素样本值转换为用于显示或处理目的的颜色/alpha分量是基于样本与分量之间的一对一对应关系的。根据用于创建ComponentColorModel实例的传输类型,由该实例表示的像素样本值可能是有符号的或无符号的,可能是整数类型或浮点数或双精度数(有关详细信息,请参见下文)。从样本值到归一化颜色/alpha分量的转换必须遵循某些规则。对于浮点数和双精度数样本,转换是一个恒等式,即归一化分量值等于相应的样本值。对于整数样本,转换应该只是一个简单的比例和偏移,其中比例和偏移常数对于每个分量可能是不同的。应用比例和偏移常数的结果是一组颜色/alpha分量值,保证落在某个范围内。通常,颜色分量的范围将是由ColorSpace类的getMinValuegetMaxValue方法定义的范围。alpha分量的范围应为0.0到1.0。

使用DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT传输类型创建的ComponentColorModel实例具有被视为无符号整数值的像素样本值。像素值中颜色或alpha样本的位数可能与传递给ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int)构造函数的相应颜色或alpha样本的位数不同。在这种情况下,此类假定样本值的最低有效n位保存组件值,其中n是传递给构造函数的组件的有效位数。它还假定样本值中的任何高阶位为零。因此,样本值范围从0到2n - 1。此类将这些样本值映射到归一化颜色分量值,使得0映射到每个分量的ColorSpace's getMinValue方法获得的值,2n - 1映射到从getMaxValue获得的值。要创建具有不同颜色样本映射的ComponentColorModel需要对此类进行子类化并覆盖getNormalizedComponents(Object, float[], int)方法。alpha样本的映射始终将0映射到0.0,2n - 1映射到1.0。

对于具有无符号样本值的实例,只有在满足两个条件的情况下才支持未归一化的颜色/alpha分量表示。首先,样本值0必须映射到归一化分量值0.0,样本值2n - 1映射到1.0。其次,ColorSpace的所有颜色分量的最小/最大范围必须为0.0到1.0。在这种情况下,组件表示是对应样本的n个最低有效位。因此,每个组件是一个无符号整数值,范围在0到2n - 1之间,其中n是特定组件的有效位数。如果不满足这些条件,任何接受未归一化组件参数的方法都将抛出IllegalArgumentException异常。

使用DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE传输类型创建的ComponentColorModel实例将像素样本值视为有符号短整数、浮点数或双精度数值。这些实例不支持未归一化的颜色/alpha分量表示,因此在这些实例上调用任何接受此表示作为参数的方法时将抛出IllegalArgumentException异常。此类的实例的归一化分量值的范围取决于传输类型,如下所示:对于浮点数样本,为浮点数据类型的完整范围;对于双精度数样本,为浮点数据类型的完整范围(由于将双精度数转换为浮点数);对于短整数样本,从大约-maxVal到+maxVal,其中maxVal是ColorSpace的每个分量的最大值(-32767映射到-maxVal,0映射到0.0,32767映射到+maxVal)。子类可以通过覆盖getNormalizedComponents(Object, float[], int)方法来覆盖短整数样本值到归一化分量值的缩放。对于浮点数和双精度数样本,归一化分量值被视为等于相应的样本值,子类不应尝试为这些传输类型添加任何非恒等缩放。

使用DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE传输类型创建的ComponentColorModel实例使用所有样本值的所有位。因此,当使用DataBuffer.TYPE_SHORT时,所有颜色/alpha分量都具有16位,当使用DataBuffer.TYPE_FLOAT时,所有颜色/alpha分量都具有32位,当使用DataBuffer.TYPE_DOUBLE时,所有颜色/alpha分量都具有64位。当使用ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int)构造函数形式之一时,将忽略位数组参数。

可能存在无法合理解释为渲染组件值的颜色/alpha样本值的情况。当ComponentColorModel被子类化以覆盖将无符号样本值映射到归一化颜色分量值时,或者使用超出某个范围的有符号样本值时,就会发生这种情况。(例如,指定作为有符号短整数值的alpha分量超出范围0到32767,归一化范围为0.0到1.0,可能导致意外结果。)应用程序有责任在渲染之前适当缩放像素数据,以使颜色分量落在ColorSpace的归一化范围内(使用ColorSpace类的getMinValuegetMaxValue方法获得)并且alpha分量在0.0到1.0之间。如果颜色或alpha分量值超出这些范围,则渲染结果是不确定的。

使用单个int像素表示的方法会抛出IllegalArgumentException异常,除非ComponentColorModel的组件数量为一个且组件值为无符号值 - 换句话说,使用DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT传输类型的单个颜色分量且没有alpha。

可以将ComponentColorModelComponentSampleModelBandedSampleModelPixelInterleavedSampleModel结合使用以构造BufferedImage

参见:
  • 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
    ComponentColorModel(ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
    构造一个ComponentColorModel,使用指定的参数。
    ComponentColorModel(ColorSpace colorSpace, int[] bits, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
    构造一个ComponentColorModel,使用指定的参数。
  • Method Summary

    Modifier and Type
    Method
    Description
    coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
    强制栅格数据与isAlphaPremultiplied变量中指定的状态匹配,假设数据当前由此ColorModel正确描述。
    createCompatibleSampleModel(int w, int h)
    创建一个具有指定宽度和高度的SampleModel,其数据布局与此ColorModel兼容。
    创建一个具有指定宽度和高度的WritableRaster,其数据布局(SampleModel)与此ColorModel兼容。
    boolean
    equals(Object obj)
    测试指定的Object是否是ComponentColorModel的实例并且是否等于此ComponentColorModel
    int
    getAlpha(int pixel)
    返回指定像素的alpha分量,从0到255进行缩放。
    int
    getAlpha(Object inData)
    返回指定像素的alpha分量,从0到255进行缩放。
    返回从输入Raster中提取的图像的alpha通道的Raster
    int
    getBlue(int pixel)
    返回默认RGB ColorSpace(sRGB)中指定像素的蓝色分量,从0到255进行缩放。
    int
    getBlue(Object inData)
    返回默认RGB ColorSpace(sRGB)中指定像素的蓝色分量,从0到255进行缩放。
    int[]
    getComponents(int pixel, int[] components, int offset)
    返回在此ColorModel中给定像素的未归一化颜色/alpha分量数组。
    int[]
    getComponents(Object pixel, int[] components, int offset)
    返回在此ColorModel中给定像素的未归一化颜色/alpha分量数组。
    int
    getDataElement(float[] normComponents, int normOffset)
    给定一组归一化颜色/alpha分量数组,返回在此ColorModel中表示为int的像素值。
    int
    getDataElement(int[] components, int offset)
    给定一组未归一化颜色/alpha分量数组,返回在此ColorModel中表示为int的像素值。
    getDataElements(float[] normComponents, int normOffset, Object obj)
    给定一组归一化颜色/alpha分量数组,返回在此ColorModel中表示为数据元素数组的像素值。
    getDataElements(int[] components, int offset, Object obj)
    给定一组未归一化颜色/alpha分量数组,返回在此ColorModel中表示为数据元素数组的像素值。
    getDataElements(int rgb, Object pixel)
    给定默认RGB颜色模型中的整数像素表示,返回在此ColorModel中表示为数据元素数组的像素值。
    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分量的标准化形式。
    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分量。
    int[]
    getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
    返回一个数组,其中包含给定标准化组件数组的所有颜色/alpha分量的未标准化形式。
    int
    返回此ComponentColorModel的哈希码。
    boolean
    如果 与此 ColorModel兼容,则返回true;如果不兼容,则返回false。
    boolean
    检查指定的SampleModel是否与此ColorModel兼容。

    Methods declared in class java.lang.Object

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

    • ComponentColorModel

      public ComponentColorModel(ColorSpace colorSpace, int[] bits, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
      从指定参数构造一个ComponentColorModel。颜色分量将在指定的ColorSpace中。支持的传输类型为DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE。如果不为null,则bits数组指定每个颜色和alpha分量的有效位数,其长度应至少为ColorSpace中的组件数,如果像素值中没有alpha信息,则为此数字的组件数,如果有alpha信息,则为此数字的一个以上。当transferTypeDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE时,将忽略bits数组参数。hasAlpha指示是否存在alpha信息。如果hasAlpha为true,则布尔值isAlphaPremultiplied指定如何解释像素值中的颜色和alpha样本。如果布尔值为true,则假定颜色样本已乘以alpha样本。transparency指定此颜色模型可以表示的alpha值。可接受的transparency值为OPAQUEBITMASKTRANSLUCENTtransferType是用于表示像素值的原始数组类型。
      参数:
      colorSpace - 与此颜色模型关联的ColorSpace
      bits - 每个分量的有效位数。可以为null,在这种情况下,所有分量样本的所有位将是有效的。如果transferType是DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE之一,则将忽略所有分量样本的所有位。
      hasAlpha - 如果为true,则此颜色模型支持alpha。
      isAlphaPremultiplied - 如果为true,则alpha已预乘。
      transparency - 指定此颜色模型可以表示的alpha值。
      transferType - 指定用于表示像素值的原始数组类型。
      抛出:
      IllegalArgumentException - 如果bits数组参数不为null,其长度小于颜色和alpha分量的数量,并且transferType是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT之一。
      IllegalArgumentException - 如果transferType不是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE之一。
      参见:
    • ComponentColorModel

      public ComponentColorModel(ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
      从指定参数构造一个ComponentColorModel。颜色分量将在指定的ColorSpace中。支持的传输类型为DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE。每个颜色和alpha分量的有效位数分别为8、16、32、16、32或64。颜色分量的数量将是ColorSpace中的组件数。如果hasAlphatrue,则布尔值isAlphaPremultiplied指定如何解释像素值中的颜色和alpha样本。如果布尔值为true,则假定颜色样本已乘以alpha样本。transparency指定此颜色模型可以表示的alpha值。可接受的transparency值为OPAQUEBITMASKTRANSLUCENTtransferType是用于表示像素值的原始数组类型。
      参数:
      colorSpace - 与此颜色模型关联的ColorSpace
      hasAlpha - 如果为true,则此颜色模型支持alpha。
      isAlphaPremultiplied - 如果为true,则alpha已预乘。
      transparency - 指定此颜色模型可以表示的alpha值。
      transferType - 指定用于表示像素值的原始数组类型。
      抛出:
      IllegalArgumentException - 如果transferType不是DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE之一。
      自:
      1.4
      参见:
  • Method Details

    • getRed

      public int getRed(int pixel)
      返回指定像素的红色颜色分量,在默认RGB ColorSpace(sRGB)中从0到255进行缩放。如果需要,将进行颜色转换。像素值指定为int。返回的值将是非预乘值。如果alpha已预乘,此方法在返回值之前将其除去(如果alpha值为0,则红色值将为0)。
      指定者:
      getRed 在类中 ColorModel
      参数:
      pixel - 您要获取红色颜色分量的像素。
      返回:
      指定像素的红色颜色分量,作为int。
      抛出:
      IllegalArgumentException - 如果此ColorModel中有多个分量。
      IllegalArgumentException - 如果此ColorModel的分量值为有符号的
    • getGreen

      public int getGreen(int pixel)
      返回指定像素的绿色颜色分量,在默认RGB ColorSpace(sRGB)中从0到255进行缩放。如果需要,将进行颜色转换。像素值指定为int。返回的值将是非预乘值。如果alpha已预乘,此方法在返回值之前将其除去(如果alpha值为0,则绿色值将为0)。
      指定者:
      getGreen 在类中 ColorModel
      参数:
      pixel - 您要获取绿色颜色分量的像素。
      返回:
      指定像素的绿色颜色分量,作为int。
      抛出:
      IllegalArgumentException - 如果此ColorModel中有多个分量。
      IllegalArgumentException - 如果此ColorModel的分量值为有符号的
    • getBlue

      public int getBlue(int pixel)
      返回指定像素的蓝色颜色分量,在默认RGB ColorSpace(sRGB)中从0到255进行缩放。如果需要,将进行颜色转换。像素值指定为int。返回的值将是非预乘值。如果alpha已预乘,此方法在返回值之前将其除去(如果alpha值为0,则蓝色值将为0)。
      指定者:
      getBlue 在类中 ColorModel
      参数:
      pixel - 您要获取蓝色颜色分量的像素。
      返回:
      指定像素的蓝色颜色分量,作为int。
      抛出:
      IllegalArgumentException - 如果此ColorModel中有多个分量。
      IllegalArgumentException - 如果此ColorModel的分量值为有符号的
    • getAlpha

      public int getAlpha(int pixel)
      返回指定像素的alpha分量,从0到255进行缩放。像素值指定为int。
      指定者:
      getAlpha 在类 ColorModel
      参数:
      pixel - 您要获取alpha分量的像素。
      返回:
      指定像素的alpha分量,作为int。
      抛出:
      IllegalArgumentException - 如果此ColorModel中有多个分量。
      IllegalArgumentException - 如果此ColorModel的分量值为有符号的
    • getRGB

      public int getRGB(int pixel)
      返回默认RGB颜色模型格式中像素的颜色/alpha分量。如果需要,将进行颜色转换。返回的值将是非预乘格式。如果alpha已经预乘,则此方法将从颜色分量中除去它(如果alpha值为0,则颜色值将为0)。
      覆盖:
      getRGB 在类 ColorModel
      参数:
      pixel - 您要获取颜色/alpha分量的像素。
      返回:
      指定像素的颜色/alpha分量,作为int。
      抛出:
      IllegalArgumentException - 如果此ColorModel中有多个分量。
      IllegalArgumentException - 如果此ColorModel的分量值为有符号的
      参见:
    • getRed

      public int getRed(Object inData)
      返回默认RGB ColorSpace(sRGB)中从0到255缩放的指定像素的红色分量。如果需要,将进行颜色转换。 pixel值由作为对象引用传递的transferType类型的数据元素数组指定。返回的值将是非预乘值。如果alpha已经预乘,则此方法在返回值之前除去它(如果alpha值为0,则红色值将为0)。由于ComponentColorModel可以被子类化,子类将继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      getRed 在类 ColorModel
      参数:
      inData - 您要获取红色分量的像素,由transferType类型的数据元素数组指定。
      返回:
      指定像素的红色分量,作为int。
      抛出:
      ClassCastException - 如果inData不是transferType类型的原始数组。
      ArrayIndexOutOfBoundsException - 如果inData不足以容纳此ColorModel的像素值。
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
    • getGreen

      public int getGreen(Object inData)
      返回默认RGB ColorSpace(sRGB)中从0到255缩放的指定像素的绿色分量。如果需要,将进行颜色转换。 pixel值由作为对象引用传递的transferType类型的数据元素数组指定。返回的值是非预乘值。如果alpha已经预乘,则此方法在返回值之前除去它(如果alpha值为0,则绿色值将为0)。由于ComponentColorModel可以被子类化,子类将继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      getGreen 在类 ColorModel
      参数:
      inData - 您要获取绿色分量的像素,由transferType类型的数据元素数组指定。
      返回:
      指定像素的绿色分量,作为int。
      抛出:
      ClassCastException - 如果inData不是transferType类型的原始数组。
      ArrayIndexOutOfBoundsException - 如果inData不足以容纳此ColorModel的像素值。
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
    • getBlue

      public int getBlue(Object inData)
      返回默认RGB ColorSpace(sRGB)中从0到255缩放的指定像素的蓝色分量。如果需要,将进行颜色转换。 pixel值由作为对象引用传递的transferType类型的数据元素数组指定。返回的值是非预乘值。如果alpha已经预乘,则此方法在返回值之前除去它(如果alpha值为0,则蓝色值将为0)。由于ComponentColorModel可以被子类化,子类将继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      getBlue 在类 ColorModel
      参数:
      inData - 您要获取蓝色分量的像素,由transferType类型的数据元素数组指定。
      返回:
      指定像素的蓝色分量,作为int。
      抛出:
      ClassCastException - 如果inData不是transferType类型的原始数组。
      ArrayIndexOutOfBoundsException - 如果inData不足以容纳此ColorModel的像素值。
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
    • getAlpha

      public int getAlpha(Object inData)
      返回从0到255缩放的指定像素的alpha分量。像素值由作为对象引用传递的transferType类型的数据元素数组指定。由于ComponentColorModel可以被子类化,子类将继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      getAlpha 在类 ColorModel
      参数:
      inData - 您要获取alpha分量的像素,由transferType类型的数据元素数组指定。
      返回:
      指定像素的alpha分量,作为int。
      抛出:
      ClassCastException - 如果inData不是transferType类型的原始数组。
      ArrayIndexOutOfBoundsException - 如果inData不足以容纳此ColorModel的像素值。
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
    • getRGB

      public int getRGB(Object inData)
      返回默认RGB颜色模型格式中指定像素的颜色/alpha分量。如果需要,将执行颜色转换。像素值由作为对象引用传递的transferType类型的数据元素数组指定。返回的值以非预乘格式呈现。如果alpha已经预乘,则此方法将其从颜色分量中除去(如果alpha值为0,则颜色值将为0)。由于ComponentColorModel可以被子类化,子类会继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      getRGB 在类中 ColorModel
      参数:
      inData - 您要获取颜色/alpha分量的像素,由transferType类型的数据元素数组指定。
      返回:
      指定像素的颜色/alpha分量,作为int。
      抛出:
      ClassCastException - 如果inData不是transferType类型的原始数组。
      ArrayIndexOutOfBoundsException - 如果inData不足以容纳此ColorModel的像素值。
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
      参见:
    • getDataElements

      public Object getDataElements(int rgb, Object pixel)
      返回此ColorModel中像素的数据元素数组表示,给定默认RGB颜色模型中的整数像素表示。然后可以将此数组传递给WritableRaster对象的setDataElements方法。如果pixel参数为null,则将分配一个新数组。由于ComponentColorModel可以被子类化,子类会继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      getDataElements 在类中 ColorModel
      参数:
      rgb - RGB颜色模型中像素的整数表示
      pixel - 指定的像素
      返回:
      ColorModel中像素的数据元素数组表示。
      抛出:
      ClassCastException - 如果pixel不为null且不是transferType类型的原始数组。
      ArrayIndexOutOfBoundsException - 如果pixel不足以容纳此ColorModel的像素值。
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
      参见:
    • getComponents

      public int[] getComponents(int pixel, int[] components, int offset)
      返回给定ColorModel中像素的未标准化颜色/alpha分量数组。如果此ColorModel的组件值在未标准化形式中不方便表示,则会抛出IllegalArgumentException异常。颜色/alpha分量存储在从offset开始的components数组中(即使该数组是由此方法分配的)。
      覆盖:
      getComponents 在类中 ColorModel
      参数:
      pixel - 作为整数指定的像素值。
      components - 用于存储未标准化颜色/alpha分量的整数数组。如果components数组为null,则将分配一个新数组。
      offset - components数组中的偏移量。
      返回:
      组件数组。
      抛出:
      IllegalArgumentException - 如果此ColorModel中有多个组件。
      IllegalArgumentException - 如果此ColorModel不支持未标准化形式
      ArrayIndexOutOfBoundsException - 如果components数组不为null且不足以容纳所有颜色和alpha分量(从偏移量开始)。
    • getComponents

      public int[] getComponents(Object pixel, int[] components, int offset)
      返回给定ColorModel中像素的未标准化颜色/alpha分量数组。像素值由作为对象引用传递的transferType类型的数据元素数组指定。如果此ColorModel的组件值在未标准化形式中不方便表示,则会抛出IllegalArgumentException异常。颜色/alpha分量存储在从offset开始的components数组中(即使该数组是由此方法分配的)。由于ComponentColorModel可以被子类化,子类会继承此方法的实现,如果它们不覆盖它,则此方法可能会在使用不受支持的transferType时抛出异常。
      覆盖:
      getComponents 在类中 ColorModel
      参数:
      pixel - 由transferType类型的数据元素数组指定的像素值。
      components - 用于存储未标准化颜色/alpha分量的整数数组。如果components数组为null,则将分配一个新数组。
      offset - components数组中的偏移量。
      返回:
      components数组。
      抛出:
      IllegalArgumentException - 如果此ComponentColorModel不支持未标准化形式
      UnsupportedOperationException - 在某些情况下,如果此ComponentColorModel的传输类型不是以下传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      ClassCastException - 如果pixel不是transferType类型的原始数组。
      IllegalArgumentException - 如果components数组不为null且不足以容纳所有颜色和alpha分量(从偏移量开始),或者如果pixel不足以容纳此ColorModel的像素值。
    • getUnnormalizedComponents

      public int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
      返回给定标准化组件数组的所有颜色/alpha分量的未标准化形式数组。未标准化组件是介于0和2n - 1之间的无符号整数值,其中n是特定组件的位数。标准化组件是由此ColorModelColorSpace对象指定的每个组件的最小和最大值之间的浮点值。如果此ColorModel的颜色分量值在未标准化形式中不方便表示,则将抛出IllegalArgumentException。如果components数组为null,将分配一个新数组。将返回components数组。颜色/alpha分量存储在从offset开始的components数组中(即使该数组是由此方法分配的)。如果components数组不为null且不足以容纳所有颜色和alpha分量(从offset开始),将抛出ArrayIndexOutOfBoundsException。如果normComponents数组不足以容纳从normOffset开始的所有颜色和alpha分量,则将抛出IllegalArgumentException
      覆盖:
      getUnnormalizedComponents 在类 ColorModel
      参数:
      normComponents - 包含标准化组件的数组
      normOffset - 开始检索标准化组件的normComponents数组中的偏移量
      components - 从normComponents接收组件的数组
      offset - 从normComponents开始存储标准化组件的components中的索引
      返回:
      包含未标准化颜色和alpha组件的数组。
      抛出:
      IllegalArgumentException - 如果此ComponentColorModel不支持未标准化形式
      IllegalArgumentException - 如果normComponents的长度减去normOffset小于numComponents
    • getNormalizedComponents

      public float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)
      返回一个包含所有颜色/alpha组件的标准化形式的数组,给定一个未标准化组件数组。未标准化组件是介于0和2n - 1之间的无符号整数值,其中n是特定组件的位数。标准化组件是ColorModel对象为此ColorModel指定的每个组件的最小值和最大值之间的浮点值。如果此ColorModel的颜色组件值在未标准化形式下不方便表示,则将抛出IllegalArgumentException。如果normComponents数组为null,将分配一个新数组。将返回normComponents数组。颜色/alpha组件存储在normComponents数组中,从normOffset开始(即使该数组是由此方法分配的)。如果normComponents数组不为null且不足以容纳所有颜色和alpha组件(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException。如果components数组不足以容纳从offset开始的所有颜色和alpha组件,则会抛出IllegalArgumentException
      覆盖:
      getNormalizedComponents 在类 ColorModel
      参数:
      components - 包含未标准化组件的数组
      offset - 开始检索未标准化组件的components数组中的偏移量
      normComponents - 接收标准化组件的数组
      normOffset - 开始存储标准化组件的normComponents中的索引
      返回:
      包含标准化颜色和alpha组件的数组。
      抛出:
      IllegalArgumentException - 如果此ComponentColorModel不支持未标准化形式
    • getDataElement

      public int getDataElement(int[] components, int offset)
      返回一个以int表示的像素值,给定一个未标准化颜色/alpha组件数组,在此ColorModel中。
      覆盖:
      getDataElement 在类 ColorModel
      参数:
      components - 一个未标准化颜色/alpha组件的数组。
      offset - components数组中的偏移量。
      返回:
      以int表示的像素值。
      抛出:
      IllegalArgumentException - 如果此ColorModel中有多个组件。
      IllegalArgumentException - 如果此ComponentColorModel不支持未标准化形式
    • getDataElements

      public Object getDataElements(int[] components, int offset, Object obj)
      返回一个数据元素数组表示此ColorModel中像素的像素值,给定一个未标准化颜色/alpha组件的数组。然后可以将此数组传递给WritableRaster对象的setDataElements方法。
      覆盖:
      getDataElements 在类 ColorModel
      参数:
      components - 一个未标准化颜色/alpha组件的数组。
      offset - components数组中的整数偏移量。
      obj - 存储像素的数据元素数组表示的对象。如果obj变量为null,将分配一个新数组。如果obj不为null,它必须是transferType类型的原始数组。如果obj不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。由于ComponentColorModel可以被子类化,子类继承此方法的实现,如果它们不覆盖它,则会在使用不受支持的transferType时抛出异常。
      返回:
      ColorModel中像素的数据元素数组表示。
      抛出:
      IllegalArgumentException - 如果组件数组不足以容纳所有颜色和alpha组件(从偏移量开始)。
      ClassCastException - 如果obj不为null且不是transferType类型的原始数组。
      ArrayIndexOutOfBoundsException - 如果obj不足以容纳此ColorModel的像素值。
      IllegalArgumentException - 如果此ComponentColorModel不支持未标准化形式
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是以下传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      参见:
    • getDataElement

      public int getDataElement(float[] normComponents, int normOffset)
      返回一个以int表示的像素值,在此ColorModel中,给定一个标准化颜色/alpha组件的数组。如果此ColorModel的像素值不方便表示为单个int,则此方法将抛出IllegalArgumentException。如果normComponents数组不足以容纳所有颜色和alpha组件(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException
      覆盖:
      getDataElement 在类 ColorModel
      参数:
      normComponents - 一个标准化颜色和alpha组件的数组
      normOffset - 开始检索颜色和alpha组件的normComponents中的索引
      返回:
      在此ColorModel中以int表示的像素值,对应于指定的组件。
      抛出:
      IllegalArgumentException - 如果此ColorModel的像素值不方便表示为单个int
      ArrayIndexOutOfBoundsException - 如果normComponents数组不足以容纳从normOffset开始的所有颜色和alpha组件
      自:
      1.4
    • getDataElements

      public Object getDataElements(float[] normComponents, int normOffset, Object obj)
      返回一个数据元素数组表示此ColorModel中像素的像素值,给定一个标准化颜色/alpha组件的数组。然后可以将此数组传递给WritableRaster对象的setDataElements方法。如果normComponents数组不足以容纳所有颜色和alpha组件(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException。如果obj变量为null,将分配一个新数组。如果obj不为null,它必须是transferType类型的原始数组;否则,将抛出ClassCastException。如果obj不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException
      覆盖:
      getDataElements 在类 ColorModel
      参数:
      normComponents - 一个包含归一化颜色和alpha分量的数组
      normOffset - 开始检索颜色和alpha分量的normComponents数组中的索引
      obj - 一个原始数据数组,用于保存返回的像素
      返回:
      一个Object,它是像素的原始数据数组表示
      抛出:
      ClassCastException - 如果obj不是类型为transferType的原始数组
      ArrayIndexOutOfBoundsException - 如果obj不足以容纳此ColorModel的像素值,或者normComponents数组不足以容纳从normOffset开始的所有颜色和alpha分量
      自:
      1.4
      参见:
    • getNormalizedComponents

      public float[] getNormalizedComponents(Object pixel, float[] normComponents, int normOffset)
      返回一个包含所有颜色/alpha分量的归一化形式的数组,给定此ColorModel中的像素。像素值由作为对象引用传递的transferType类型的数据元素数组指定。如果像素不是类型为transferType的原始数组,则会抛出ClassCastException。如果pixel不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。归一化分量是在由此ColorModelColorSpace对象指定的每个分量的最小值和最大值之间的浮点值。如果normComponents数组为null,将分配一个新数组。将返回normComponents数组。颜色/alpha分量存储在从normOffset开始的normComponents数组中(即使该数组是由此方法分配的)。如果normComponents数组不为null且不足以容纳所有颜色和alpha分量(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException

      如果子类设计为以非默认方式将像素样本值转换为颜色分量值,则必须重写此方法。此类实现的默认转换在类注释中有描述。任何实现非默认转换的子类必须遵循那里定义的允许转换的约束。

      覆盖:
      getNormalizedComponents 在类 ColorModel
      参数:
      pixel - 指定的像素
      normComponents - 用于接收归一化分量的数组
      normOffset - 开始存储归一化分量的normComponents数组中的偏移量
      返回:
      包含归一化颜色和alpha分量的数组。
      抛出:
      ClassCastException - 如果pixel不是类型为transferType的原始数组
      ArrayIndexOutOfBoundsException - 如果normComponents不足以容纳从normOffset开始的所有颜色和alpha分量
      ArrayIndexOutOfBoundsException - 如果pixel不足以容纳此ColorModel的像素值。
      自:
      1.4
    • coerceData

      public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
      强制光栅数据与isAlphaPremultiplied变量指定的状态匹配,假设数据当前由此ColorModel正确描述。它可能通过alpha乘法或除法,或者如果数据处于正确状态则不执行任何操作。如果需要强制数据,此方法还会返回一个适当设置isAlphaPremultiplied标志的此ColorModel的实例。由于ColorModel可以被子类化,子类继承此方法的实现,如果它们不覆盖它,则在使用不受支持的transferType时会抛出异常。
      覆盖:
      coerceData 在类 ColorModel
      参数:
      raster - WritableRaster数据
      isAlphaPremultiplied - 如果alpha是预乘的,则为true; 否则为false
      返回:
      代表强制数据的ColorModel对象。
      抛出:
      NullPointerException - 如果rasternull且需要数据强制。
      UnsupportedOperationException - 如果此ComponentColorModel的传输类型不是受支持的传输类型之一:DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE
    • isCompatibleRaster

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

      public WritableRaster createCompatibleWritableRaster(int w, int h)
      创建一个具有指定宽度和高度的WritableRaster,其数据布局(SampleModel)与此ColorModel兼容。
      覆盖:
      createCompatibleWritableRaster 在类 ColorModel
      参数:
      w - 您要创建的WritableRaster的宽度
      h - 您要创建的WritableRaster的高度
      返回:
      与此ColorModel兼容的WritableRaster
      参见:
    • createCompatibleSampleModel

      public SampleModel createCompatibleSampleModel(int w, int h)
      创建一个具有指定宽度和高度的SampleModel,其数据布局与此ColorModel兼容。
      覆盖:
      createCompatibleSampleModel 在类 ColorModel
      参数:
      w - 您要创建的SampleModel的宽度
      h - 您要创建的SampleModel的高度
      返回:
      与此ColorModel兼容的SampleModel
      参见:
    • isCompatibleSampleModel

      public boolean isCompatibleSampleModel(SampleModel sm)
      检查指定的SampleModel是否与此ColorModel兼容。
      覆盖:
      isCompatibleSampleModel 在类 ColorModel
      参数:
      sm - 要测试兼容性的SampleModel
      返回:
      如果SampleModel与此ColorModel兼容,则返回true;否则返回false
      参见:
    • getAlphaRaster

      public WritableRaster getAlphaRaster(WritableRaster raster)
      返回表示从输入Raster中提取的图像的alpha通道的Raster。此方法假定与此ColorModel关联的Raster对象将alpha通道(如果存在)存储为图像数据的最后一个通道。如果没有单独的空间alpha通道与此ColorModel关联,则返回null。此方法将创建一个新的Raster,但将共享数据数组。
      覆盖:
      getAlphaRaster 在类 ColorModel
      参数:
      raster - 从中提取alpha通道的WritableRaster
      返回:
      包含图像alpha通道的WritableRaster
    • equals

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

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