java.lang.Object java.awt.image.ColorModel java.awt.image.IndexColorModel
public class IndexColorModel
IndexColorModel
类是一个 ColorModel
类,它使用由单个样本组成的像素值,这些像素值是默认 sRGB 颜色空间中固定 colormap 中的索引。colormap 指定了对应于每个索引的红色、绿色、蓝色和可选的 alpha 分量。在 colormap 中,所有分量都以 8 位无符号整数值表示。某些构造方法允许调用者在 colormap 中指定“空洞”:通过 BigInteger
对象中的位集指示哪些 colormap 项是有效的,以及哪些项表示不可用的颜色。此颜色模型与 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。
字段摘要 |
---|
从类 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 |
构造方法详细信息 |
---|
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
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
public IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b, byte[] a)
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
public IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha)
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
public IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha, int trans)
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
public IndexColorModel(int bits, int size, int[] cmap, int start, boolean hasalpha, int trans, int transferType)
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
之一
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
之一
方法详细信息 |
---|
public int getTransparency()
Transparency
中的
getTransparency
ColorModel
中的
getTransparency
IndexColorModel
的透明度值
Transparency.OPAQUE
,
Transparency.BITMASK
,
Transparency.TRANSLUCENT
public int[] getComponentSize()
ColorModel
中的
getComponentSize
IndexColorModel
的各个颜色和 alpha 分量位数的数组
public final int getMapSize()
IndexColorModel
中颜色/alpha 分量数组的大小。
public final int getTransparentPixel()
IndexColorModel
中透明像素的索引;如果没有 alpha 值为 0 的像素,则返回 -1。如果通过像素的索引在某个构造方法中显式地指定了透明像素,则优先返回该像素,否则可能返回任何正好是完全透明像素的索引。
IndexColorModel
对象中透明像素的索引;如果没有这样的像素,则为 -1
public final void getReds(byte[] r)
getMapSize
指定的初始数组条目。
r
- 指定的数组,红色分量数组元素要复制到该数组中
public final void getGreens(byte[] g)
getMapSize
指定的初始数组条目。
g
- 指定的数组,绿色分量数组元素要复制到该数组中
public final void getBlues(byte[] b)
getMapSize
指定的初始数组条目。
b
- 指定的数组,蓝色分量数组元素要复制到该数组中
public final void getAlphas(byte[] a)
getMapSize
指定的初始数组条目。
a
- 指定的数组,alpha 分量数组元素要复制到该数组中
public final void getRGBs(int[] rgb)
getMapSize
指定的初始数组条目。
rgb
- 指定的数组,从颜色和 alpha 分量数组转换得到的 ARGB 值要复制到该数组中。
public final int getRed(int pixel)
ColorModel
中的
getRed
pixel
- 指定的像素
public final int getGreen(int pixel)
ColorModel
中的
getGreen
pixel
- 指定的像素
public final int getBlue(int pixel)
ColorModel
中的
getBlue
pixel
- 指定的像素
public final int getAlpha(int pixel)
ColorModel
中的
getAlpha
pixel
- 指定的像素
public final int getRGB(int pixel)
ColorModel
中的
getRGB
pixel
- 指定的像素
ColorModel.getRGBdefault()
public Object getDataElements(int rgb, Object pixel)
WritableRaster
对象的
setDataElements
方法。如果 pixel 变量为
null
,则分配一个新数组。如果
pixel
不为
null
,则它必须是一个
transferType
类型的基本数组;否则抛出
ClassCastException
。如果
pixel
不足以保存此
ColorModel
的一个像素值,则抛出
ArrayIndexOutOfBoundsException
。返回 pixel 数组。
因为可以子类化 IndexColorModel
,所以子类继承此方法的实现,如果不重写子类,则在使用不受支持的 transferType
时将抛出异常。
ColorModel
中的
getDataElements
rgb
- 默认 RGB 颜色模型中的整数像素表示形式
pixel
- 指定的像素
IndexColorModel
中指定像素的数组。
ClassCastException
- 如果
pixel
不是
transferType
类型的基本数组
ArrayIndexOutOfBoundsException
- 如果
pixel
不足以保存此
ColorModel
中的一个像素值
UnsupportedOperationException
- 如果
transferType
无效
WritableRaster.setDataElements(int, int, java.lang.Object)
,
SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
public int[] getComponents(int pixel, int[] components, int offset)
ColorModel
中指定像素的非标准化颜色/alpha 分量数组。该像素值指定为 int 值。如果
components
数组为
null
,则分配一个包含
offset + getNumComponents()
个元素的新数组。返回
components
数组,仅在
hasAlpha
返回 true 时,该数组才包括 alpha 分量。即使从
offset
开始的
components
数组是由此方法所分配的,颜色/alpha 分量也将存储在该数组中。如果
components
数组不为
null
并且大小不足以保存从
offset
处开始的所有颜色和 alpha 分量,则抛出
ArrayIndexOutOfBoundsException
。
ColorModel
中的
getComponents
pixel
- 指定的像素
components
- 接收指定像素的颜色和 alpha 分量的数组
offset
-
components
数组中的偏移量,从此处开始存储颜色和 alpha 分量
ColorModel.hasAlpha()
,
ColorModel.getNumComponents()
public int[] getComponents(Object pixel, int[] components, int offset)
ColorModel
中指定像素的非标准化颜色/alpha 分量数组。像素值由作为对象引用传入的
transferType
类型的数据元素数组指定。如果
pixel
不是
transferType
类型的基本数组,则抛出
ClassCastException
。如果
pixel
大小不足以保存此
ColorModel
的一个像素值,则抛出