- java.lang.Object
-
- java.awt.image.ColorModel
-
- 实现的所有接口
-
Transparency
- 已知直接子类:
-
ComponentColorModel
,IndexColorModel
,PackedColorModel
public abstract class ColorModelextends Objectimplements Transparency
ColorModel
抽象类封装了将像素值转换为颜色分量(例如,红色,绿色和蓝色)和alpha分量的方法。 为了将图像渲染到屏幕,打印机或其他图像,必须将像素值转换为颜色和alpha分量。 作为此类方法的参数或返回值,像素表示为32位整数或基本类型数组。 的数目,顺序,以及一个颜色分量的解释ColorModel
由其指定ColorSpace
。 与不包含alpha信息的像素数据ColorModel
使用的ColorModel
将所有像素视为不透明,这是alpha值1.0。此
ColorModel
类支持两个像素值表示。 像素值可以是单个32位int或基本类型数组。 Java(tm)Platform 1.0和1.1 API将像素表示为单个byte
或单个int
值。 出于ColorModel
类的目的,像素值参数作为int传递。 Java(tm)2 Platform API引入了用于表示图像的附加类。 对于BufferedImage
或RenderedImage
对象,基于Raster
和SampleModel
类,像素值可能无法方便地表示为单个int。 因此,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
。用于将像素值转换为颜色和alpha分量的算法因子类而异。 例如,存在不一定是从所获得的样品之间的一对一对应
SampleModel
一个的BufferedImage
对象的Raster
和颜色/ alpha分量。 即使存在这种对应关系,样本中的比特数也不一定与相应的颜色/α分量中的比特数相同。 每个子类必须指定如何完成从像素值到颜色/ alpha分量的转换。ColorModel
类中的方法使用颜色和alpha分量的两种不同表示 - 标准化形式和非标准化形式。 在归一化形式中,每个部件是float
一些最小值和最大值之间的值。 对于alpha分量,最小值为0.0,最大值为1.0。 对于颜色组件,可以从ColorSpace
对象获取每个组件的最小值和最大值。 这些值通常为0.0和1.0(例如,默认sRGB颜色空间的标准化组件值范围为0.0到1.0),但某些颜色空间的组件值具有不同的上限和下限。 可以使用ColorSpace
类的getMinValue
和getMaxValue
方法获得这些限制。 归一化的颜色分量值不是预乘的。 所有ColorModels
必须支持规范化表格。在非标准化形式中,每个分量是0到2 n -1之间的无符号整数值,其中n是特定分量的有效位数。 如果特定
ColorModel
像素值表示由alpha样本预乘的颜色样本,则还会对非标准化颜色分量值进行预乘。 非标准化形式仅用于ColorModel
的实例,其ColorSpace
的所有组件的最小组件值为0.0,所有组件的最大值为1.0。 颜色和alpha分量的非标准化形式可以是ColorModels
的方便表示,其标准化分量值都在0.0和1.0之间。 在这种情况下,积分值0映射到0.0,值2 n - 1映射到1.0。 在其他情况下,例如当归一化的分量值可以是负的或正的时,非标准化的形式是不方便的。 当调用涉及非标准化参数的方法时,这样的ColorModel
对象抛出IllegalArgumentException
。 子类ColorModel
必须指定发生这种情况的条件。- 另请参见:
-
IndexColorModel
,ComponentColorModel
,PackedColorModel
,DirectColorModel
,Image
,BufferedImage
,RenderedImage
,ColorSpace
,SampleModel
,Raster
,DataBuffer
-
-
字段汇总
字段 变量和类型 字段 描述 protected int
pixel_bits
像素中的总位数。protected int
transferType
用于表示像素值的数组的数据类型。-
Fields declared in interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT
-
-
构造方法摘要
构造方法 变量 构造器 描述 ColorModel(int bits)
构造一个ColorModel
,将指定位数的像素转换为颜色/ alpha分量。protected
ColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)
构造一个ColorModel
,将像素值转换为颜色/ alpha分量。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 弃用的方法 变量和类型 方法 描述 ColorModel
coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
强制栅格数据与isAlphaPremultiplied
变量中指定的状态匹配,假设此数据当前由此ColorModel
正确描述。SampleModel
createCompatibleSampleModel(int w, int h)
创建具有指定宽度和高度的SampleModel
,其数据布局与此ColorModel
兼容。WritableRaster
createCompatibleWritableRaster(int w, int h)
创建具有指定宽度和高度的WritableRaster
,其数据布局(SampleModel
)与此ColorModel
兼容。boolean
equals(Object obj)
此方法仅委托Object
的默认实现,这与==
测试相同,因为此类无法在多个独立子类分支之间强制执行适当的相等性测试。void
finalize()
已过时。finalize
方法已被弃用。abstract int
getAlpha(int pixel)
返回指定像素的alpha分量,从0到255缩放。int
getAlpha(Object inData)
返回指定像素的alpha分量,从0到255缩放。WritableRaster
getAlphaRaster(WritableRaster raster)
返回Raster
表示图像的alpha通道,从输入中提取Raster
,提供此的像素值ColorModel
代表颜色和alpha信息为独立的空间频带(例如abstract int
getBlue(int pixel)
返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255缩放。int
getBlue(Object inData)
返回指定像素的蓝色分量,在默认RGBColorSpace
(sRGB)中从0到255缩放。ColorSpace
getColorSpace()
返回ColorSpace
与此相关ColorModel
。int[]
getComponents(int pixel, int[] components, int offset)
返回此ColorModel
给定像素的非标准化颜色/ alpha分量ColorModel
。int[]
getComponents(Object pixel, int[] components, int offset)
返回此ColorModel
给定像素的非标准化颜色/ alpha分量ColorModel
。int[]
getComponentSize()
返回每个颜色/ alpha分量的位数数组。int
getComponentSize(int componentIdx)
返回指定颜色/ alpha分量的位数。int
getDataElement(float[] normComponents, int normOffset)
在给定一组标准化颜色/ alpha分量的情况下,返回此ColorModel
表示为int
的像素值。int
getDataElement(int[] components, int offset)
在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel
表示为int
的像素值。Object
getDataElements(float[] normComponents, int normOffset, Object obj)
在给定一组标准化颜色/ alpha分量的情况下,返回此ColorModel
像素的数据元素数组表示形式。Object
getDataElements(int[] components, int offset, Object obj)
在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel
像素的数据元素数组表示。Object
getDataElements(int rgb, Object pixel)
在给定默认RGB颜色模型中的整数像素表示的情况下,返回此ColorModel
像素的数据元素数组表示形式。abstract int
getGreen(int pixel)
返回指定像素的绿色分量,在默认RGB ColorSpace(sRGB)中从0到255缩放。int
getGreen(Object inData)
返回指定像素的绿色分量,在默认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
是否支持alpha。int
hashCode()
此方法仅委托Object
的默认实现,该实现返回类的系统ID。boolean
isAlphaPremultiplied()
返回是否已在此ColorModel
要转换的像素值中预乘alpha。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)
构造一个ColorModel
,将像素值转换为颜色/ alpha分量。 颜色组件将在指定的ColorSpace
。pixel_bits
是像素值中的位数。 bits数组指定每种颜色和alpha分量的有效位数。 如果像素值中没有alpha信息,则其长度应为ColorSpace
的组件数,如果存在alpha信息,则应为此数字的一个以上。hasAlpha
指示是否存在字母信息。boolean
isAlphaPremultiplied
指定如何解释像素值,其中颜色和alpha信息表示为单独的空间带。 如果boolean
是true
,则假定颜色样本已乘以alpha样本。transparency
指定此颜色模型可以表示的alpha值。 传输类型是用于表示像素值的基本数组的类型。 注意,位数组包含从像素值转换后每个颜色/ alpha分量的有效位数。 例如,对于IndexColorModel
其中pixel_bits
等于16,位数组可能有四个元素,每个元素设置为8。- 参数
-
pixel_bits
- 像素值中的位数 -
bits
- 指定每种颜色和alpha分量的有效位数的数组 -
cspace
- 指定的ColorSpace
-
hasAlpha
-true
如果存在alpha信息; 否则为false
-
isAlphaPremultiplied
-true
如果假设颜色样本被alpha样本预乘; 否则为false
-
transparency
- 此颜色模型可以表示哪些alpha值 -
transferType
- 用于表示像素值的数组的类型 - 异常
-
IllegalArgumentException
- 如果位数组的长度小于此ColorModel
的颜色或alpha分量的ColorModel
,或者透明度不是有效值。 -
IllegalArgumentException
-如果在比特数的总和bits
小于1,或者如果在任何的元素bits
小于0。 - 另请参见:
-
Transparency
-
-
方法详细信息
-
getRGBdefault
public static ColorModel getRGBdefault()
返回DirectColorModel
,它描述了AWT图像接口中许多方法中使用的整数RGB值的默认格式,以方便程序员。 颜色空间是默认的ColorSpace
,sRGB。 RGB值的格式是一个整数,其中8位,α,红,绿和蓝颜色分量,从最高有效字节到最低有效字节相应排序,如:0xAARRGGBB。 颜色分量不会被alpha分量预乘。 此格式不一定代表特定设备或所有图像的本机或最高效ColorModel
。 它仅用作常见的颜色模型格式。- 结果
- 描述默认RGB值的
DirectColorModel
对象。
-
hasAlpha
public final boolean hasAlpha()
返回此ColorModel
是否支持alpha。- 结果
-
true
如果此ColorModel
支持alpha; 否则为false
。
-
isAlphaPremultiplied
public final boolean isAlphaPremultiplied()
返回是否已在此ColorModel
要转换的像素值中预乘alpha。 如果布尔值为true
,则此ColorModel
将用于解释像素值,其中颜色和alpha信息表示为单独的空间带,并且假设颜色样本已乘以alpha样本。- 结果
-
true
如果alpha值在要由此ColorModel
转换的像素值中预乘; 否则为false
。
-
getTransferType
public final int getTransferType()
返回此ColorModel
的传输类型。 传输类型是用于将像素值表示为数组的基本数组的类型。- 结果
- 转移类型。
- 从以下版本开始:
- 1.3
-
getPixelSize
public int getPixelSize()
返回此ColorModel
描述的每像素的ColorModel
。- 结果
- 每个像素的位数。
-
getComponentSize
public int getComponentSize(int componentIdx)
返回指定颜色/ alpha分量的位数。 颜色组件按照ColorSpace
指定的顺序编制索引。 通常,此顺序反映颜色空间类型的名称。 例如,对于TYPE_RGB,索引0对应于红色,索引1对应于绿色,索引2对应于蓝色。 如果此ColorModel
支持alpha,则alpha分量对应于最后一个颜色分量后面的索引。- 参数
-
componentIdx
- 颜色/ alpha分量的索引 - 结果
- 指定索引处颜色/ alpha分量的位数。
- 异常
-
ArrayIndexOutOfBoundsException
- 如果componentIdx
大于组件数或小于零 -
NullPointerException
- 如果位数组是null
-
getComponentSize
public int[] getComponentSize()
返回每个颜色/ alpha分量的位数数组。 该数组按照ColorSpace
指定的顺序包含颜色分量,后跟alpha分量(如果存在)。- 结果
- 每个颜色/ alpha分量的位数组
-
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。 一个IllegalArgumentException
如果这个像素值抛出ColorModel
不便于表示为一个单个int。 返回值是非预乘值。 例如,如果alpha是预乘的,则此方法在返回值之前将其分开。 如果alpha值为0,则绿色值为0。- 参数
-
pixel
- 指定的像素 - 结果
- 指定像素的绿色分量的值。
-
getBlue
public abstract int getBlue(int pixel)
返回指定像素的蓝色分量,在默认RGB ColorSpace(sRGB)中从0到255缩放。 必要时进行颜色转换。 像素值指定为int。 一个IllegalArgumentException
如果这个像素值抛出ColorModel
不便于表示为一个单个int。 返回值是非预乘的值,例如,如果alpha是预乘的,则此方法在返回值之前将其除去。 如果alpha值为0,则蓝色值为0。- 参数
-
pixel
- 指定的像素 - 结果
- 指定像素的蓝色分量的值。
-
getAlpha
public abstract int getAlpha(int pixel)
返回指定像素的alpha分量,从0到255缩放。像素值指定为int。 一个IllegalArgumentException
如果这个像素值抛出ColorModel
不便于表示为一个单个int。- 参数
-
pixel
- 指定的像素 - 结果
- 指定像素的alpha分量的值。
-
getRGB
public int getRGB(int pixel)
以默认RGB颜色模型格式返回像素的颜色/ alpha分量。 必要时进行颜色转换。 像素值指定为int。 如果此ColorModel
像素值不能方便地表示为单个int,IllegalArgumentException
抛出ColorModel
。 返回的值采用非预乘格式。 例如,如果alpha是预乘的,则此方法将其除以颜色分量。 如果alpha值为0,则颜色值为0。- 参数
-
pixel
- 指定的像素 - 结果
- 指定像素的颜色/ alpha分量的RGB值。
- 另请参见:
-
getRGBdefault()
-
getRed
public int getRed(Object inData)
返回指定像素的红色分量,在默认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)
在给定默认RGB颜色模型中的整数像素表示的情况下,返回此ColorModel
像素的数据元素数组表示形式。 然后可以将此数组传递给WritableRaster
对象的WritableRaster.setDataElements(int, int, java.lang.Object)
方法。 如果像素变量为null
,则将分配新数组。 如果pixel
不是null
,则它必须是类型为transferType
的基本数组; 否则,抛出ClassCastException
。 一个ArrayIndexOutOfBoundsException
如果抛出pixel
不够大,不能保存这个像素值ColorModel
。 返回像素阵列。 如果这个transferType
不支持,一个UnsupportedOperationException
将被抛出。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现将抛出UnsupportedOperationException
。- 参数
-
rgb
- 默认RGB颜色模型中的整数像素表示 -
pixel
- 指定的像素 - 结果
- 此
ColorModel
指定像素的数组表示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分量ColorModel
。 像素值指定为int
。 一个IllegalArgumentException
如果此像素值将被抛出ColorModel
不便于表示为一个单一的int
,或者如果该颜色分量的值ColorModel
不在非标准化形式表示的方便。 例如,此方法可用于检索DirectColorModel
特定像素值的DirectColorModel
。 如果组件数组是null
,则将分配新阵列。 将返回组件数组。 颜色/ alpha分量存储在组件数组中,从offset
开始(即使数组是通过此方法分配的)。 一个ArrayIndexOutOfBoundsException
如果components数组是不被抛出null
,不足够大以容纳所有的颜色和alpha分量(以偏移量开始)。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数
-
pixel
- 指定的像素 -
components
- 用于接收指定像素的颜色和alpha分量的数组 -
offset
- 进入components
数组的偏移量,开始存储颜色和alpha分量 - 结果
- 一个数组,包含从指定偏移量开始的指定像素的颜色和alpha分量。
- 异常
-
UnsupportedOperationException
-如果此方法不受此支持ColorModel
-
getComponents
public int[] getComponents(Object pixel, int[] components, int offset)
返回此ColorModel
给定像素的非标准化颜色/ alpha分量ColorModel
。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 如果pixel
不是transferType类型的基本数组,则抛出ClassCastException
。 一个IllegalArgumentException
如果这种颜色成分值会被抛出ColorModel
不便于用非标准化形式表示。 一个ArrayIndexOutOfBoundsException
如果抛出pixel
不够大,不能保存这个像素值ColorModel
。 此方法可用于检索任何ColorModel
特定像素值的ColorModel
。 如果组件数组是null
,则将分配新阵列。 将返回组件数组。 颜色/ alpha分量存储中components
数组以offset
(即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException
如果components数组是不被抛出null
,不足够大以容纳所有的颜色和alpha分量(开始于offset
)。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现将抛出UnsupportedOperationException
。- 参数
-
pixel
- 指定的像素 -
components
- 接收指定像素的颜色和alpha分量的数组 -
offset
- 进入components
数组的索引,在该数组中开始存储指定像素的颜色和alpha分量 - 结果
- 一个数组,包含从指定偏移量开始的指定像素的颜色和alpha分量。
- 异常
-
UnsupportedOperationException
-如果此方法不受此支持ColorModel
-
getUnnormalizedComponents
public int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset)
在给定标准化组件数组的情况下,以非标准化形式返回所有颜色/ alpha分量的数组。 非标准化分量是0到2 n -1之间的无符号整数值,其中n是特定分量的位数。 正规化成分是每分量最小和最大由指定之间的浮点值ColorSpace
对象此ColorModel
。 一个IllegalArgumentException
如果这种颜色成分值会被抛出ColorModel
不便于用非标准化形式表示。 如果components
阵列是null
,则将分配新阵列。 将返回components
数组。 颜色/ alpha分量存储中components
数组以offset
(即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException
如果被抛出components
数组不null
,不足够大以容纳所有的颜色和alpha分量(开始于offset
)。 一个IllegalArgumentException
如果抛出normComponents
阵列是不是大到足以容纳所有开始在颜色和alpha分量normOffset
。- 参数
-
normComponents
- 包含规范化组件的数组 -
normOffset
- 要开始检索规范化组件的normComponents
数组的偏移量 -
components
- 从normComponents
接收组件的阵列 -
offset
-索引为components
,从此处开始从存储标准化分量normComponents
- 结果
- 包含非标准化颜色和alpha分量的数组。
- 异常
-
IllegalArgumentException
- 如果此ColorModel
的组件值不能以非标准化形式方便地表示。 -
IllegalArgumentException
- 如果长度normComponents
减去normOffset
小于numComponents
-
UnsupportedOperationException
- 如果此ColorModel
的构造ColorModel
调用了super(bits)
构造函数,但未覆盖此方法。 请参阅构造函数,ColorModel(int)
。
-
getNormalizedComponents
public float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset)
在给定非标准化组件数组的情况下,以规范化形式返回所有颜色/ alpha分量的数组。 非标准化分量是0到2 n -1之间的无符号整数值,其中n是特定分量的位数。 正规化成分是每分量最小和最大由指定之间的浮点值ColorSpace
对象此ColorModel
。 一个IllegalArgumentException
如果这种颜色成分值会被抛出ColorModel
不便于用非标准化形式表示。 如果normComponents
阵列是null
,则将分配新阵列。 将返回normComponents
数组。 颜色/ alpha分量存储中normComponents
数组以normOffset
(即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException
如果被抛出normComponents
数组不null
,不足够大以容纳所有的颜色和alpha分量(开始于normOffset
)。 一个IllegalArgumentException
如果抛出components
阵列是不是大到足以容纳所有开始在颜色和alpha分量offset
。由于
ColorModel
是一个抽象类,因此任何实例都是子类的实例。 此抽象类中此方法的默认实现假定此类的组件值可以非标准化形式方便地表示。 因此,可能具有不支持非标准化形式的实例的子类必须覆盖此方法。- 参数
-
components
- 包含非标准化组件的数组 -
offset
-components
数组的偏移量,开始检索非标准化组件 -
normComponents
- 接收规范化组件的数组 -
normOffset
- 要开始存储规范化组件的normComponents
索引 - 结果
- 包含标准化颜色和alpha分量的数组。
- 异常
-
IllegalArgumentException
- 如果此ColorModel
的组件值不能以非标准化形式方便地表示。 -
UnsupportedOperationException
- 如果此ColorModel
的构造ColorModel
调用了super(bits)
构造函数,但未覆盖此方法。 请参见构造函数,ColorModel(int)
。 -
UnsupportedOperationException
- 如果此方法无法确定每个组件的位数
-
getDataElement
public int getDataElement(int[] components, int offset)
在给定一组非标准化颜色/ alpha分量的情况下,返回在此ColorModel
表示为int
的像素值。 如果此ColorModel
组件值不能方便地表示为单个int
或者此ColorModel
颜色组件值不能以非标准化形式方便地表示,则此方法将抛出IllegalArgumentException
。 一个ArrayIndexOutOfBoundsException
如果被抛出components
阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset
)。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数
-
components
- 非标准化颜色和alpha分量的数组 -
offset
- 开始检索颜色和alpha分量的components
索引 - 结果
- 此
ColorModel
对应于指定组件的int
像素值。 - 异常
-
IllegalArgumentException
- 如果此ColorModel
像素值不能方便地表示为单个int
-
IllegalArgumentException
- 如果此ColorModel
组件值不能以非标准化形式方便地表示 -
ArrayIndexOutOfBoundsException
- 如果components
数组不足以容纳从offset
开始的所有颜色和alpha分量 -
UnsupportedOperationException
-如果此方法不受此支持ColorModel
-
getDataElements
public Object getDataElements(int[] components, int offset, Object obj)
在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel
像素的数据元素数组表示。 然后可以将此数组传递给WritableRaster
对象的setDataElements
方法。 如果此ColorModel
颜色分量值不能以非标准化形式方便地表示,则此方法将抛出IllegalArgumentException
。 一个ArrayIndexOutOfBoundsException
如果被抛出components
阵列是没有大到足以容纳所有的颜色和alpha分量(开始于offset
)。 如果obj
变量为null
,则将分配新数组。 如果obj
不是null
,则它必须是transferType类型的基本数组; 否则,抛出ClassCastException
。 一个ArrayIndexOutOfBoundsException
如果抛出obj
不够大,不能保存这个像素值ColorModel
。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数
-
components
- 非标准化颜色和alpha分量的数组 -
offset
- 开始检索颜色和alpha分量的components
索引 -
obj
- 表示颜色和alpha分量数组的Object
- 结果
-
Object
表示颜色和alpha分量的数组。 - 异常
-
ClassCastException
- 如果obj
不是类型transferType
的基本数组 -
ArrayIndexOutOfBoundsException
- 如果obj
不足以容纳此ColorModel
的像素值,或者components
数组不足以容纳从offset
开始的所有颜色和alpha分量 -
IllegalArgumentException
- 如果此ColorModel
组件值不能以非标准化形式方便地表示 -
UnsupportedOperationException
-如果此方法不受此支持ColorModel
- 另请参见:
-
WritableRaster.setDataElements(int, int, java.lang.Object)
,SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
-
getDataElement
public int getDataElement(float[] normComponents, int normOffset)
在给定一组标准化颜色/ alpha分量的情况下,返回此ColorModel
表示为int
的像素值。 此方法将抛出IllegalArgumentException
如果这个像素值ColorModel
不是作为一个便于表示int
。 一个ArrayIndexOutOfBoundsException
如果被抛出normComponents
阵列是没有大到足以容纳所有的颜色和alpha分量(开始于normOffset
)。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 此抽象类中此方法的默认实现首先从规范化形式转换getDataElement(int[], int)
标准化形式,然后调用getDataElement(int[], int)
。 可能具有不支持非标准化形式的实例的子类必须覆盖此方法。- 参数
-
normComponents
- 标准化颜色和alpha分量的数组 -
normOffset
-索引为normComponents
,从此处开始检索颜色和alpha分量 - 结果
- 此
ColorModel
与指定组件对应的int
像素值。 - 异常
-
IllegalArgumentException
- 如果此ColorModel
像素值不能方便地表示为单个int
-
ArrayIndexOutOfBoundsException
- 如果normComponents
数组不足以容纳从normOffset
开始的所有颜色和alpha分量 - 从以下版本开始:
- 1.4
-
getDataElements
public Object getDataElements(float[] normComponents, int normOffset, Object obj)
在给定一个标准化颜色/ alpha分量数组的情况下,返回此ColorModel
像素的数据元素数组表示形式。 然后可以将此数组传递给WritableRaster
对象的setDataElements
方法。 一个ArrayIndexOutOfBoundsException
如果被抛出normComponents
阵列是没有大到足以容纳所有的颜色和alpha分量(开始于normOffset
)。 如果obj
变量为null
,则将分配新数组。 如果obj
不是null
,则它必须是transferType类型的基本数组; 否则,抛出ClassCastException
。 一个ArrayIndexOutOfBoundsException
如果抛出obj
不够大,不能保存这个像素值ColorModel
。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 此抽象类中此方法的默认实现首先从规范化形式转换getDataElement(int[], int, Object)
标准化形式,然后调用getDataElement(int[], int, Object)
。 可能具有不支持非标准化形式的实例的子类必须覆盖此方法。- 参数
-
normComponents
- 标准化颜色和alpha分量的数组 -
normOffset
-索引为normComponents
在开始检索颜色和alpha分量 -
obj
- 用于保存返回像素的原始数据数组 - 结果
-
Object
,它是像素的原始数据阵列表示 - 异常
-
ClassCastException
- 如果obj
不是类型transferType
的基本数组 -
ArrayIndexOutOfBoundsException
- 如果obj
不足以容纳此ColorModel
的像素值,或者normComponents
数组不足以容纳从normOffset
开始的所有颜色和alpha分量 - 从以下版本开始:
- 1.4
- 另请参见:
-
WritableRaster.setDataElements(int, int, java.lang.Object)
,SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
-
getNormalizedComponents
public float[] getNormalizedComponents(Object pixel, float[] normComponents, int normOffset)
在给定ColorModel
的像素的情况下,返回标准化形式的所有颜色/ alpha分量的ColorModel
。 像素值由作为对象引用传入的transferType类型的数据元素数组指定。 如果pixel不是transferType类型的基本数组,则抛出ClassCastException
。 一个ArrayIndexOutOfBoundsException
如果抛出pixel
不够大,不能保存这个像素值ColorModel
。 正规化成分是每分量最小和最大由指定之间的浮点值ColorSpace
对象此ColorModel
。 如果normComponents
阵列为null
,则将分配新阵列。 将返回normComponents
数组。 颜色/ alpha分量存储中normComponents
数组以normOffset
(即使该阵列由这种方法分配的)。 一个ArrayIndexOutOfBoundsException
如果被抛出normComponents
数组不null
,不足够大以容纳所有的颜色和alpha分量(开始于normOffset
)。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 此抽象类中此方法的默认实现首先使用getComponents(Object, int[], int)
以非标准化形式检索颜色和alpha分量,然后调用getNormalizedComponents(int[], int, float[], int)
。 可能具有不支持非标准化形式的实例的子类必须覆盖此方法。- 参数
-
pixel
- 指定的像素 -
normComponents
- 用于接收规范化组件的数组 -
normOffset
- 进入normComponents
数组的偏移量,开始存储规范化组件 - 结果
- 包含标准化颜色和alpha分量的数组。
- 异常
-
ClassCastException
- 如果pixel
不是transferType类型的基本数组 -
ArrayIndexOutOfBoundsException
- 如果normComponents
不足以容纳从normOffset
开始的所有颜色和alpha分量 -
ArrayIndexOutOfBoundsException
- 如果pixel
不足以容纳此ColorModel
的像素值。 -
UnsupportedOperationException
- 如果此ColorModel
的构造ColorModel
调用了super(bits)
构造函数,但未覆盖此方法。 请参阅构造函数,ColorModel(int)
。 -
UnsupportedOperationException
- 如果此方法无法确定每个组件的位数 - 从以下版本开始:
- 1.4
-
equals
public boolean equals(Object obj)
此方法仅委托Object
的默认实现,这与==
测试相同,因为此类无法在多个独立子类分支之间强制执行适当的相等性测试。 除了对ColorModel
的以下常见基本属性进行相等性测试之外,鼓励子类重写此方法并为其自己的属性提供相等性测试:- 支持alpha组件。
- 是alpha预乘。
- 每像素的位数。
- 透明类型,如不透明,位掩码或半透明。
- 像素中的组件数。
-
ColorSpace
类型。 - 用于表示像素值的数组类型。
- 每种颜色和alpha分量的有效位数。
- 重写:
-
equals
在类Object
- 参数
-
obj
- 要与之比较的引用对象。 - 结果
-
true
如果此对象与obj参数相同; 否则为false
。 - 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
此方法仅委托Object
的默认实现,该实现返回类的系统ID。 除了散列以下常见基本属性ColorModel
的值之外,还鼓励子类重写此方法并为其自己的属性提供哈希:- 支持alpha组件。
- 是alpha预乘。
- 每像素的位数。
- 透明类型,如不透明,位掩码或半透明。
- 像素中的组件数。
-
ColorSpace
类型。 - 用于表示像素值的数组类型。
- 每种颜色和alpha分量的有效位数。
- 重写:
-
hashCode
在课程Object
- 结果
- 此对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
getColorSpace
public final ColorSpace getColorSpace()
返回ColorSpace
与此相关ColorModel
。- 结果
-
ColorSpace
的ColorModel
。
-
coerceData
public ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
强制栅格数据与isAlphaPremultiplied
变量中指定的状态匹配,假设此数据当前由此ColorModel
正确描述。 它可以将颜色栅格数据乘以或除以alpha,或者如果数据处于正确状态则不执行任何操作。 如果需要强制数据,此方法还将返回此ColorModel
的实例,并isAlphaPremultiplied
设置isAlphaPremultiplied
标志。 此方法将抛出一个UnsupportedOperationException
,如果它不受此支持ColorModel
。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException
。- 参数
-
raster
-WritableRaster
数据 -
isAlphaPremultiplied
-true
如果alpha被预乘; 否则为false
- 结果
- 一个
ColorModel
对象,表示强制数据。
-
isCompatibleRaster
public boolean isCompatibleRaster(Raster raster)
返回true
如果raster
与此兼容ColorModel
和false
,如果事实并非如此。 由于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()
Deprecated.Thefinalize
method has been deprecated. Subclasses that overridefinalize
in order to perform cleanup should be modified to use alternative cleanup mechanisms and to remove the overridingfinalize
method. When overriding thefinalize
method, its implementation must explicitly ensure thatsuper.finalize()
is invoked as described inObject.finalize()
. See the specification forObject.finalize()
for further information about migration options.一旦此ColorModel
不再被引用,则处置与此ColorModel
相关联的系统资源。- 重写:
-
finalize
类Object
- 另请参见:
-
WeakReference
,PhantomReference
-
getAlphaRaster
public WritableRaster getAlphaRaster(WritableRaster raster)
返回Raster
表示图像的alpha通道,从输入中提取Raster
,提供此的像素值ColorModel
代表颜色和alpha信息为独立的空间频带(例如ComponentColorModel
和DirectColorModel
)。 该方法假定与这样的ColorModel
相关联的Raster
对象存储α带(如果存在)作为图像数据的最后一个带。 返回null
如果没有与此相关的独立空间alpha通道ColorModel
。 如果这是在查找表中具有alpha的IndexColorModel
,则此方法将返回null
因为没有空间离散的alpha通道。 此方法将创建一个新的Raster
(但将共享数据数组)。 由于ColorModel
是一个抽象类,因此任何实例都是子类的实例。 子类必须重写此方法才能获得除返回null
之外的任何行为,因为此抽象类中的实现返回null
。- 参数
-
raster
- 指定的Raster
- 结果
- a
Raster
表示从指定的Raster
获得的图像的alpha通道。
-
-