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