- java.lang.Object
-
- java.awt.image.ColorModel
-
- All Implemented Interfaces:
-
Transparency
- 已知直接子类:
-
ComponentColorModel,IndexColorModel,PackedColorModel
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引入了用于表示图像的其他类。 使用BufferedImage或RenderedImage对象,基于Raster和SampleModel类,像素值可能无法方便地表示为单个int。 因此,ColorModel现在具有接受表示为原始类型数组的像素值的方法。 特定ColorModel对象使用的原始类型称为其传输类型。ColorModel与图像ColorModel使用的对象,当调用单个int像素参数的方法时,像素值不能方便地表示为单个int抛出IllegalArgumentException。ColorModel子类必须指定发生这种情况的条件。 这不与DirectColorModel或IndexColorModel对象发生。目前,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匹配。 表示用于一个像素阵列中的元素的数量Raster和SampleModel(可从getNumDataElements这些类的方法)必须匹配的ColorModel。用于将像素值转换为颜色和α分量的算法因子类而异。 例如,从
BufferedImage对象的Raster和颜色/α分量的Raster获得的样本之间SampleModel是BufferedImage的。 即使存在这样的对应关系,样本中的比特数也不一定与相应颜色/α分量中的比特数相同。 每个子类必须指定如何从像素值到颜色/ alpha分量的转换。ColorModel类中的方法使用颜色和α分量的两种不同表示 - 标准化形式和非规范化形式。 在标准化形式中,每个组件是一些最小值和最大值之间的一个float值。 对于alpha组件,最小值为0.0,最大值为1.0。 对于颜色分量,可以从ColorSpace对象获取每个组件的最小值和最大值。 这些值通常为0.0和1.0(例如,默认sRGB颜色空间范围为0.0到1.0的标准化组件值),但某些颜色空间具有不同上限和下限的组件值。 这些限制可以使用ColorSpace类的getMinValue和getMaxValue方法获得。 归一化颜色分量值不是预乘。 所有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子类必须指定出现这种情况的条件。- 另请参见:
-
IndexColorModel,ComponentColorModel,PackedColorModel,DirectColorModel,Image,BufferedImage,RenderedImage,ColorSpace,SampleModel,Raster,DataBuffer
-
-
Field Summary
Fields Modifier and Type Field 描述 protected intpixel_bits像素中的总位数。protected inttransferType用于表示像素值的数组的数据类型。-
Fields inherited from interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 ColorModel(int bits)构造一个ColorModel,它将指定位数的像素转换为颜色/ alpha分量。protectedColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)构造一个将像素值转换为颜色/ alpha分量的ColorModel。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 ColorModelcoerceData(WritableRaster raster, boolean isAlphaPremultiplied)强制光栅数据与isAlphaPremultiplied变量中指定的状态相匹配,假设目前ColorModel正确描述了数据。SampleModelcreateCompatibleSampleModel(int w, int h)创建SampleModel具有指定的宽度和高度,具有与此兼容的数据布局ColorModel。WritableRastercreateCompatibleWritableRaster(int w, int h)创建WritableRaster具有指定的宽度和高度,其具有的数据布局(SampleModel)与此兼容ColorModel。booleanequals(Object obj)该方法简单地委托给Object的默认实现,这与==测试相同,因为该类不能在多个独立子类分支之间强制执行适当的等式测试的问题。voidfinalize()已过时。finalize方法已被弃用。 为了执行清理而覆盖finalize子类应该修改为使用替代清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()的规范。abstract intgetAlpha(int pixel)返回指定像素的alpha分量,从0到255。intgetAlpha(Object inData)返回指定像素的alpha分量,从0到255。WritableRastergetAlphaRaster(WritableRaster raster)返回Raster表示图像的alpha通道,从输入中提取Raster,提供此的像素值ColorModel表示颜色和alpha信息为独立的空间频带(例如abstract intgetBlue(int pixel)返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255。intgetBlue(Object inData)返回指定像素的蓝色分量,在默认RGBColorSpace(sRGB)中从0到255。ColorSpacegetColorSpace()返回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分量的位数的数组。intgetComponentSize(int componentIdx)返回指定颜色/ alpha分量的位数。intgetDataElement(float[] normComponents, int normOffset)返回表示为一个像素值int在此ColorModel,给定的归一化的颜色/ alpha分量的阵列。intgetDataElement(int[] components, int offset)返回表示为一个像素值int在此ColorModel,给定非标准化颜色/ alpha分量的阵列。ObjectgetDataElements(float[] normComponents, int normOffset, Object obj)给出这个ColorModel的一个像素的数据元素数组表示,给出了一组归一化的颜色/ alpha分量。ObjectgetDataElements(int[] components, int offset, Object obj)给出这个ColorModel的一个像素的数据元素数组表示,给出了一个非标准化颜色/ alpha分量的数组。ObjectgetDataElements(int rgb, Object pixel)返回此ColorModel中的像素的数据元素数组表示,给出了默认RGB颜色模型中的整数像素表示。abstract intgetGreen(int pixel)返回指定像素的绿色分量,在默认RGB ColorSpace sRGB中从0到255。intgetGreen(Object inData)返回指定像素的绿色分量,在默认RGBColorSpacesRGB中从0到255。float[]getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)给定一个非规范化的组件数组,以归一化形式返回所有颜色/ alpha分量的数组。float[]getNormalizedComponents(Object pixel, float[] normComponents, int normOffset)给出这个ColorModel一个像素,以归一化形式返回所有颜色/ alpha分量的ColorModel。intgetNumColorComponents()返回此ColorModel的颜色分量数。intgetNumComponents()返回此ColorModel的组件数,包括alpha。intgetPixelSize()返回此ColorModel描述的每像素的ColorModel。abstract intgetRed(int pixel)返回指定像素的红色分量,在默认RGB ColorSpace sRGB中从0到255。intgetRed(Object inData)返回指定像素的红色分量,从默认RGBColorSpace(sRGB)中的0到255。intgetRGB(int pixel)以默认RGB颜色模型格式返回像素的颜色/ alpha分量。intgetRGB(Object inData)以默认RGB颜色模型格式返回指定像素的颜色/ alpha分量。static ColorModelgetRGBdefault()返回一个DirectColorModel,它描述了AWT图像接口中许多方法中使用的整数RGB值的默认格式,以方便程序员。intgetTransferType()返回此ColorModel的传输类型。intgetTransparency()返回透明度。int[]getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)给定一个归一化的组件数组,以非规范化形式返回所有颜色/ alpha分量的数组。booleanhasAlpha()返回此ColorModel中是否支持ColorModel。inthashCode()该方法简单地委派到Object的默认实现,它返回该类的系统ID。booleanisAlphaPremultiplied()返回是否在此ColorModel要翻译的像素值中预先使用ColorModel。booleanisCompatibleRaster(Raster raster)如果raster与ColorModel和false兼容,则返回true。booleanisCompatibleSampleModel(SampleModel sm)检查SampleModel是否与此ColorModel兼容。StringtoString()返回ColorModel对象的内容的String表示。
-
-
-
构造方法详细信息
-
ColorModel
public ColorModel(int bits)
构造一个ColorModel,它将指定位数的像素转换为彩色/ alpha分量。 颜色空间是默认的RGBColorSpace,这是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表示是否存在α信息。booleanisAlphaPremultiplied指定如何解释将颜色和阿尔法信息表示为单独的空间带的像素值。 如果boolean是true,假设颜色样本已被乘以α样本。transparency指定此颜色模型可以表示哪些Alpha值。 传输类型是用于表示像素值的原始数组的类型。 请注意,位数组包含从像素值转换后每个颜色/ alpha分量的有效位数。 例如,对于一个IndexColorModel与pixel_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()
返回AlphaColorModel要翻译的像素值中是否已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分量的位数的数组
-
getTransparency
public int getTransparency()
返回透明度。 返回OPAQUE,BITMASK或TRANSLUCENT。- Specified by:
-
getTransparency在接口Transparency - 结果
-
该透明度为
ColorModel。 - 另请参见:
-
Transparency.OPAQUE,Transparency.BITMASK,Transparency.TRANSLUCENT
-
getNumComponents
public int getNumComponents()
返回此ColorModel的组件数,包括alpha。 这等于颜色分量的数量,可选加一个,如果有一个alpha分量。- 结果
-
该组件的数量在这
ColorModel
-
getNumColorComponents
public int getNumColorComponents()
返回此ColorModel中颜色分量的数量。 这是由ColorSpace.getNumComponents()返回的组件数。- 结果
-
这个
ColorModel的颜色分量的数量。 - 另请参见:
-
ColorSpace.getNumComponents()
-
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)
返回指定像素的红色分量,在默认RGBColorSpace(sRGB)中从0到255。 必要时进行颜色转换。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 返回的值是非预先乘以的值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,则红色值为0.如果inData不是transferType类型的原始数组,则抛出ClassCastException。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel。 如果transferType不支持,一个UnsupportedOperationException将被抛出。 由于ColorModel是抽象类,任何实例必须是子类的实例。 子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType比其他DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,或DataBuffer.TYPE_INT。- 参数
-
inData- 像素值数组 - 结果
- 指定像素的红色分量的值。
- 异常
-
ClassCastException-如果inData不是类型的基本数组transferType -
ArrayIndexOutOfBoundsException- 如果inData不够大,不能保持这个ColorModel的像素值 -
UnsupportedOperationException- 如果这transferType不支持此ColorModel
-
getGreen
public int getGreen(Object inData)
返回指定像素的绿色分量,在默认RGBColorSpace(sRGB)中从0到255。 必要时进行颜色转换。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 返回的值将是非预倍增值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,则绿色值为0.如果inData不是transferType类型的原始数组,则抛出一个ClassCastException。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel。 如果不支持这个transferType,将抛出一个UnsupportedOperationException。 由于ColorModel是一个抽象类,任何实例都必须是一个子类的实例。 子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType比其他DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,或DataBuffer.TYPE_INT。- 参数
-
inData- 像素值数组 - 结果
- 指定像素的绿色分量的值。
- 异常
-
ClassCastException-如果inData不是类型的基本数组transferType -
ArrayIndexOutOfBoundsException- 如果inData不够大,不能保持这个ColorModel的像素值 -
UnsupportedOperationException- 如果这个transferType不支持这个ColorModel
-
getBlue
public int getBlue(Object inData)
返回指定像素的蓝色分量,在默认RGBColorSpace(sRGB)中从0到255。 必要时进行颜色转换。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 返回的值是非预先乘以的值。 例如,如果alpha被预乘,则该方法在返回值之前将其分开。 如果alpha值为0,蓝色值将为0.如果inData不是transferType类型的原始数组,则抛出一个ClassCastException。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel。 如果transferType不支持,一个UnsupportedOperationException将被抛出。 由于ColorModel是一个抽象类,任何实例都必须是一个子类的实例。 子类继承此方法的实现,并且如果不重写,如果子类使用此方法抛出异常transferType比其他DataBuffer.TYPE_BYTE,DataBuffer.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_BYTE,DataBuffer.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()
-
getDataElements
public Object getDataElements(int rgb, Object pixel)
返回此ColorModel中的像素的数据元素数组表示,给出了默认RGB颜色模型中的整数像素表示。 然后可以将该数组传递给WritableRaster对象的WritableRaster.setDataElements(int, int, java.lang.Object)方法。 如果像素变量为null,则将分配一个新数组。 如果pixel不是null,它必须是transferType类型的基本数组; 否则,抛出一个ClassCastException。 一个ArrayIndexOutOfBoundsException如果抛出pixel不够大,不能保存这个像素值ColorModel。 返回像素数组。 如果transferType不支持,一个UnsupportedOperationException将被抛出。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法,因为该抽象类中的实现会抛出一个UnsupportedOperationException。- 参数
-
rgb- 默认RGB颜色模型中的整数像素表示 -
pixel- 指定的像素 - 结果
-
这个
ColorModel指定像素的数组表示。 - 异常
-
ClassCastException- 如果pixel不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果pixel不够大,可以持有这个ColorModel的像素值 -
UnsupportedOperationException- 如果此方法不支持此ColorModel - 另请参见:
-
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分量的数组。 像素值被指定为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分量的有效位数。
- 重写:
-
equals在Object - 参数
-
obj- 与之比较的参考对象。 - 结果
-
如果此对象与obj参数相同,
true; 否则为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。- 结果
-
这
ColorSpace的ColorModel。
-
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)
如果raster与raster兼容,ColorModel,false返回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 - 另请参见:
-
WritableRaster,SampleModel
-
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相关联的系统资源。- 重写:
-
finalize在Object - 另请参见:
-
WeakReference,PhantomReference
-
getAlphaRaster
public WritableRaster getAlphaRaster(WritableRaster raster)
返回Raster表示图像的alpha通道,从输入中提取Raster,提供此的像素值ColorModel表示颜色和alpha信息为独立的空间频带(例如ComponentColorModel和DirectColorModel)。 该方法假设与这样的ColorModel相关联的Raster对象存储了α波段(如果存在)作为最后的图像数据带。 返回null,如果有与此相关的独立空间alpha通道ColorModel。 如果这是一个IndexColorModel在查找表中有alpha,该方法将返回null因为没有空间离散的alpha通道。 此方法将创建一个新的Raster(但将共享数据数组)。 由于ColorModel是一个抽象类,任何实例都是一个子类的实例。 子类必须重写此方法以获得除了返回null以外的任何行为,因为此抽象类中的实现将返回null。- 参数
-
raster- 指定的Raster - 结果
-
一个
Raster表示图像的alpha通道,从指定的获得Raster。
-
-