所有类


java.awt.image
类 DirectColorModel

java.lang.Object
  继承者 java.awt.image.ColorModel
      继承者 java.awt.image.PackedColorModel
          继承者 java.awt.image.DirectColorModel
所有已实现的接口:
Transparency

public class DirectColorModel
   
   
   
   
   
extends PackedColorModel

DirectColorModel 类是使用像素值的 ColorModel 类,像素值以单独样本的形式表示 RGB 颜色和 alpha 信息,并将单个像素的所有样本打包成单个 int、short 或 byte 量。此类只能与 ColorSpace.TYPE_RGB 的 ColorSpaces 一起使用。此外,对于 ColorSpace 的每个分量,通过 ColorSpace 的 getMinValue() 方法得到的最小标准化分量值必须是 0.0,通过 getMaxValue() 方法得到的最大值必须是 1.0(这些最小/最大值是 RGB 空间的常见值)。像素值中必须有三个颜色样本,且可以有一个 alpha 样本。对于那些使用类型 transferType 的基本数组像素表示形式的方法,数组长度总是 1。受支持的转换类型是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 和 DataBuffer.TYPE_INT。颜色和 alpha 样本以位为单位存储在位掩码指示的数组的单个元素中。每个位掩码必须是连续的,并且掩码一定不能重叠。相同的掩码可以应用于由其他方法使用的单个 int 像素表示形式。掩码和颜色/alpha 样本间的对应关系如下:

  • 如果 alpha 不存在,掩码则由运行 0 到 2 的索引标识,如果 alpha 存在,则由运行 3 的索引标识。
  • 前三个索引指的是颜色样本;索引 0 对应于红色,索引 1 对应于绿色,索引 2 对应于蓝色。
  • 索引 3 对应于 alpha 样本(如果存在)。

出于显示或处理的目的,像素值到颜色/alpha 分量的转换是从样本到分量一一对应的。DirectColorModel 通常与使用掩码定义打包样本的图像数据一起使用。例如,DirectColorModel 可以与 SinglePixelPackedSampleModel 一起使用来构造 BufferedImage。通常,SampleModelColorModel 使用的掩码是相同的。但是,如果掩码不相同,像素数据的颜色解释将根据 ColorModel 的掩码进行。

单个 int 像素表示形式对此类的所有对象都有效,因为它总是能够表示在单个 int 中与此类一起使用的像素值。因此,使用此表示形式的方法将不会因无效的像素值而抛出 IllegalArgumentException

此颜色模型类似于 X11 TrueColor 可视分量。由 getRGBdefault 方法指定的默认 RGB ColorModel 是一个具有以下参数的 DirectColorModel

位数:        32
红色掩码:0x00ff0000
绿色掩码:0x0000ff00
蓝色掩码:0x000000ff
Alpha 掩码:0xff000000
颜色空间:sRGB
isAlphaPremultiplied:False
透明度:Transparency.TRANSLUCENT
transferType:DataBuffer.TYPE_INT
 

此类中的许多方法都是 final。这是因为基础本机图形代码假定此类的布局和操作,并在此处标记 final 的方法实现中反映了这些假定。您可以出于其他原因将此类子类化,但不能重写或修改那些方法的行为。

另请参见:
ColorModel, ColorSpace, SinglePixelPackedSampleModel, BufferedImage, ColorModel.getRGBdefault()

字段摘要
 
从类 java.awt.image.ColorModel 继承的字段
pixel_bits, transferType
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
DirectColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int transferType)
          根据指定参数构造 DirectColorModel
DirectColorModel(int bits, int rmask, int gmask, int bmask)
          根据指定的指示 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本的掩码构造 DirectColorModel
DirectColorModel(int bits, int rmask, int gmask, int bmask, int amask)
          根据指定的指示在 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)的掩码构造 DirectColorModel
 
