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

Class ComponentColorModel

  • All Implemented Interfaces:
    Transparency


    public class ComponentColorModel
    extends ColorModel
    一个ColorModel类,用于将颜色和alpha信息表示为单独样本的像素值,并将每个样本存储在单独的数据元素中。 这个类可以随意使用ColorSpace 像素值中的颜色样本数必须与ColorSpace的颜色成ColorSpace 可能有一个单一的α样本。

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

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

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

    对于具有无符号样本值的实例,仅当两个条件成立时才支持非标准化颜色/ alpha分量表示。 首先,样本值0必须映射到归一化分量值0.0和样本值2 n - 1到1.0。 第二, ColorSpace的所有颜色分量的最小/最大范围必须为0.0到1.0。 在这种情况下,分量表示是相应样本的n个最低有效位。 因此,每个分量是0和2 n -1之间的无符号积分值,其中n是特定分量的有效位数。 如果不满足这些条件,任何采用非规范化组件参数的方法将抛出一个IllegalArgumentException

    的实例ComponentColorModel用传输类型创建DataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE具有被视为有符号短,浮点型或双值的像素样本值。 这样的实例不支持非规范化的颜色/ alpha组件表示,所以在这些实例之一IllegalArgumentException时,任何采用这种表示形式作为参数的方法都将抛出一个IllegalArgumentException 该类的实例的归一化组件值具有取决于传输类型的范围,如下所示:对于浮动样本,浮点数据类型的全范围; 对于双样本,浮点数据类型的全范围(由铸造双倍浮动) 对于短样本,从大约-maxVal到+ maxVal,其中maxVal是ColorSpace (-32767映射到-maxVal,0映射到0.0,并且32767映射到+ maxVal)的每个分量最大值。 一个子类可以通过覆盖getNormalizedComponents(Object, float[], int)方法来覆盖短样本值到归一化分量值的getNormalizedComponents(Object, float[], int) 对于浮动和双样本,归一化分量值取为等于相应的样本值,子类不应尝试为这些传输类型添加任何非标识缩放。

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

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

    使用单个int像素表示形式的方法抛出IllegalArgumentException ,除非成分的用于数ComponentColorModel是一个和成分值是无符号的-使用的传输类型,换句话说,单一颜色分量DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或DataBuffer.TYPE_INT和没有阿尔法

    ComponentColorModel可以结合使用具有ComponentSampleModel ,一个BandedSampleModelPixelInterleavedSampleModel构建BufferedImage

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

      构造方法  
      Constructor 描述
      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
    • 方法摘要

      所有方法  接口方法  具体的方法 
      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 ,具有与此 ColorModel兼容的数据布局( SampleModel )。
      boolean equals​(Object obj)
      测试指定 Object是一个实例 ComponentColorModel和等于这个 ComponentColorModel
      int getAlpha​(int pixel)
      返回指定像素的alpha分量,从0到255。
      int getAlpha​(Object inData)
      返回指定像素的alpha分量,从0到255。
      WritableRaster getAlphaRaster​(WritableRaster raster)
      返回 Raster表示从输入 Raster提取的图像的Alpha通道。
      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分量数组,返回 intColorModel表示的像素值。
      int getDataElement​(int[] components, int offset)
      返回一个像这个 ColorModel的int表示的像素值,给出了一个非标准化颜色/ alpha分量的数组。
      Object getDataElements​(float[] normComponents, int normOffset, Object obj)
      给定一个归一化颜色/ alpha分量的数组,返回这个 ColorModel的一个像素的数据元素数组表示。
      Object getDataElements​(int[] components, int offset, Object obj)
      给出这个 ColorModel的一个像素的数据元素数组表示,给出了一个非标准化颜色/ alpha分量的数组。
      Object getDataElements​(int rgb, Object pixel)
      返回此 ColorModel中的像素的数据元素数组表示,给出了默认RGB颜色模型中的整数像素表示。
      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 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 hashCode​()
      返回此ComponentColorModel的哈希码。
      boolean isCompatibleRaster​(Raster raster)
      如果raster与此ColorModel兼容,则返回true; 假如不是的话。
      boolean isCompatibleSampleModel​(SampleModel sm)
      检查指定的 SampleModel是否与此 ColorModel兼容。
    • 构造方法详细信息

      • 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_FLOAT ,并DataBuffer.TYPE_DOUBLE 如果不为空,则bits数组指定每个颜色和alpha分量的有效位数,如果像素值中没有alpha信息,则其长度应至少为ColorSpace的组件数,或者如果有阿尔法信息。 transferTypeDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或DataBuffer.TYPE_DOUBLEbits数组参数被忽略。 hasAlpha指示是否存在α信息。 如果hasAlpha为真,则布尔值isAlphaPremultiplied指定如何在像素值中解释颜色和alpha样本。 如果布尔值为真,则假定颜色样本已被乘以α样本。 transparency指定可以通过此颜色模型表示哪些Alpha值。 可接受transparency值是OPAQUEBITMASKTRANSLUCENT transferType是用于表示像素值的原始数组的类型。
        参数
        colorSpace - 与此颜色模型相关联的 ColorSpace
        bits - 每个组件的有效位数。 可能为null,在这种情况下,所有组件样本的所有位都将显着。 如果transferType是DataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE之一, DataBuffer.TYPE_SHORT忽略,在这种情况下,所有组件样本的所有位都将显着。
        hasAlpha - 如果为true,此颜色模型支持alpha。
        isAlphaPremultiplied - 如果为真,则为预 isAlphaPremultiplied
        transparency - 指定此颜色模型可以表示哪些alpha值。
        transferType - 指定用于表示像素值的基本数组的类型。
        异常
        IllegalArgumentException -如果 bits数组参数不为空,其长度小于颜色和alpha分量的数量,并且是的transferType之一 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或 DataBuffer.TYPE_INT
        IllegalArgumentException -如果transferType时不是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或 DataBuffer.TYPE_DOUBLE
        另请参见:
        ColorSpaceTransparency
      • 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_FLOAT ,并DataBuffer.TYPE_DOUBLE 每个颜色和alpha分量的有效位数分别为8,16,32,66,32或64。 颜色分量的数量将是ColorSpace中组件的ColorSpace 如果hasAlphatrue将会有一个alpha组件。 如果hasAlpha为真,则布尔值isAlphaPremultiplied指定如何在像素值中解释颜色和alpha样本。 如果布尔值为真,则假定颜色样本已被乘以α样本。 transparency指定了此颜色模型可以表示哪些Alpha值。 可接受transparency值是OPAQUEBITMASKTRANSLUCENT transferType是用于表示像素值的原始数组的类型。
        参数
        colorSpace - 与此颜色模型相关联的 ColorSpace
        hasAlpha - 如果为true,此颜色模型支持alpha。
        isAlphaPremultiplied - 如果为真, isAlphaPremultiplied alpha预乘。
        transparency - 指定此颜色模型可以表示哪些Alpha值。
        transferType - 指定用于表示像素值的基本数组的类型。
        异常
        IllegalArgumentException -如果transferType时不是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或 DataBuffer.TYPE_DOUBLE
        从以下版本开始:
        1.4
        另请参见:
        ColorSpaceTransparency
    • 方法详细信息

      • getRed

        public int getRed​(int pixel)
        返回指定像素的红色分量,在默认RGB ColorSpace sRGB中从0到255。 必要时进行颜色转换。 像素值被指定为int。 返回的值将是非预倍增值。 如果alpha被预乘,则此方法在返回值之前将其除数(如果alpha值为0,则红色值为0)。
        Specified by:
        getRedColorModel
        参数
        pixel - 要从中获取红色分量的像素。
        结果
        指定像素的红色分量,作为int。
        异常
        IllegalArgumentException - 如果这个 ColorModel有多个组件。
        IllegalArgumentException - 如果此 ColorModel的组件值已经签名
      • getGreen

        public int getGreen​(int pixel)
        返回指定像素的绿色分量,在默认RGB ColorSpace sRGB中从0到255。 必要时进行颜色转换。 像素值被指定为int。 返回的值将是非预倍增值。 如果alpha被预乘,则该方法在返回值之前将其除数(如果alpha值为0,则绿色值为0)。
        Specified by:
        getGreenColorModel
        参数
        pixel - 要从中获取绿色成分的像素。
        结果
        指定像素的绿色分量,作为int。
        异常
        IllegalArgumentException - 如果这个 ColorModel有多个组件。
        IllegalArgumentException - 如果此 ColorModel的组件值已签名
      • getBlue

        public int getBlue​(int pixel)
        返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255。 必要时进行颜色转换。 像素值被指定为int。 返回的值将是非预倍增值。 如果alpha被预乘,则该方法在返回值之前将其除数(如果alpha值为0,则蓝色值为0)。
        Specified by:
        getBlueColorModel
        参数
        pixel - 要从中获取蓝色分量的像素。
        结果
        指定像素的蓝色分量,以int为单位。
        异常
        IllegalArgumentException - 如果这个 ColorModel有多个组件。
        IllegalArgumentException -如果此组件值 ColorModel签署
      • getAlpha

        public int getAlpha​(int pixel)
        返回指定像素的alpha分量,从0到255。像素值被指定为int。
        Specified by:
        getAlphaColorModel
        参数
        pixel - 要从中获取alpha分量的像素。
        结果
        指定像素的alpha分量,作为int。
        异常
        IllegalArgumentException - 如果这个 ColorModel有多个组件。
        IllegalArgumentException -如果此组件值 ColorModel签署
      • getRGB

        public int getRGB​(int pixel)
        以默认RGB颜色模型格式返回像素的颜色/ alpha分量。 必要时进行颜色转换。 返回的值将是非预先乘法格式。 如果alpha被预乘,则该方法将其从颜色分量中分离出来(如果alpha值为0,则颜色值将为0)。
        重写:
        getRGBColorModel
        参数
        pixel - 要从中获取颜色/ alpha分量的像素。
        结果
        指定像素的颜色/ alpha分量,作为int。
        异常
        IllegalArgumentException - 如果这个 ColorModel有多个组件。
        IllegalArgumentException - 如果此 ColorModel的组件值已经签名
        另请参见:
        ColorModel.getRGBdefault()
      • getRed

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

        public int getGreen​(Object inData)
        返回指定像素的绿色分量,在默认RGB ColorSpace (sRGB)中从0到255。 必要时进行颜色转换。 pixel值由作为对象引用传递的类型为transferType的数据元素数组指定。 返回的值是非预先乘以的值。 如果alpha被预乘,则该方法在返回值之前将其除数(如果alpha值为0,则绿色值为0)。 由于ComponentColorModel可以被子类化,子类继承了此方法的实现,如果它们不覆盖它,那么如果它们使用不支持的transferType它们将抛出异常。
        重写:
        getGreenColorModel
        参数
        inData - 要从中获取绿色分量的像素,由 transferType类型的数据元素数组指定。
        结果
        指定像素的绿色分量,作为int。
        异常
        ClassCastException - 如果 inData不是类型为 transferType的原始数组。
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能保持这个 ColorModel的像素值。
        UnsupportedOperationException -如果此的传输类型 ComponentColorModel是不支持的传输类型之一: DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或 DataBuffer.TYPE_DOUBLE
      • getBlue

        public int getBlue​(Object inData)
        返回指定像素的蓝色分量,在默认RGB ColorSpace (sRGB)中从0到255。 必要时进行颜色转换。 pixel值由作为对象引用传递的类型为transferType的数据元素数组指定。 返回的值是非预先乘以的值。 如果alpha被预乘,则该方法在返回值之前将其除数(如果alpha值为0,则蓝色值为0)。 由于ComponentColorModel可以被子类化,子类继承了此方法的实现,如果它们不覆盖它,那么如果使用不支持的transferType它们将抛出异常。
        重写:
        getBlueColorModel
        参数
        inData - 要从中获取蓝色分量的像素,由 transferType类型的数据元素数组指定。
        结果
        指定像素的蓝色分量,以int为单位。
        异常
        ClassCastException - 如果 inData不是类型为 transferType的原始数组。
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能保持这个 ColorModel的像素值。
        UnsupportedOperationException -如果此的传输类型 ComponentColorModel是不支持的传输类型之一: DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或 DataBuffer.TYPE_DOUBLE
      • getAlpha

        public int getAlpha​(Object inData)
        返回指定像素的alpha分量,从0到255进行比例。像素值由作为对象引用传入的数据元素数组transferType指定。 由于ComponentColorModel可以被子类化,子类继承了此方法的实现,如果它们不覆盖它,那么如果使用不支持的transferType它们将抛出异常。
        重写:
        getAlphaColorModel
        参数
        inData - 要从中获取alpha分量的像素,由 transferType类型的数据元素数组指定。
        结果
        指定像素的alpha分量,作为int。
        异常
        ClassCastException - 如果 inData不是类型为 transferType的原始数组。
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能容纳 ColorModel的像素值。
        UnsupportedOperationException -如果此的传输类型 ComponentColorModel是不支持的传输类型之一: DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或 DataBuffer.TYPE_DOUBLE
      • getRGB

        public int getRGB​(Object inData)
        以默认RGB颜色模型格式返回指定像素的颜色/ alpha分量。 必要时进行颜色转换。 像素值由作为对象引用传递的类型为transferType的数据元素数组指定。 返回的值为非预先乘法格式。 如果alpha被预乘,则该方法将其从颜色分量中分离出来(如果alpha值为0,则颜色值将为0)。 由于ComponentColorModel可以被子类化,子类继承了此方法的实现,如果它们不覆盖它,那么如果使用不支持的transferType ,则它们将抛出异常。
        重写:
        getRGBColorModel
        参数
        inData - 要从中获取颜色/ alpha分量的像素,由 transferType类型的数据元素数组指定。
        结果
        指定像素的颜色/ alpha分量,作为int。
        异常
        ClassCastException - 如果 inData不是类型为 transferType的原始数组。
        ArrayIndexOutOfBoundsException - 如果 inData不够大,不能保持这个 ColorModel的像素值。
        UnsupportedOperationException -如果此的传输类型 ComponentColorModel是不支持的传输类型之一: DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或 DataBuffer.TYPE_DOUBLE
        另请参见:
        ColorModel.getRGBdefault()
      • getDataElements

        public Object getDataElements​(int rgb,
                                      Object pixel)
        返回此ColorModel中的像素的数据元素数组表示,给出了默认RGB颜色模型中的整数像素表示。 然后可以将该数组传递给WritableRaster对象的setDataElements方法。 如果pixel参数为空,则分配一个新数组。 由于ComponentColorModel可以被子类化,子类继承了此方法的实现,如果它们不覆盖它,则如果使用不支持的transferType ,则它们会抛出异常。
        重写:
        getDataElementsColorModel
        参数
        rgb - RGB颜色模型中像素的整数表示
        pixel - 指定的像素
        结果
        这个 ColorModel中的像素的数据元素数组表示。
        异常
        ClassCastException - 如果 pixel不为空并且不是类型为 transferType的原始数组。
        ArrayIndexOutOfBoundsException - 如果 pixel不够大,不能保持这个 ColorModel的像素值。
        UnsupportedOperationException -如果此的传输类型 ComponentColorModel是不支持的传输类型之一: DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INTDataBuffer.TYPE_SHORTDataBuffer.TYPE_FLOAT ,或 DataBuffer.TYPE_DOUBLE
        另请参见:
        WritableRaster.setDataElements(int, int, java.lang.Object)SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
      • getComponents

        public int[] getComponents​(int pixel,
                                   int[] components,
                                   int offset)
        在这个ColorModel给出一个像素的返回一个非标准化颜色/ alpha分量的数组。 如果该ColorModel的组件值不方便地以非规范化形式表示,则会抛出IllegalArgumentException异常。 颜色/ alpha分量存储中components数组以offset (即使该阵列由这种方法分配的)。
        重写:
        getComponentsColorModel
        参数
        pixel - 指定为整数的像素值。
        components - 一个整数数组,用于存储非标准化颜色/ alpha分量。 如果components数组为空,则会分配一个新数组。
        offset - 一个偏移到 components数组。
        结果
        组件数组。
        异常
        IllegalArgumentException - 如果这个 ColorModel有多个组件。
        IllegalArgumentException - 如果这个 ColorModel不支持非规范化形式
        ArrayIndexOutOfBoundsException - 如果 components数组不为空,并且不够大以容纳所有颜色和alpha分量(从偏移开始)。
      • getComponents

        public int[] getComponents​(Object pixel,
                                   int[] components,
                                   int offset)
        在这个ColorModel给出了一个像素的非规范化颜色/ alpha分量的数组。 像素值由作为对象引用传入的数据元素transferType的数组指定。 如果此ColorModel的组件值不方便地以非规范化形式表示,则会抛出IllegalArgumentException异常。 颜色/ alpha分量存储中components数组以offset (即使该阵列由这种方法分配的)。 由于ComponentColorModel可以被子类化,子类继承了此方法的实现,并且如果它们不覆盖它,那么如果使用不支持的方法,则此方法可能会引发异常transferType
        重写:
        getComponentsColorModel
        参数
        pixel - 由 transferType类型的数据元素数组指定的像素值。
        components - 用于存储非标准化颜色/ alpha分量的整数数组。 如果components数组为空,则会分配一个新数组。
        offset - 一个偏移到 components数组。
        结果
        components阵列。
        异常
        IllegalArgumentException - 如果这个 ComponentColorModel不支持非规范化形式
        UnsupportedOperationException -在某些情况下,当且仅当该移交类型 ComponentColorModel不是以下传输类型之一: DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或 DataBuffer.TYPE_INT
        ClassCastException - 如果 pixel不是类型为 transferType的原始数组。
        IllegalArgumentException - 如果 components数组不为空,并且不够大,不足以容纳所有颜色和alpha分量(从偏移开始),或者如果 pixel不够大,不能持有该ColorModel的像素值。
      • getUnnormalizedComponents

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

        public int getDataElement​(int[] components,
                                  int offset)
        给出一个非标准化颜色/ alpha分量的数组,返回在这个 ColorModel以int表示的像素值。
        重写:
        getDataElementColorModel
        参数
        components - 非规范化颜色/ alpha组件的数组。
        offset - 一个偏移到 components数组。
        结果
        以int形式表示的像素值。
        异常
        IllegalArgumentException - 如果这个 ColorModel有多个组件。
        IllegalArgumentException - 如果这个 ComponentColorModel不支持非规范化形式
      • getDataElements

        public Object getDataElements​(int[] components,
                                      int offset,
                                      Object obj)
        给出一个非规范化颜色/ alpha分量的数组,返回此ColorModel中的像素的数据元素数组表示。 然后可以将该数组传递给WritableRaster对象的setDataElements方法。
        重写:
        getDataElementsColorModel
        参数
        components - 非规范化颜色/ alpha组件的数组。
        offset - components数组中的整数偏移量。
        obj - 存储像素的数据元素数组表示形式的对象。 如果obj变量为null,则会分配一个新数组。 如果obj不为空,则它必须是transferType类型的原始数组。 一个ArrayIndexOutOfBoundsException如果抛出obj不够大,不能保存这个像素值ColorModel 由于ComponentColorModel可以被子类化,子类继承了此方法的实现,如果它们不覆盖它,那么如果它们使用不支持的transferType它们将抛出异常。
        结果
        这个 ColorModel的一个像素的数据元素数组表示。
        异常
        IllegalArgumentException - 如果组件数组不够大以容纳所有颜色和alpha组件(从偏移开始)。
        ClassCastException - 如果 obj不为空并且不是类型为 transferType的原始数组。
        ArrayIndexOutOfBoundsException - 如果 obj不够大,不能保持这个 ColorModel的像素值。
        IllegalArgumentException - 如果这个 ComponentColorModel不支持非规范化形式
        UnsupportedOperationException -如果该转移型 ComponentColorModel不是以下传输类型之一: DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT ,或 DataBuffer.TYPE_INT
        另请参见:
        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)
        返回表示为一个像素值int在此ColorModel ,给定的归一化的颜色/ alpha分量的阵列。 这个方法会抛出一个IllegalArgumentException如果这个ColorModel像素值不方便地表示为一个int 一个ArrayIndexOutOfBoundsException ,如果被抛出normComponents阵列是没有大到足以容纳所有的颜色和alpha分量(开始于normOffset )。
        重写:
        getDataElementColorModel
        参数
        normComponents - 归一化颜色和alpha分量的数组
        normOffset - 索引到 normComponents开始检索颜色和alpha组件
        结果
        这个 int像素值在这个 ColorModel对应的指定组件。
        异常
        IllegalArgumentException - 如果这个 ColorModel像素值不方便地表示为一个 int
        ArrayIndexOutOfBoundsException - 如果 normComponents阵列不够大,不能容纳所有颜色和alpha组件,从 normOffset开始
        从以下版本开始:
        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
        重写:
        getDataElementsColorModel
        参数
        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 )。

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

        重写:
        getNormalizedComponentsColorModel
        参数
        pixel - 指定的像素
        normComponents - 一个接收归一化组件的数组
        normOffset - normComponents阵列的偏移量,用于开始存储归一化分量
        结果
        包含归一化颜色和alpha组件的数组。
        异常
        ClassCastException - 如果 pixel不是transferType类型的原始数组
        ArrayIndexOutOfBoundsException - 如果 normComponents不够大,不能容纳所有颜色和alpha组件,从 normOffset开始
        ArrayIndexOutOfBoundsException - 如果 pixel不够大,不能容纳 ColorModel的像素值。
        从以下版本开始:
        1.4
      • coerceData

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

        public boolean isCompatibleRaster​(Raster raster)
        如果raster与此ColorModel兼容,则返回true; 假如不是的话。
        重写:
        isCompatibleRasterColorModel
        参数
        raster - 要测试兼容性的 Raster对象。
        结果
        true如果 raster与此兼容 ColorModelfalse ,如果它不是。
      • createCompatibleWritableRaster

        public WritableRaster createCompatibleWritableRaster​(int w,
                                                             int h)
        创建具有指定宽度和高度的 WritableRaster ,具有与此 ColorModel兼容的数据布局( SampleModel )。
        重写:
        createCompatibleWritableRasterColorModel
        参数
        w - 您要创建的 WritableRaster的宽度。
        h - 要创建的 WritableRaster的高度。
        结果
        A WritableRaster与此兼容 ColorModel
        另请参见:
        WritableRasterSampleModel
      • createCompatibleSampleModel

        public SampleModel createCompatibleSampleModel​(int w,
                                                       int h)
        创建一个具有指定宽度和高度的 SampleModel ,具有与此 ColorModel兼容的数据布局。
        重写:
        createCompatibleSampleModelColorModel
        参数
        w - 您要创建的 SampleModel的宽度。
        h - 要创建的 SampleModel的高度。
        结果
        A SampleModel与此兼容 ColorModel
        另请参见:
        SampleModel
      • isCompatibleSampleModel

        public boolean isCompatibleSampleModel​(SampleModel sm)
        检查指定的 SampleModel是否与此 ColorModel兼容。
        重写:
        isCompatibleSampleModelColorModel
        参数
        sm - SampleModel测试兼容性。
        结果
        true如果 SampleModel与此兼容 ColorModelfalse ,如果它不是。
        另请参见:
        SampleModel
      • getAlphaRaster

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

        public boolean equals​(Object obj)
        测试指定 Object是一个实例 ComponentColorModel和等于这个 ComponentColorModel
        重写:
        equalsColorModel
        参数
        obj - Object测试平等
        结果
        true如果指定Object是的一个实例ComponentColorModel并且等于此ComponentColorModel ; 否则为false
        另请参见:
        Object.hashCode()HashMap