所有类


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 对象透明度的方法如下:检查 colormap 中各颜色的 alpha 分量,并在考虑可选的 alpha 值和所有指定的透明索引后选择最具体的值。仅在 colormap 中的所有有效颜色都为不透明,并且不存在有效的透明像素时,透明度值才是 Transparency.OPAQUE。如果 colormap 中的所有有效颜色要么是完全不透明的 (alpha = 1.0),要么是完全透明的 (alpha = 0.0)(在指定了有效透明像素时常出现该情况),则透明值是 Transparency.BITMASK。否则该值是 Transparency.TRANSLUCENT,指示某个有效颜色具有 alpha 分量,该颜色既不是完全透明的,也不是完全不透明的 (0.0 < alpha < 1.0)。

如果 IndexColorModel 对象的透明值是 Transparency.OPAQUE,则 hasAlphagetNumComponents 方法(均继承自 ColorModel)分别返回 false 和 3。对于所有其他透明度值,hasAlpha 返回 true,而 getNumComponents 则返回 4。

由像素值表示的索引存储在传递给此类方法的像素表示形式的最低有效 n 位中,其中 n 是为特定 IndexColorModel 对象的构造方法所定义的像素大小;n 必须在 1 到 16(包括)之间。假定像素表示形式中的高位为零。对于那些使用 transferType 类型的基本数组像素表示形式的方法,该数组的长度总是一。支持的传输类型有 DataBuffer.TYPE_BYTEDataBuffer.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 分量构成。
 
方法摘要
 BufferedImageconvertToIntDiscrete(Raster raster, boolean forceARGB)
          返回一个 TYPE_INT_ARGB 或 TYPE_INT_RGB 的新 BufferedImage,其 Raster 的像素数据是通过使用此 ColorModel 的颜色/alpha 分量数组扩展源 Raster 中的各索引来计算的。
 SampleModelcreateCompatibleSampleModel(int w, int h)
          创建一个具有指定宽度和高度、数据布局与此 ColorModel 兼容的 SampleModel
 WritableRastercreateCompatibleWritableRaster(int w, int h)
          创建一个具有指定宽度和高度、数据布局 (SampleModel) 与此 ColorModel 兼容的 WritableRaster
 voidfinalize()
          一旦不再引用此 ColorModel,则释放与此 ColorModel 关联的系统资源。
 intgetAlpha(int pixel)
          返回指定像素的 alpha 分量,该值为 0 到 255。
 voidgetAlphas(byte[] a)
          将 alpha 透明度分量数组复制到指定的数组中。
 intgetBlue(int pixel)
          返回指定像素的蓝色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。
 voidgetBlues(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 分量位数的数组。
 intgetDataElement(int[] components, int offset)
          在给定非标准化颜色/alpha 分量数组的情况下,以 int 的形式返回此 ColorModel 中的像素值。
 ObjectgetDataElements(int[] components, int offset, Object pixel)
          在给定非标准化颜色/alpha 分量数组的情况下,返回表示此 ColorModel 中像素的数据元素数组。
 ObjectgetDataElements(int rgb, Object pixel)
          根据默认 RGB 颜色模型中的整数像素表示形式,返回此 ColorModel 中像素的数据元素数组表示形式。
 intgetGreen(int pixel)
          返回指定像素的绿色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。
 voidgetGreens(byte[] g)
          将绿色分量数组复制到指定的数组中。
 intgetMapSize()
          返回此 IndexColorModel 中颜色/alpha 分量数组的大小。
 intgetRed(int pixel)
          返回指定像素的红色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。
 voidgetReds(byte[] r)
          将红色分量数组复制到指定的数组中。
 intgetRGB(int pixel)
          以默认 RGB 颜色模型格式返回像素的颜色/alpha 分量。
 voidgetRGBs(int[] rgb)
          将颜色和 alpha 分量数组中每个索引的数据转换成默认 RGB ColorModel 格式的 int 值,并将得到的 32 位 ARGB 值复制到指定数组中。
 intgetTransparency()
          返回透明度。
 intgetTransparentPixel()
          返回此 IndexColorModel 中透明像素的索引,如果没有 alpha 值为 0 的像素,则返回 -1。
 BigIntegergetValidPixels()
          返回一个指示 colormap 中有效/无效像素的 BigInteger
 booleanisCompatibleRaster(Raster raster)
          如果 raster 与此 ColorModel 兼容,则返回 true;如果不与此 ColorModel 兼容,则返回 false
 booleanisCompatibleSampleModel(SampleModel sm)
          检查指定的 SampleModel 是否与此 ColorModel 兼容。
 booleanisValid()
          返回所有像素是否有效。
 booleanisValid(int pixel)
          返回像素是否有效。
 StringtoString()
          返回此 ColorModel 对象内容的 String 表示形式。
 
从类 java.awt.image.ColorModel 继承的方法
coerceData, equals, getAlpha, getAlphaRaster, getBlue, getColorSpace, getComponentSize, getDataElement, getDataElements, getGreen, getNormalizedComponents, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRed, getRGB, getRGBdefault, getTransferType, getUnnormalizedComponents, hasAlpha, hashCode, isAlphaPremultiplied
 
从类 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_BYTEDataBuffer.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.OPAQUETransparency.BITMASK,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.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.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.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.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.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.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.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.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
cmap - 颜色分量数组
start - 首个颜色分量的起始偏移量
hasalpha - 指示 cmap 数组中是否包含 alpha 值
trans - 完全透明像素的索引
transferType - 用于表示像素值的数组数据类型。该数据类型必须是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1
IllegalArgumentException - 如果 transferType 不是 DataBuffer.TYPE_BYTEDataBuffer.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.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。该数据类型必须是 DataBuffer.TYPE_BYTEDataBuffer.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_BYTEDataBuffer.TYPE_USHORT 之一
方法详细信息

getTransparency

public int getTransparency()
返回透明度。返回 OPAQUE、BITMASK 或 TRANSLUCENT

指定者:
接口 Transparency 中的 getTransparency
覆盖:
ColorModel 中的 getTransparency
返回:
IndexColorModel 的透明度值
另请参见:
Transparency.OPAQUE, Transparency.BITMASK, Transparency.TRANSLUCENT