|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.awt.image
类 IndexColorModel
java.lang.Object java.awt.image.ColorModel java.awt.image.IndexColorModel
- 所有已实现的接口:
- Transparency
-
public class IndexColorModel
- extends ColorModel
IndexColorModel
类是使用由单个采样所组成的像素值的 ColorModel
类,这些像素值是默认 sRGB 颜色空间中固定 colormap 中的索引。colormap 指定了对应于每个索引的红色、绿色、蓝色和可选的 alpha 分量。在 colormap 中,所有分量都以 8 位无符号整数值表示。某些构造方法允许调用方在 colormap 中指定“空洞”,方法是通过 BigInteger
对象中的位集指示哪些项是有效的,以及哪些项表示不可用的颜色。此颜色模型与 X11 PseudoColor 可视化模型类似。
某些构造方法还提供了为 colormap 中的每个像素指定 alpha 分量的方法,而其他构造方法则要么不提供这种方法,要么在某些情况中使用一个标志来指示 colormap 数据是否包含 alpha 值。如果未向构造方法提供 alpha 值,则为每个条目假定一个不透明的 alpha 分量 (alpha = 1.0)。无论为像素值提供或使用什么 alpha 分量,都可以提供一个指示该像素完全透明的可选的透明像素值。注意,IndexColorModel
对象 colormap 中的颜色分量永远不预乘 alpha 分量。
如果 IndexColorModel
对象的透明值是 Transparency.OPAQUE
,则 hasAlpha
和 getNumComponents
方法(均继承自 ColorModel
)分别返回 false 和 3。对于所有其他透明度值,hasAlpha
返回 true,而 getNumComponents
则返回 4。
由像素值表示的索引存储在传递给此类方法的像素表示形式的最低有效 n 位中,其中 n 是为特定 IndexColorModel
对象的构造方法所定义的像素大小;n 必须在 1 到 16(包括)之间。假定像素表示形式中的高位为零。对于那些使用 transferType
类型的基本数组像素表示形式的方法,该数组的长度总是一。支持的传输类型有 DataBuffer.TYPE_BYTE
和 DataBuffer.TYPE_USHORT
。因为单个 int 像素表示形式总是能够以一个 int 值表示此类使用的像素值,所以它对于此类的所有对象都是有效的。因此,使用此种表示形式的方法不会因无效的像素值而抛出 IllegalArgumentException
。
此类中的很多方法都声明为 final。这样做的原因是基础本机图形代码做出了有关布局和此类操作的假设,并且这些假设反映在标记为 final 的方法实现中。出于其他原因,用户可以子类化此类,但是无法重写或修改这些方法的行为。
- 另请参见:
-
ColorModel
,ColorSpace
,DataBuffer
字段摘要 |
---|
从类 java.awt.image.ColorModel 继承的字段 |
---|
pixel_bits, transferType |
从接口 java.awt.Transparency 继承的字段 |
---|
BITMASK, OPAQUE, TRANSLUCENT |
构造方法摘要 | |
---|---|
IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b) 根据指定的红色、绿色和蓝色分量数组构造一个 IndexColorModel 。 |
|
IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b, byte[] a) 根据给定的红色、绿色、蓝色和 alpha 分量数组构造一个 IndexColorModel 。 |
|
IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b, int trans) 根据给定的红色、绿色和蓝色分量数组构造一个 IndexColorModel 。 |
|
IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha) 根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个 IndexColorModel 。 |
|
IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha, int trans) 根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个 IndexColorModel 。 |
|
IndexColorModel(int bits, int size, int[] cmap, int start, boolean hasalpha, int trans, int transferType) 根据一个 int 数组构造一个 IndexColorModel ,该数组中的每个 int 值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和可选 alpha 分量构成。 |
|
IndexColorModel(int bits, int size, int[] cmap, int start, int transferType, BigInteger validBits) 根据一个 int 数组构造一个 IndexColorModel ,该数组中的每个 int 值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和 alpha 分量构成。 |
方法摘要 | |
---|---|
BufferedImage |
convertToIntDiscrete(Raster raster, boolean forceARGB) 返回一个 TYPE_INT_ARGB 或 TYPE_INT_RGB 的新 BufferedImage ,其 Raster 的像素数据是通过使用此 ColorModel 的颜色/alpha 分量数组扩展源 Raster 中的各索引来计算的。 |
SampleModel |
createCompatibleSampleModel(int w, int h) 创建一个具有指定宽度和高度、数据布局与此 ColorModel 兼容的 SampleModel 。 |
WritableRaster |
createCompatibleWritableRaster(int w, int h) 创建一个具有指定宽度和高度、数据布局 ( SampleModel ) 与此 ColorModel 兼容的 WritableRaster 。 |
void |
finalize() 一旦不再引用此 ColorModel ,则释放与此 ColorModel 关联的系统资源。 |
int |
getAlpha(int pixel) 返回指定像素的 alpha 分量,该值为 0 到 255。 |
void |
getAlphas(byte[] a) 将 alpha 透明度分量数组复制到指定的数组中。 |
int |
getBlue(int pixel) 返回指定像素的蓝色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。 |
void |
getBlues(byte[] b) 将蓝色分量数组复制到指定的数组中。 |
int[] |
getComponents(int pixel, int[] components, int offset) 返回此 ColorModel 中指定像素的非标准化颜色/alpha 分量数组。 |
int[] |
getComponents(Object pixel, int[] components, int offset) 返回此 ColorModel 中指定像素的非标准化颜色/alpha 分量数组。 |
int[] |
getComponentSize() 返回包含各个颜色/alpha 分量位数的数组。 |
int |
getDataElement(int[] components, int offset) 在给定非标准化颜色/alpha 分量数组的情况下,以 int 的形式返回此 ColorModel 中的像素值。 |
Object |
getDataElements(int[] components, int offset, Object pixel) 在给定非标准化颜色/alpha 分量数组的情况下,返回表示此 ColorModel 中像素的数据元素数组。 |
Object |
getDataElements(int rgb, Object pixel) 根据默认 RGB 颜色模型中的整数像素表示形式,返回此 ColorModel 中像素的数据元素数组表示形式。 |
int |
getGreen(int pixel) 返回指定像素的绿色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。 |
void |
getGreens(byte[] g) 将绿色分量数组复制到指定的数组中。 |
int |
getMapSize() 返回此 IndexColorModel 中颜色/alpha 分量数组的大小。 |
int |
getRed(int pixel) 返回指定像素的红色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。 |
void |
getReds(byte[] r) 将红色分量数组复制到指定的数组中。 |
int |
getRGB(int pixel) 以默认 RGB 颜色模型格式返回像素的颜色/alpha 分量。 |
void |
getRGBs(int[] rgb) 将颜色和 alpha 分量数组中每个索引的数据转换成默认 RGB ColorModel 格式的 int 值,并将得到的 32 位 ARGB 值复制到指定数组中。 |
int |
getTransparency() 返回透明度。 |
int |
getTransparentPixel() 返回此 IndexColorModel 中透明像素的索引,如果没有 alpha 值为 0 的像素,则返回 -1。 |
BigInteger |
getValidPixels() 返回一个指示 colormap 中有效/无效像素的 BigInteger 。 |
boolean |
isCompatibleRaster(Raster raster) 如果 raster 与此 ColorModel 兼容,则返回 true ;如果不与此 ColorModel 兼容,则返回 false 。 |
boolean |
isCompatibleSampleModel(SampleModel sm) 检查指定的 SampleModel 是否与此 ColorModel 兼容。 |
boolean |
isValid() 返回所有像素是否有效。 |
boolean |
isValid(int pixel) 返回像素是否有效。 |
String |
toString() 返回此 ColorModel 对象内容的 String 表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, getClass, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
IndexColorModel
public IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b)
-
根据指定的红色、绿色和蓝色分量数组构造一个
IndexColorModel
。此颜色模型所描述的像素都具有非标准化的 255(标准化是 1.0)alpha 分量,这意味着这些像素是完全不透明的。所有指定颜色分量的数组都必须至少具有指定的条目数。ColorSpace
是默认的 sRGB 空间。由于此构造方法的所有参数中都没有 alpha 信息,所以透明度值总是为Transparency.OPAQUE
。传输类型是DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
中能够保存单个像素的最小值。- 参数:
-
bits
- 每个像素占用的位数 -
size
- 颜色分量数组的大小 -
r
- 红色分量数组 -
g
- 绿色分量数组 -
b
- 蓝色分量数组 - 抛出:
-
IllegalArgumentException
- 如果bits
小于 1 或大于 16 -
IllegalArgumentException
- 如果size
小于 1
IndexColorModel
public IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b, int trans)
-
根据给定的红色、绿色和蓝色分量数组构造一个
IndexColorModel
。此颜色模型所描述的像素都具有非标准化的 255(标准化是 1.0)alpha 分量,这意味着这些像素是完全不透明的,但指示呈现为透明的像素除外。所有指定颜色分量的数组都必须至少具有指定的条目数。ColorSpace
是默认的 sRGB 空间。根据参数的不同,透明度值可能是Transparency.OPAQUE
或Transparency.BITMASK
,正如上面类描述中所指定的。传输类型是能够保存单个像素的DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
的最小值。- 参数:
-
bits
- 每个像素占用的位数 -
size
- 颜色分量数组的大小 -
r
- 红色分量数组 -
g
- 绿色分量数组 -
b
- 蓝色分量数组 -
trans
- 透明像素的索引 - 抛出:
-
IllegalArgumentException
- 如果bits
小于 1 或大于 16 -
IllegalArgumentException
- 如果size
小于 1
IndexColorModel
public IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b, byte[] a)
-
根据给定的红色、绿色、蓝色和 alpha 分量数组构造一个
IndexColorModel
。所有指定分量的数组都必须至少具有指定的条目数。ColorSpace
是默认的 sRGB 空间。根据参数的不同,透明度值可能是Transparency.OPAQUE
、Transparency.BITMASK
或Transparency.TRANSLUCENT
,正如上面类描述中所指定的。传输类型是能够保存单个像素的DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
的最小值。- 参数:
-
bits
- 每个像素占用的位数 -
size
- 颜色分量数组的大小 -
r
- 红色分量数组 -
g
- 绿色分量数组 -
b
- 蓝色分量数组 -
a
- alpha 值分量数组 - 抛出:
-
IllegalArgumentException
- 如果bits
小于 1 或大于 16 -
IllegalArgumentException
- 如果size
小于 1
IndexColorModel
public IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha)
-
根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个
IndexColorModel
。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace
是默认的 sRGB 空间。根据参数的不同,透明度值可能是Transparency.OPAQUE
、Transparency.BITMASK
或Transparency.TRANSLUCENT
,正如上面类描述中所指定的。传输类型是能够保存单个像素的DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
的最小值。- 参数:
-
bits
- 每个像素占用的位数 -
size
- 颜色分量数组的大小 -
cmap
- 颜色分量数组 -
start
- 首个颜色分量的起始偏移量 -
hasalpha
- 指示cmap
数组中是否包含 alpha 值 - 抛出:
-
IllegalArgumentException
- 如果bits
小于 1 或大于 16 -
IllegalArgumentException
- 如果size
小于 1
IndexColorModel
public IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha, int trans)
-
根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个
IndexColorModel
。指定的透明索引表示完全透明的像素,而无论为其指定的 alpha 值是什么。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace
是默认的 sRGB 空间。根据参数的不同,透明度值可能是Transparency.OPAQUE
、Transparency.BITMASK
或Transparency.TRANSLUCENT
,正如上面类描述中所指定的。传输类型是能够保存单个像素的DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
的最小值。- 参数:
-
bits
- 每个像素占用的位数 -
size
- 颜色分量数组的大小 -
cmap
- 颜色分量数组 -
start
- 首个颜色分量的起始偏移量 -
hasalpha
- 指示cmap
数组中是否包含 alpha 值 -
trans
- 完全透明像素的索引 - 抛出:
-
IllegalArgumentException
- 如果bits
小于 1 或大于 16 -
IllegalArgumentException
- 如果size
小于 1
IndexColorModel
public IndexColorModel(int bits, int size, int[] cmap, int start, boolean hasalpha, int trans, int transferType)
-
根据一个 int 数组构造一个
IndexColorModel
,该数组中的每个 int 值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和可选 alpha 分量构成。指定的透明索引表示完全透明的像素,而无论为其指定的 alpha 值是什么。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace
是默认的 sRGB 空间。根据参数的不同,透明度值可能是Transparency.OPAQUE
、Transparency.BITMASK
或Transparency.TRANSLUCENT
,正如上面类描述中所指定的。- 参数:
-
bits
- 每个像素占用的位数 -
size
- 颜色分量数组的大小 -
cmap
- 颜色分量数组 -
start
- 首个颜色分量的起始偏移量 -
hasalpha
- 指示cmap
数组中是否包含 alpha 值 -
trans
- 完全透明像素的索引 -
transferType
- 用于表示像素值的数组数据类型。该数据类型必须是DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
。 - 抛出:
-
IllegalArgumentException
- 如果bits
小于 1 或大于 16 -
IllegalArgumentException
- 如果size
小于 1 -
IllegalArgumentException
- 如果transferType
不是DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
之一
IndexColorModel
public IndexColorModel(int bits, int size, int[] cmap, int start, int transferType, BigInteger validBits)
-
根据一个
int
数组构造一个IndexColorModel
,该数组中的每个int
值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和 alpha 分量构成。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace
是默认的 sRGB 空间。根据参数的不同,透明度值可能是Transparency.OPAQUE
、Transparency.BITMASK
或Transparency.TRANSLUCENT
,正如上面类描述中所指定的。该数据类型必须是DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
之一。BigInteger
对象指定了cmap
数组中的有效/无效像素。如果设置了某个索引处的BigInteger
值,则该像素是有效的;如果未设置该索引处的BigInteger
位,则该像素是无效的。- 参数:
-
bits
- 每个像素占用的位数 -
size
- 颜色分量数组的大小 -
cmap
- 颜色分量数组 -
start
- 首个颜色分量的起始偏移量 -
transferType
- 指定的数据类型 -
validBits
- 一个BigInteger
对象。如果设置了 BigInteger 中的某个位,则该索引处的像素是有效的。如果未设置该位,则认为该索引处的像素无效。如果为 null,则所有像素都是有效的。仅考虑从 0 到 colormap 大小的所有位。 - 抛出:
-
IllegalArgumentException
- 如果bits
小于 1 或大于 16 -
IllegalArgumentException
- 如果size
小于 1 -
IllegalArgumentException
- 如果transferType
不是DataBuffer.TYPE_BYTE
或DataBuffer.TYPE_USHORT
之一
方法详细信息 |
---|
getTransparency
public int getTransparency()
- 返回透明度。返回 OPAQUE、BITMASK 或 TRANSLUCENT
-
- 指定者:
-
接口
Transparency
中的getTransparency
- 覆盖:
-
类
ColorModel
中的getTransparency
-
- 返回:
-
此
IndexColorModel
的透明度值 - 另请参见:
-
Transparency.OPAQUE
,Transparency.BITMASK
,Transparency.TRANSLUCENT