- 所有已实现的接口:
-
透明度
- 直接已知的子类:
-
ComponentColorModel,IndexColorModel,PackedColorModel
ColorModel 抽象类封装了将像素值转换为颜色组件(例如红色、绿色和蓝色)和一个 alpha 组件的方法。为了将图像呈现到屏幕、打印机或另一个图像上,像素值必须转换为颜色和 alpha 组件。作为该类方法的参数或返回值,像素表示为 32 位整数或基本类型数组。颜色空间指定了 ColorModel 的颜色组件的数量、顺序和解释。用于不包含 alpha 信息的像素数据的 ColorModel 将所有像素视为不透明,即 alpha 值为 1.0。
这个 ColorModel 类支持两种像素值的表示。像素值可以是单个 32 位整数或基本类型数组。Java(tm) 平台 1.0 和 1.1 API 将像素表示为单个 byte 或单个 int 值。对于 ColorModel 类的目的,像素值参数被传递为整数。Java(tm) 2 平台 API 引入了用于表示图像的附加类。使用基于 BufferedImage 或 RenderedImage 对象,基于 Raster 和 SampleModel 类,像素值可能无法方便地表示为单个整数。因此,ColorModel 现在具有接受基本类型数组表示的像素值的方法。特定 ColorModel 对象使用的基本类型称为其传输类型。
用于像素值不方便表示为单个整数的图像的 ColorModel 对象在调用接受单个整数像素参数的方法时会抛出 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。大多数渲染操作在使用基于前三种类型的 ColorModels 和图像时会执行得更快。此外,某些图像过滤操作不支持基于后三种类型的 ColorModels 和图像。在创建对象时,特定 ColorModel 对象的传输类型是在创建时显式指定或默认指定的。所有 ColorModel 的子类必须指定可能的传输类型以及如何确定表示像素的基本数组中元素的数量。
对于 BufferedImages,其 Raster 的传输类型和 Raster 对象的 SampleModel(可以从这些类的 getTransferType 方法中获取)必须与 ColorModel 的传输类型匹配。表示像素的数组中元素的数量(可以从这些类的 getNumDataElements 方法中获取)必须与 ColorModel 的数量匹配。
用于从像素值转换为颜色和 alpha 组件的算法因子类而异。例如,从 BufferedImage 对象的 Raster 的 SampleModel 获取的样本与颜色/alpha 组件之间不一定有一一对应关系。即使存在这样的对应关系,样本中的位数也不一定与相应颜色/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 和 2n - 1 之间的无符号整数值,其中 n 是特定组件的有效位数。如果特定 ColorModel 的像素值表示颜色样本经 alpha 样本预乘,则非规范化颜色组件值也经过预乘。非规范化形式仅用于具有所有组件的最小值为 0.0 和所有组件的最大值为 1.0 的 ColorModel 实例。对于所有规范化组件值都介于 0.0 和 1.0 之间的 ColorModels,非规范化形式可以是一种便捷的表示形式。在这种情况下,整数值 0 映射到 0.0,值 2n - 1 映射到 1.0。在其他情况下,例如当规范化组件值可以是负数或正数时,非规范化形式不方便。这样的 ColorModel 对象在调用涉及非规范化参数的方法时会抛出 IllegalArgumentException。 ColorModel 的子类必须指定发生这种情况的条件。
- 参见:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int像素中的总位数。protected int用于表示像素值的数组的数据类型。Fields declared in interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT -
Constructor Summary
ConstructorsModifierConstructorDescriptionColorModel(int bits) 构造一个将指定位数的像素转换为颜色/alpha 组件的ColorModel。protectedColorModel(int pixel_bits, int[] bits, ColorSpace cspace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType) 构造一个将像素值转换为颜色/alpha 组件的ColorModel。 -
Method Summary
Modifier and TypeMethodDescriptioncoerceData(WritableRaster raster, boolean isAlphaPremultiplied) 强制栅格数据与isAlphaPremultiplied变量中指定的状态匹配,假设数据当前由此ColorModel正确描述。createCompatibleSampleModel(int w, int h) 创建一个具有与此ColorModel兼容的数据布局的指定宽度和高度的SampleModel。createCompatibleWritableRaster(int w, int h) 创建一个具有与此ColorModel兼容的数据布局(SampleModel)的指定宽度和高度的WritableRaster。boolean该方法简单地委托给Object中的默认实现,该实现与一个==测试相同,因为此类无法强制执行多个独立子类分支之间的适当相等性测试问题。abstract intgetAlpha(int pixel) 返回指定像素的 alpha 组件,从 0 到 255 缩放。int返回指定像素的 alpha 组件,从 0 到 255 缩放。getAlphaRaster(WritableRaster raster) 返回从输入Raster中提取的图像的 alpha 通道的Raster,前提是此ColorModel的像素值将颜色和 alpha 信息作为单独的空间波段(例如。abstract intgetBlue(int pixel) 返回默认 RGBColorSpacesRGB 中指定像素的蓝色颜色分量,从 0 到 255 缩放。int返回默认 RGBColorSpacesRGB 中指定像素的蓝色颜色分量,从 0 到 255 缩放。final ColorSpace返回与此ColorModel关联的ColorSpace。int[]getComponents(int pixel, int[] components, int offset) 给定此ColorModel中的像素,返回一个非规范化的颜色/alpha 组件数组。int[]getComponents(Object pixel, int[] components, int offset) 给定此ColorModel中的像素,返回一个非规范化的颜色/alpha 组件数组。int[]返回每个颜色/alpha 组件的位数数组。intgetComponentSize(int componentIdx) 返回指定颜色/alpha 组件的位数。intgetDataElement(float[] normComponents, int normOffset) 给定一个规范化的颜色/alpha 组件数组,在此ColorModel中返回表示为int的像素值。intgetDataElement(int[] components, int offset) 给定一个非规范化的颜色/alpha 组件数组,在此ColorModel中返回表示为int的像素值。getDataElements(float[] normComponents, int normOffset, Object obj) 给定一个规范化的颜色/alpha 组件数组,在此ColorModel中返回数据元素数组表示的像素。getDataElements(int[] components, int offset, Object obj) 给定一个非规范化的颜色/alpha 组件数组,在此ColorModel中返回数据元素数组表示的像素。getDataElements(int rgb, Object pixel) 返回一个数据元素数组表示该ColorModel中像素的整数像素表示形式,使用默认的RGB颜色模型。abstract intgetGreen(int pixel) 返回指定像素的绿色分量,在默认的RGB ColorSpace(sRGB)中从0到255进行了缩放。int返回指定像素的绿色分量,在默认的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组件的标准化形式数组。int返回该ColorModel中的颜色组件数量。int返回该ColorModel中的组件数量,包括alpha。int返回由该ColorModel描述的每像素位数。abstract intgetRed(int pixel) 返回指定像素的红色分量,在默认的RGB ColorSpace(sRGB)中从0到255进行了缩放。int返回指定像素的红色分量,在默认的RGBColorSpace(sRGB)中从0到255进行了缩放。intgetRGB(int pixel) 返回默认RGB颜色模型格式中像素的颜色/alpha组件。int返回默认RGB颜色模型格式中指定像素的颜色/alpha组件。static ColorModel返回一个描述用于AWT图像接口中许多方法的整数RGB值的默认格式的DirectColorModel,方便程序员使用。颜色空间是默认的RGBColorSpace,即sRGB。假定像素值包括alpha信息。如果颜色和alpha信息在像素值中作为单独的空间带表示,假定颜色带未与alpha值预乘。透明度类型为java.awt.Transparency.TRANSLUCENT。传输类型将是可以容纳单个像素的DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的类型(如果位数大于32,则为DataBuffer.TYPE_UNDEFINED)。由于此构造函数没有关于每个颜色和alpha组件的位数的信息,因此调用此构造函数的任何子类都应覆盖需要此信息的任何方法。final intReturns the transfer type of thisColorModel.intReturns the transparency.int[]getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset) Returns an array of all of the color/alpha components in unnormalized form, given a normalized component array.final booleanhasAlpha()Returns whether or not alpha is supported in thisColorModel.inthashCode()This method simply delegates to the default implementation inObjectwhich returns the system ID for the class.final booleanReturns whether or not the alpha has been premultiplied in the pixel values to be translated by thisColorModel.booleanisCompatibleRaster(Raster raster) Returnstrueifrasteris compatible with thisColorModelandfalseif it is not.booleanChecks if theSampleModelis compatible with thisColorModel.toString()Returns theStringrepresentation of the contents of thisColorModelobject.
-
Field Details
-
pixel_bits
protected int pixel_bitsThe total number of bits in the pixel. -
transferType
protected int transferTypeData type of the array used to represent pixel values.
-
-
Constructor Details
-
ColorModel
public ColorModel(int bits) Constructs aColorModelthat translates pixels of the specified number of bits to color/alpha components. The color space is the default RGBColorSpace, which is sRGB. Pixel values are assumed to include alpha information. If color and alpha information are represented in the pixel value as separate spatial bands, the color bands are assumed not to be premultiplied with the alpha value. The transparency type is java.awt.Transparency.TRANSLUCENT. The transfer type will be the smallest of DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, or DataBuffer.TYPE_INT that can hold a single pixel (or DataBuffer.TYPE_UNDEFINED if bits is greater than 32). Since this constructor has no information about the number of bits per color and alpha component, any subclass calling this constructor should override any method that requires this information.- 参数:
-
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指示是否存在alpha信息。布尔值isAlphaPremultiplied指定如何解释颜色和alpha信息分别表示为单独的空间带的像素值。如果布尔值为true,则假定颜色样本已乘以alpha样本。transparency指定此颜色模型可以表示哪些alpha值。传输类型是用于表示像素值的原始数组的类型。请注意,bits数组包含从像素值转换后每个颜色/alpha组件的有效位数。例如,对于IndexColorModel,pixel_bits等于16,bits数组可能有四个元素,每个元素设置为8。- 参数:
-
pixel_bits- 像素值中的位数 -
bits- 指定每个颜色和alpha组件的有效位数的数组 -
cspace- 指定的ColorSpace -
hasAlpha- 如果存在alpha信息,则为true;否则为false -
isAlphaPremultiplied- 如果颜色样本假定已乘以alpha样本,则为true;否则为false -
transparency- 此颜色模型可以表示哪些alpha值 -
transferType- 用于表示像素值的数组的类型 - 抛出:
-
IllegalArgumentException- 如果位数组的长度小于此ColorModel中的颜色或alpha组件的数量,或者透明度不是有效值。 -
IllegalArgumentException- 如果bits中位数的总和小于1,或者bits中的任何元素小于0。 - 参见:
-
-
Method Details
-
getRGBdefault
返回一个描述用于AWT图像接口中许多方法的整数RGB值的默认格式的DirectColorModel。颜色空间是默认的ColorSpace,sRGB。RGB值的格式是一个整数,每个颜色分量(alpha、红、绿和蓝)各有8位,从最高有效字节到最低有效字节依次排序,如:0xAARRGGBB。颜色分量未经alpha分量预乘。此格式不一定代表特定设备或所有图像的本机或最有效的ColorModel。它仅用作通用的颜色模型格式。- 返回:
-
描述默认RGB值的
DirectColorModel对象。
-
hasAlpha
public final boolean hasAlpha()返回是否在此ColorModel中支持alpha。- 返回:
-
如果在此
ColorModel中支持alpha,则为true;否则为false。
-
isAlphaPremultiplied
public final boolean isAlphaPremultiplied()返回是否在要由此ColorModel转换的像素值中alpha已经预乘。如果布尔值为true,则应使用此ColorModel来解释颜色和alpha信息分别表示为单独的空间带的像素值,并且假定颜色样本已乘以alpha样本。- 返回:
-
如果要由此
ColorModel转换的像素值中alpha值已经预乘,则为true;否则为false。
-
getTransferType
public final int getTransferType()返回此ColorModel的传输类型。传输类型是用于表示像素值的原始数组的类型。- 返回:
- 传输类型。
- 自:
- 1.3
-
getPixelSize
public int getPixelSize()返回由此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之一。- 指定者:
-
getTransparency在接口Transparency中 - 返回值:
-
此
ColorModel的透明度。 - 另请参阅:
-
getNumComponents
public int getNumComponents()返回此ColorModel中包括alpha在内的组件数。如果有alpha组件,则这等于颜色组件的数量,可选地再加一。- 返回值:
-
此
ColorModel中的组件数
-
getNumColorComponents
public int getNumColorComponents()返回此ColorModel中的颜色组件数。这是由ColorSpace.getNumComponents()返回的组件数量。- 返回值:
-
此
ColorModel中的颜色组件数。 - 另请参阅:
-
getRed
public abstract int getRed(int pixel) 返回指定像素的红色颜色分量,范围从0到255,默认RGB ColorSpace(sRGB)。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException。返回的值不是预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则红色值为0。- 参数:
-
pixel- 指定的像素 - 返回值:
- 指定像素的红色分量的值。
-
getGreen
public abstract int getGreen(int pixel) 返回指定像素的绿色颜色分量,范围从0到255,默认RGB ColorSpace(sRGB)。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则绿色值为0。- 参数:
-
pixel- 指定的像素 - 返回值:
- 指定像素的绿色分量的值。
-
getBlue
public abstract int getBlue(int pixel) 返回指定像素的蓝色颜色分量,范围从0到255,默认RGB ColorSpace(sRGB)。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException。返回的值是非预乘值,例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则蓝色值为0。- 参数:
-
pixel- 指定的像素 - 返回值:
- 指定像素的蓝色分量的值。
-
getAlpha
public abstract int getAlpha(int pixel) 返回指定像素的alpha分量,范围从0到255。像素值指定为int。如果此ColorModel的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException。- 参数:
-
pixel- 指定的像素 - 返回值:
- 指定像素的alpha分量的值。
-
getRGB
public int getRGB(int pixel) 返回默认RGB颜色模型格式中像素的颜色/alpha组件。如果需要,将进行颜色转换。像素值指定为int。如果此ColorModel的像素值不能方便地表示为单个int,则会抛出IllegalArgumentException。返回的值是非预乘格式。例如,如果alpha是预乘的,则此方法将其除去颜色分量。如果alpha值为0,则颜色值为0。- 参数:
-
pixel- 指定的像素 - 返回值:
- 指定像素的颜色/alpha组件的RGB值。
- 另请参阅:
-
getRed
返回默认RGBColorSpace(sRGB)中指定像素的红色颜色分量,范围从0到255。如果需要,将进行颜色转换。像素值由传递为对象引用的transferType类型的数据元素数组指定。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则红色值为0。如果inData不是类型为transferType的原始数组,则会抛出ClassCastException。如果inData不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。如果不支持此transferType,则会抛出UnsupportedOperationException。由于ColorModel是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写它,则如果子类使用的transferType不是DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT,则此方法会抛出异常。- 参数:
-
inData- 像素值数组 - 返回值:
- 指定像素的红色分量的值。
- 抛出:
-
ClassCastException- 如果inData不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果inData不足以容纳此ColorModel的像素值 -
UnsupportedOperationException- 如果不支持此transferType
-
getGreen
返回默认RGBColorSpace(sRGB)中指定像素的绿色颜色分量,范围从0到255。如果需要,将进行颜色转换。像素值由传递为对象引用的transferType类型的数据元素数组指定。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则绿色值为0。如果inData不是类型为transferType的原始数组,则会抛出ClassCastException。如果inData不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。如果不支持此transferType,则会抛出UnsupportedOperationException。由于ColorModel是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写它,则如果子类使用的transferType不是DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT,则此方法会抛出异常。- 参数:
-
inData- 像素值数组 - 返回值:
- 指定像素的绿色分量的值。
- 抛出:
-
ClassCastException- 如果inData不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果inData不足以容纳此ColorModel的像素值 -
UnsupportedOperationException- 如果不支持此transferType
-
getBlue
返回默认RGBColorSpace(sRGB)中指定像素的蓝色颜色分量,范围从0到255。如果需要,将进行颜色转换。像素值由传递为对象引用的transferType类型的数据元素数组指定。返回的值是非预乘值。例如,如果alpha是预乘的,则此方法在返回值之前将其除去。如果alpha值为0,则蓝色值为0。如果inData不是类型为transferType的原始数组,则会抛出ClassCastException。如果inData不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。如果不支持此transferType,则会抛出UnsupportedOperationException。由于ColorModel是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写它,则如果子类使用的transferType不是DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT,则此方法会抛出异常。- 参数:
-
inData- 像素值数组 - 返回:
- 指定像素的蓝色分量值。
- 抛出:
-
ClassCastException- 如果inData不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果inData不足以容纳此ColorModel的像素值 -
UnsupportedOperationException- 如果此ColorModel不支持此transferType
-
getAlpha
返回指定像素的alpha分量,范围从0到255。像素值由作为对象引用传递的transferType类型的数据元素数组inData指定。如果inData不是类型为transferType的原始数组,则会抛出ClassCastException。如果inData不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。如果不支持此transferType,则会抛出UnsupportedOperationException。由于ColorModel是一个抽象类,任何实例必须是子类的实例。子类继承此方法的实现,如果不重写,则在子类使用transferType为DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT之外的值时,此方法会抛出异常。- 参数:
-
inData- 指定的像素 - 返回:
- 指定像素的alpha分量,范围从0到255。
- 抛出:
-
ClassCastException- 如果inData不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果inData不足以容纳此ColorModel的像素值 -
UnsupportedOperationException- 如果不支持此transferType
-
getRGB
返回默认RGB颜色模型格式中指定像素的颜色/alpha分量。必要时进行颜色转换。像素值由作为对象引用传递的transferType类型的数据元素数组inData指定。如果inData不是类型为transferType的原始数组,则会抛出ClassCastException。如果inData不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。返回值将以非预乘格式返回,即如果alpha已经预乘,则此方法将从颜色分量中除去alpha(如果alpha值为0,则颜色值将为0)。- 参数:
-
inData- 指定的像素 - 返回:
- 指定像素的颜色和alpha分量。
- 参见:
-
getDataElements
返回此ColorModel中像素的数据元素数组表示,给定默认RGB颜色模型中的整数像素表示。然后可以将此数组传递给WritableRaster对象的WritableRaster.setDataElements(int, int, java.lang.Object)方法。如果像素变量为null,将分配一个新数组。如果pixel不为null,则必须是类型为transferType的原始数组;否则将抛出ClassCastException。如果pixel不足以容纳此ColorModel的像素值,则将抛出ArrayIndexOutOfBoundsException。将返回像素数组。如果不支持此transferType,则将抛出UnsupportedOperationException。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
rgb- 默认RGB颜色模型中的整数像素表示 -
pixel- 指定的像素 - 返回:
-
此
ColorModel中指定像素的数组表示。 - 抛出:
-
ClassCastException- 如果pixel不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果pixel不足以容纳此ColorModel的像素值 -
UnsupportedOperationException- 如果不支持此方法 - 参见:
-
getComponents
public int[] getComponents(int pixel, int[] components, int offset) 返回此ColorModel中给定像素的非规范化颜色/alpha分量数组。像素值以int形式指定。如果此ColorModel的像素值不能方便地表示为单个int,或者如果此ColorModel的颜色分量值在非规范化形式中不能方便地表示,则会抛出IllegalArgumentException。例如,此方法可用于检索DirectColorModel中特定像素值的组件。如果组件数组为null,将分配一个新数组。将返回组件数组。颜色/alpha组件存储在从offset开始的组件数组中(即使此方法分配了数组)。如果组件数组不为null且不足以容纳所有颜色和alpha组件(从offset开始),则会抛出ArrayIndexOutOfBoundsException。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
pixel- 指定的像素 -
components- 用于接收指定像素的颜色和alpha分量的数组 -
offset- 开始存储指定像素的颜色和alpha分量的components数组中的偏移量 - 返回:
- 包含从指定偏移量开始的指定像素的颜色和alpha分量的数组。
- 抛出:
-
UnsupportedOperationException- 如果不支持此方法
-
getComponents
返回此ColorModel中给定像素的非规范化颜色/alpha分量数组。像素值由作为对象引用传递的transferType类型的数据元素数组pixel指定。如果pixel不是类型为transferType的原始数组,则会抛出ClassCastException。如果此ColorModel的颜色分量值在非规范化形式中不能方便地表示,则会抛出IllegalArgumentException。如果pixel不足以容纳此ColorModel的像素值,则将抛出ArrayIndexOutOfBoundsException。此方法可用于检索任何ColorModel中特定像素值的组件。如果组件数组为null,将分配一个新数组。将返回组件数组。颜色/alpha组件存储在components数组中从offset开始的位置(即使此方法分配了数组)。如果组件数组不为null且不足以容纳所有颜色和alpha组件(从offset开始),则会抛出ArrayIndexOutOfBoundsException。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须重写此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
pixel- 指定的像素 -
components- 用于接收指定像素的颜色和alpha分量的数组 -
offset- 开始存储指定像素的颜色和alpha分量的components数组中的索引 - 返回:
- 包含从指定偏移量开始的指定像素的颜色和alpha分量的数组。
- 抛出:
-
UnsupportedOperationException- 如果不支持此方法
-
getUnnormalizedComponents
public int[] getUnnormalizedComponents(float[] normComponents, int normOffset, int[] components, int offset) 返回一个未标准化形式的颜色/alpha分量数组,给定一个标准化的分量数组。未标准化的分量是介于 0 和 2n - 1 之间的无符号整数值,其中 n 是特定分量的位数。标准化的分量是浮点值,介于由此ColorModel的ColorSpace对象指定的每个分量的最小值和最大值之间。如果此ColorModel的颜色分量值在未标准化形式下不方便表示,则会抛出IllegalArgumentException。如果components数组为null,将分配一个新数组。将返回components数组。颜色/alpha 分量存储在从offset开始的components数组中(即使该数组是由此方法分配的)。如果components数组不为null并且不足以容纳所有颜色和 alpha 分量(从offset开始),则会抛出ArrayIndexOutOfBoundsException。如果normComponents数组不足以容纳从normOffset开始的所有颜色和 alpha 分量,则会抛出IllegalArgumentException。- 参数:
-
normComponents- 包含标准化分量的数组 -
normOffset- 开始检索标准化分量的normComponents数组中的偏移量 -
components- 从normComponents接收分量的数组 -
offset- 从normComponents开始存储标准化分量的components中的索引 - 返回:
- 包含未标准化颜色和 alpha 分量的数组。
- 抛出:
-
IllegalArgumentException- 如果此ColorModel的分量值在未标准化形式下不方便表示。 -
IllegalArgumentException- 如果normComponents的长度减去normOffset小于numComponents -
UnsupportedOperationException- 如果此ColorModel的构造函数调用了super(bits)构造函数,但未覆盖此方法。请参阅构造函数,ColorModel(int)。
-
getNormalizedComponents
public float[] getNormalizedComponents(int[] components, int offset, float[] normComponents, int normOffset) 返回一个标准化形式的颜色/alpha分量数组,给定一个未标准化的分量数组。未标准化的分量是介于 0 和 2n - 1 之间的无符号整数值,其中 n 是特定分量的位数。标准化的分量是浮点值,介于由此ColorModel的ColorSpace对象指定的每个分量的最小值和最大值之间。如果此ColorModel的颜色分量值在未标准化形式下不方便表示,则会抛出IllegalArgumentException。如果normComponents数组为null,将分配一个新数组。将返回normComponents数组。颜色/alpha 分量存储在从normOffset开始的normComponents数组中(即使该数组是由此方法分配的)。如果normComponents数组不为null并且不足以容纳所有颜色和 alpha 分量(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException。如果components数组不足以容纳从offset开始的所有颜色和 alpha 分量,则会抛出IllegalArgumentException。由于
ColorModel是一个抽象类,任何实例都是子类的实例。在此抽象类中,此方法的默认实现假定此类的分量值在未标准化形式下是方便表示的。因此,可能存在不支持未标准化形式的实例的子类必须覆盖此方法。- 参数:
-
components- 包含未标准化分量的数组 -
offset- 开始检索未标准化分量的components数组中的偏移量 -
normComponents- 从components接收标准化分量的数组 -
normOffset- 从normComponents开始存储标准化分量的components中的索引 - 返回:
- 包含标准化颜色和 alpha 分量的数组。
- 抛出:
-
IllegalArgumentException- 如果此ColorModel的分量值在未标准化形式下不方便表示。 -
UnsupportedOperationException- 如果此ColorModel的构造函数调用了super(bits)构造函数,但未覆盖此方法。请参阅构造函数,ColorModel(int)。 -
UnsupportedOperationException- 如果此方法无法确定每个分量的位数
-
getDataElement
public int getDataElement(int[] components, int offset) 返回在此ColorModel中表示为int的像素值,给定一个未标准化颜色/alpha分量数组。如果此ColorModel的分量值不方便表示为单个int,或者如果此ColorModel的颜色分量值在未标准化形式下不方便表示,则此方法将抛出IllegalArgumentException。如果components数组不足以容纳所有颜色和 alpha 分量(从offset开始),则会抛出ArrayIndexOutOfBoundsException。由于ColorModel是一个抽象类,任何实例都是子类的实例。由于此抽象类中的实现会抛出UnsupportedOperationException,因此子类必须覆盖此方法。- 参数:
-
components- 未标准化颜色和 alpha 分量的数组 -
offset- 开始检索颜色和 alpha 分量的components中的索引 - 返回:
-
在此
ColorModel中对应于指定分量的int像素值。 - 抛出:
-
IllegalArgumentException- 如果此ColorModel的像素值不方便表示为单个int -
IllegalArgumentException- 如果此ColorModel的分量值在未标准化形式下不方便表示 -
ArrayIndexOutOfBoundsException- 如果components数组不足以容纳从offset开始的所有颜色和 alpha 分量 -
UnsupportedOperationException- 如果此ColorModel不支持此方法
-
getDataElements
返回在此ColorModel中表示为数据元素数组的像素值,给定一个未标准化颜色/alpha分量数组。然后,可以将此数组传递给WritableRaster对象的setDataElements方法。如果此ColorModel的颜色分量值在未标准化形式下不方便表示,则会抛出IllegalArgumentException。如果components数组不足以容纳所有颜色和 alpha 分量(从offset开始),则会抛出ArrayIndexOutOfBoundsException。如果obj变量为null,将分配一个新数组。如果obj不为null,它必须是类型为 transferType 的原始数组;否则,将抛出ClassCastException。如果obj不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。由于ColorModel是一个抽象类,任何实例都是子类的实例。由于此抽象类中的实现会抛出UnsupportedOperationException,因此子类必须覆盖此方法。- 参数:
-
components- 未规范化的颜色和alpha分量数组 -
offset- 开始检索颜色和alpha分量的components数组中的索引 -
obj- 表示颜色和alpha分量数组的Object - 返回:
-
代表颜色和alpha分量数组的
Object - 抛出:
-
ClassCastException- 如果obj不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果obj不足以容纳此ColorModel的像素值,或者components数组不足以容纳从offset开始的所有颜色和alpha分量 -
IllegalArgumentException- 如果此ColorModel的分量值在未规范化形式下不方便表示 -
UnsupportedOperationException- 如果此方法不受此ColorModel支持 - 参见:
-
getDataElement
public int getDataElement(float[] normComponents, int normOffset) 返回一个以int表示的像素值,给定一个规范化颜色/alpha分量数组在此ColorModel中。如果此ColorModel的像素值不方便表示为单个int,则会抛出IllegalArgumentException。如果normComponents数组不足以容纳所有颜色和alpha分量(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException。由于ColorModel是一个抽象类,任何实例都是子类的实例。此抽象类中此方法的默认实现首先从规范化形式转换为未规范化形式,然后调用getDataElement(int[], int)。可能存在不支持未规范化形式的子类必须覆盖此方法。- 参数:
-
normComponents- 规范化颜色和alpha分量数组 -
normOffset- 开始检索颜色和alpha分量的normComponents数组中的索引 - 返回:
-
在此
ColorModel中对应于指定分量的int像素值。 - 抛出:
-
IllegalArgumentException- 如果此ColorModel的像素值不方便表示为单个int -
ArrayIndexOutOfBoundsException- 如果normComponents数组不足以容纳从normOffset开始的所有颜色和alpha分量 - 自1.4版本起:
- 1.4
-
getDataElements
返回此ColorModel中像素的数据元素数组表示,给定一个规范化颜色/alpha分量数组。然后可以将此数组传递给WritableRaster对象的setDataElements方法。如果normComponents数组不足以容纳所有颜色和alpha分量(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException。如果obj变量为null,将分配一个新数组。如果obj不为null,它必须是类型为transferType的原始数组;否则,将抛出ClassCastException。如果obj不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。由于ColorModel是一个抽象类,任何实例都是子类的实例。此抽象类中此方法的默认实现首先从规范化形式转换为未规范化形式,然后调用getDataElement(int[], int, Object)。可能存在不支持未规范化形式的子类必须覆盖此方法。- 参数:
-
normComponents- 规范化颜色和alpha分量数组 -
normOffset- 开始检索颜色和alpha分量的normComponents数组中的索引 -
obj- 用于保存返回像素的原始数据数组 - 返回:
-
一个代表像素的原始数据数组的
Object - 抛出:
-
ClassCastException- 如果obj不是类型为transferType的原始数组 -
ArrayIndexOutOfBoundsException- 如果obj不足以容纳此ColorModel的像素值,或者normComponents数组不足以容纳从normOffset开始的所有颜色和alpha分量 - 自1.4版本起:
- 1.4
- 参见:
-
getNormalizedComponents
返回一个以规范化形式表示的所有颜色/alpha分量的数组,给定此ColorModel中的像素。像素值由作为对象引用传递的transferType类型的数据元素数组的数组指定。如果像素不是类型为transferType的原始数组,则会抛出ClassCastException。如果pixel不足以容纳此ColorModel的像素值,则会抛出ArrayIndexOutOfBoundsException。规范化分量是介于由此ColorModel的ColorSpace对象指定的每个分量最小值和最大值之间的浮点值。如果normComponents数组为null,将分配一个新数组。将返回normComponents数组。颜色/alpha分量存储在从normOffset开始的normComponents数组中(即使此方法分配数组)。如果normComponents数组不为null且不足以容纳所有颜色和alpha分量(从normOffset开始),则会抛出ArrayIndexOutOfBoundsException。由于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的构造函数调用了super(bits)构造函数,但未覆盖此方法。请参阅构造函数,ColorModel(int)。 -
UnsupportedOperationException- 如果此方法无法确定每个分量的位数 - 自1.4版本起:
- 1.4
-
equals
此方法简单地委托给Object中的默认实现,该实现与==测试相同,因为此类无法强制执行对多个独立子类分支的适当相等性测试的问题。鼓励子类覆盖此方法,并为自己的属性提供相等性测试,以及为以下ColorModel的常见基本属性提供相等性测试:- 支持alpha分量。
- 是否alpha预乘。
- 每像素位数。
- 透明度类型,如不透明、位掩码或半透明。
- 每像素组件数。
ColorSpace类型。- 用于表示像素值的数组类型。
- 每个颜色和alpha分量的有效位数。
-
hashCode
public int hashCode()此方法简单地委托给Object中的默认实现,该实现返回类的系统ID。鼓励子类覆盖此方法,并为自己的属性提供哈希值,以及为ColorModel的以下常见基本属性的值进行哈希处理:- 支持alpha分量。
- 是否alpha预乘。
- 每像素的位数。
- 透明度类型,如Opaque、Bitmask或Translucent。
- 每像素的组件数。
ColorSpace类型。- 用于表示像素值的数组类型。
- 每个颜色和alpha分量的有效位数。
-
getColorSpace
返回与此ColorModel关联的ColorSpace。- 返回:
-
此
ColorModel的ColorSpace。
-
coerceData
强制栅格数据与isAlphaPremultiplied变量指定的状态匹配,假设数据当前由此ColorModel正确描述。它可能通过alpha乘法或除法来处理颜色栅格数据,或者如果数据处于正确状态,则不执行任何操作。如果数据需要强制转换,此方法还将返回一个适当设置isAlphaPremultiplied标志的此ColorModel的实例。如果此ColorModel不支持此操作,此方法将抛出UnsupportedOperationException。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
raster-WritableRaster数据 -
isAlphaPremultiplied- 如果alpha已预乘,则为true; 否则为false - 返回:
-
代表强制数据的
ColorModel对象。
-
isCompatibleRaster
如果raster与此ColorModel兼容,则返回true;否则返回false。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
raster- 要测试兼容性的Raster对象 - 返回:
-
如果
raster与此ColorModel兼容,则返回true。 - 抛出:
-
UnsupportedOperationException- 如果此ColorModel未实现此方法
-
createCompatibleWritableRaster
创建一个具有指定宽度和高度的WritableRaster,其数据布局(SampleModel)与此ColorModel兼容。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
w- 应用于新WritableRaster的宽度 -
h- 应用于新WritableRaster的高度 - 返回:
-
具有指定宽度和高度的
WritableRaster对象。 - 抛出:
-
UnsupportedOperationException- 如果此ColorModel不支持此方法 - 参见:
-
createCompatibleSampleModel
创建一个具有指定宽度和高度的SampleModel,其数据布局与此ColorModel兼容。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
w- 应用于新SampleModel的宽度 -
h- 应用于新SampleModel的高度 - 返回:
-
具有指定宽度和高度的
SampleModel对象。 - 抛出:
-
UnsupportedOperationException- 如果此ColorModel不支持此方法 - 参见:
-
isCompatibleSampleModel
检查SampleModel是否与此ColorModel兼容。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,因为此抽象类中的实现会抛出UnsupportedOperationException。- 参数:
-
sm- 指定的SampleModel - 返回:
-
如果指定的
SampleModel与此ColorModel兼容,则返回true;否则返回false。 - 抛出:
-
UnsupportedOperationException- 如果此ColorModel不支持此方法 - 参见:
-
getAlphaRaster
返回表示图像的alpha通道的Raster,从输入Raster中提取,前提是此ColorModel的像素值将颜色和alpha信息作为单独的空间波段表示(例如ComponentColorModel和DirectColorModel)。此方法假定与此ColorModel关联的Raster对象将alpha通道(如果存在)存储为图像数据的最后一个波段。如果没有与此ColorModel关联的单独的空间alpha通道,则返回null。如果这是具有查找表中alpha的IndexColorModel,此方法将返回null,因为没有空间上离散的alpha通道。此方法将创建一个新的Raster(但将共享数据数组)。由于ColorModel是一个抽象类,任何实例都是子类的实例。子类必须覆盖此方法,以获得除返回null之外的任何行为,因为此抽象类中的实现返回null。- 参数:
-
raster- 指定的Raster - 返回:
-
从指定的
Raster中获取表示图像的alpha通道的Raster。
-
toString
返回此ColorModel对象内容的String表示形式。
-