方法摘要
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
          强制光栅数据与在 isAlphaPremultiplied 变量中指定的状态匹配,假定此 ColorModel 现在已对该数据进行正确描述。
 WritableRaster createCompatibleWritableRaster(int w, int h)
          创建具有指定宽度和高度、拥有与此 ColorModel 兼容的数据布局 (SampleModel) 的 WritableRaster
 int getAlpha(int pixel)
          返回指定像素(缩放范围从 0 到 255)的 alpha 分量。
 int getAlpha(Object inData)
          返回指定像素(在 0 到 255 之间缩放)的 alpha 分量。
 int getAlphaMask()
          返回指示 int 像素表示形式中哪些位包含 alpha 分量的掩码。
 int getBlue(int pixel)
          返回指定像素(在默认的 RGB ColorSpace sRGB 中缩放范围从 0 到 255)的蓝色颜色分量。
 int getBlue(Object inData)
          返回指定像素(在默认的 RGB ColorSpace sRGB 中缩放范围从 0 到 255)的蓝颜色分量。
 int getBlueMask()
          返回指示 int 像素表示形式中哪些位包含蓝色颜色分量的掩码。
 int[] getComponents(int pixel, int[] components, int offset)
          返回在 ColorModel 中已给定像素的未标准化颜色/alpha 分量。
 int[] getComponents(Object pixel, int[] components, int offset)
          返回在 ColorModel 中已给定像素的未标准化颜色/alpha 分量。
 int getDataElement(int[] components, int offset)
          在给定未标准化颜色/alpha 分量的数组的情况下,返回以 int 类型表示在此 ColorModel 中的像素值。
 Object getDataElements(int[] components, int offset, Object obj)
          在给定未标准化的颜色/alpha 分量的数组的情况下,返回此 ColorModel 中的像素的数据元素数组表示形式。
 Object getDataElements(int rgb, Object pixel)
          在默认 RGB 颜色模型中给定整数像素的表示形式的情况下,返回此 ColorModel 中像素的数据元素数组的表示形式。
 int getGreen(int pixel)
          返回指定像素(在默认 RGB ColorSpace sRGB 中缩放范围从 0 到 255)的绿色颜色分量。
 int getGreen(Object inData)
          返回指定像素(在默认的 RGB ColorSpace sRGB 中缩放范围从 0 到 255)的绿色颜色分量。
 int getGreenMask()
          返回指示 int 像素表示形式中哪些位包含绿色颜色分量的掩码。
 int getRed(int pixel)
          返回指定像素(在默认的 RGB ColorSpace sRGB 中缩放范围从 0 到 255)的红色颜色分量。
 int getRed(Object inData)
          返回指定像素(在默认的 RGB ColorSpace sRGB 中缩放范围从 0 到 255)的红色颜色分量。
 int getRedMask()
          返回指定 int 像素表示形式中哪些位包含红色分量的掩码。
 int getRGB(int pixel)
          返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。
 int getRGB(Object inData)
          返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。
 boolean isCompatibleRaster(Raster raster)
          如果 raster 与此 ColorModel 兼容,则返回 true,如果不兼容,则返回 false
 String toString()
          返回表示此 DirectColorModelString
 
从类 java.awt.image.PackedColorModel 继承的方法
createCompatibleSampleModel, equals, getAlphaRaster, getMask, getMasks, isCompatibleSampleModel
 
从类 java.awt.image.ColorModel 继承的方法
finalize, getColorSpace, getComponentSize, getComponentSize, getDataElement, getDataElements, getNormalizedComponents, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransferType, getTransparency, getUnnormalizedComponents, hasAlpha, hashCode, isAlphaPremultiplied
 
从类 java.lang.Object 继承的方法
clone, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

DirectColorModel

public DirectColorModel(int bits,
                        int rmask,
                        int gmask,
                        int bmask)
根据指定的指示 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本的掩码构造 DirectColorModel。因为像素值不包含 alpha 信息,所以所有像素都可视为不透明的,这意味着 alpha = 1.0。每个掩码中的所有位必须是连续的,并且符合 int 像素表示形式的最低有效位的指定数量。ColorSpace 是默认的 sRGB 空间。透明度值为 Transparency.OPAQUE。转换类型是存储单个像素的 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 中的最小者。

参数:
bits - 像素值中的位数量;例如,掩码中位的数量总和。
rmask - 指定指示整数像素中哪些位包含红色分量的掩码
gmask - 指定指示整数像素中哪些位包含绿色分量的掩码
bmask - 指定指示整数像素中哪些位包含蓝色分量的掩码

DirectColorModel

public DirectColorModel(int bits,
                        int rmask,
                        int gmask,
                        int bmask,
                        int amask)
根据指定的指示在 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)的掩码构造 DirectColorModel。如果 amask 为 0,则像素值不包含 alpha 信息,且所有像素都可视为不透明的,这意味着 alpha = 1.0。每个掩码中的所有位必须是连续的,并且符合 int 像素表示形式的最低有效位的指定数量。Alpha(如果存在)不是预先乘得的值。ColorSpace 是默认的 sRGB 空间。如果 alpha 不存在,则透明度值是 Transparency.OPAQUE,否则是 Transparency.TRANSLUCENT。转换类型是存储单个像素的 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 中的最小者。

参数:
bits - 像素值中的位数量;例如,掩码中位的数量总和。
rmask - 指定指示整数像素中哪些位包含红色分量的掩码
gmask - 指定指示整数像素中哪些位包含绿色分量的掩码
bmask - 指定指示整数像素中哪些位包含蓝色分量的掩码
amask - 指定指示整数像素中哪些位包含 alpha 分量的掩码

DirectColorModel

public DirectColorModel(ColorSpace space,
                        int bits,
                        int rmask,
                        int gmask,
                        int bmask,
                        int amask,
                        boolean isAlphaPremultiplied,
                        int transferType)
根据指定参数构造 DirectColorModel。颜色分量位于指定的 ColorSpace,后者必须属于类型 ColorSpace.TYPE_RGB,并且必须具有都是 0.0 的最小标准化分量值和都是 1.0 的最大值。掩码指定在 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)。如果 amask 为 0,则像素值不包含 alpha 信息,且所有像素都可视为不透明的,这意味着 alpha = 1.0。每个掩码中的所有位必须是连续的,并且符合 int 像素表示形式的最低有效位的指定数量。如果 alpha 存在,则 boolean isAlphaPremultiplied 指定如何解释像素值中的颜色和 alpha 样本。如果 booleantrue,则假定颜色样本已经乘以 alpha 样本。如果 alpha 不存在,则透明度值为 Transparency.OPAQUE,否则为 Transparency.TRANSLUCENT。转换类型是用来表示像素值的基本数组的类型,并且必须是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 之一。

参数:
space - 指定的 ColorSpace
bits - 像素值中位的数量;例如,掩码中位的数量和。
rmask - 指定指示整数像素中哪些位包含红色分量的掩码
gmask - 指定指示整数像素中哪些位包含绿色分量的掩码
bmask - 指定指示整数像素中哪些位包含蓝色分量的掩码
amask - 指定指示整数像素中哪些位包含 alpha 分量的掩码
isAlphaPremultiplied - true 如果将颜色样本预先乘以 alpha 样本;否则 false
transferType - 用来表示像素值的数组的类型
抛出:
IllegalArgumentException - 如果 space 不是 TYPE_RGB 空间,或如果最小/最大标准化分量值不是 0.0/1.0。
方法详细信息

getRedMask

public final int getRedMask()
返回指定 int 像素表示形式中哪些位包含红色分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含红色颜色样本的掩码。

getGreenMask

public final int getGreenMask()
返回指示 int 像素表示形式中哪些位包含绿色颜色分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含绿色颜色样本的掩码。

getBlueMask

public final int getBlueMask()
返回指示 int 像素表示形式中哪些位包含蓝色颜色分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含蓝色颜色样本的掩码。

getAlphaMask

public final int getAlphaMask()
返回指示 int 像素表示形式中哪些位包含 alpha 分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含 alpha 样本的掩码。

getRed

public final int getRed(int pixel)
返回指定像素(在默认的 RGB ColorSpace sRGB 中缩放范围从 0 到 255)的红色颜色分量。如有必要,可进行颜色转换。将像素值指定为 int。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则红色值为 0。

指定者:
ColorModel 中的 getRed
参数:
pixel - 指定的像素
返回:
指定像素(在 sRGB ColorSpace 中缩放范围从 0 到 255)的红色颜色分量。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部