java.awt.image

接口
异常
java.lang.Object
  继承者 java.awt.Image
      继承者 java.awt.image.BufferedImage
所有已实现的接口:
RenderedImage, WritableRenderedImage, Transparency

public class BufferedImage
     
extends Image
implements WritableRenderedImage, Transparency

BufferedImage 子类描述具有可访问图像数据缓冲区的 ImageBufferedImage 由图像数据的 ColorModelRaster 组成。RasterSampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量。所有 BufferedImage 对象的左上角坐标都为 (0, 0)。因此,用来构造 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0。

此类依靠 Raster 的数据获取方法、数据设置方法,以及 ColorModel 的颜色特征化方法。

另请参见:
ColorModel, Raster, WritableRaster

字段摘要
static int TYPE_3BYTE_BGR
          表示一个具有 8 位 RGB 颜色分量的图像,对应于 Windows 风格的 BGR 颜色模型,具有用 3 字节存储的 Blue、Green 和 Red 三种颜色。
static int TYPE_4BYTE_ABGR
          表示一个具有 8 位 RGBA 颜色分量的图像,具有用 3 字节存储的 Blue、Green 和 Red 颜色以及 1 字节的 alpha。
static int TYPE_4BYTE_ABGR_PRE
          表示一个具有 8 位 RGBA 颜色分量的图像,具有用 3 字节存储的 Blue、Green 和 Red 颜色以及 1 字节的 alpha。
static int TYPE_BYTE_BINARY
          表示一个不透明的以字节打包的 1、2 或 4 位图像。
static int TYPE_BYTE_GRAY
          表示无符号 byte 灰度级图像(无索引)。
static int TYPE_BYTE_INDEXED
          表示带索引的字节图像。
static int TYPE_CUSTOM
          没有识别出图像类型,因此它必定是一个自定义图像。
static int TYPE_INT_ARGB
          表示一个图像,它具有合成整数像素的 8 位 RGBA 颜色分量。
static int TYPE_INT_ARGB_PRE
          表示一个图像,它具有合成整数像素的 8 位 RGBA 颜色分量。
static int TYPE_INT_BGR
          表示一个具有 8 位 RGB 颜色分量的图像,对应于 Windows 或 Solaris 风格的 BGR 颜色模型,具有打包为整数像素的 Blue、Green 和 Red 三种颜色。
static int TYPE_INT_RGB
          表示一个图像,它具有合成整数像素的 8 位 RGB 颜色分量。
static int TYPE_USHORT_555_RGB
          表示一个具有 5-5-5 RGB 颜色分量(5 位 red、5 位 green、5 位 blue)的图像,不带 alpha。
static int TYPE_USHORT_565_RGB
          表示一个具有 5-6-5 RGB 颜色分量(5 位 red、6 位 green、5 位 blue)的图像,不带 alpha。
static int TYPE_USHORT_GRAY
          表示一个无符号 short 灰度级图像(无索引)。
 
从类 java.awt.Image 继承的字段
accelerationPriority, SCALE_AREA_AVERAGING, SCALE_DEFAULT, SCALE_FAST, SCALE_REPLICATE, SCALE_SMOOTH, UndefinedProperty
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
BufferedImage(ColorModel cm, WritableRaster raster, boolean isRasterPremultiplied, Hashtable<?,?> properties)
          构造一个具有指定 ColorModelRaster 的新 BufferedImage
BufferedImage(int width, int height, int imageType)
          构造一个类型为预定义图像类型之一的 BufferedImage
BufferedImage(int width, int height, int imageType, IndexColorModel cm)
          构造一个类型为预定义图像类型之一的 BufferedImage:TYPE_BYTE_BINARY 或 TYPE_BYTE_INDEXED。
 
方法摘要
 void addTileObserver(TileObserver to)
          添加一个 tile observer。
 void coerceData(boolean isAlphaPremultiplied)
          强制该数据与 isAlphaPremultiplied 变量中指定的状态相匹配。
 WritableRaster copyData(WritableRaster outRaster)
          计算 BufferedImage 的一个任意矩形区域,并将其复制到指定的 WritableRaster
 Graphics2D createGraphics()
          创建一个 Graphics2D,可以将它绘制到此 BufferedImage 中。
 WritableRaster getAlphaRaster()
          返回一个 WritableRaster,它使用支持单独空间 alpha 通道的 ColorModel 对象(比如 ComponentColorModelDirectColorModel)表示 BufferedImage 对象的 alpha 通道。
 ColorModel getColorModel()
          返回 ColorModel
 Raster getData()
          以一个大 tile 的形式返回图像。
 Raster getData(Rectangle rect)
          计算并返回 BufferedImage 的一个任意区域。
 Graphics getGraphics()
          此方法返回 Graphics2D,但此处是出于向后兼容性的考虑。
 int getHeight()
          返回 BufferedImage 的高度。
 int getHeight(ImageObserver observer)
          返回 BufferedImage 的高度。
 int getMinTileX()
          返回 x 方向的最小 tile 索引。
 int getMinTileY()
          返回 y 方向的最小 tile 索引。
 int getMinX()
          返回此 BufferedImage 的最小 x 坐标。
 int getMinY()
          返回此 BufferedImage 的最小 y 坐标。
 int getNumXTiles()
          返回 x 方向的 tile 数。
 int getNumYTiles()
          返回 y 方向的 tile 数。
 Object getProperty(String name)
          按名称返回图像的属性。
 Object getProperty(String name, ImageObserver observer)
          按名称返回图像的属性。
 String[] getPropertyNames()
          返回由 getProperty(String) 识别的名称数组;如果没有识别出属性名,则返回 null
 WritableRaster getRaster()
          返回 WritableRaster
 int getRGB(int x, int y)
          返回默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中的整数像素。
 int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
          从图像数据的某一部分返回默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中整数像素数组。
 SampleModel getSampleModel()
          返回与此 BufferedImage 关联的 SampleModel
 ImageProducer getSource()
          返回生成该图像像素的对象。
 Vector<RenderedImage> getSources()
          返回 RenderedImage 对象的 Vector,该对象是此 BufferedImage 图像数据的直接来源,而不是这些直接来源的来源。
 BufferedImage getSubimage(int x, int y, int w, int h)
          返回由指定矩形区域定义的子图像。
 Raster getTile(int tileX, int tileY)
          返回 tile (tileXtileY)。
 int getTileGridXOffset()
          返回 tile 网格相对于原点的 x 偏移量(例如,tile (0, 0) 位置的 x 坐标)。
 int getTileGridYOffset()
          返回 tile 网格相对于原点的 y 偏移量(例如,tile (0, 0) 位置的 y 坐标)。
 int getTileHeight()
          返回 tile 高度(以像素为单位)。
 int getTileWidth()
          返回 tile 宽度(以像素为单位)。
 int getTransparency()
          返回透明度。
 int getType()
          返回图像类型。
 int getWidth()
          返回 BufferedImage 的宽度。
 int getWidth(ImageObserver observer)
          返回 BufferedImage 的宽度。
 WritableRaster getWritableTile(int tileX, int tileY)
          为写入签出一个 tile。
 Point[] getWritableTileIndices()
          返回 Point 对象的数组,它指示为写入签出了哪些 tile。
 boolean hasTileWriters()
          返回是否有为写入签出的 tile。
 boolean isAlphaPremultiplied()
          返回是否已预乘以 alpha。
 boolean isTileWritable(int tileX, int tileY)
          返回当前是否为写入签出 tile。
 void releaseWritableTile(int tileX, int tileY)
          放弃写入一个 tile 的权限。
 void removeTileObserver(TileObserver to)
          移除一个 tile observer。
 void setData(Raster r)
          将图像的矩形区域设置为指定 Raster r 的内容,假定该区域与 BufferedImage 处于相同的坐标空间。
 void setRGB(int x, int y, int rgb)
          将此 BufferedImage 中的像素设置为指定的 RGB 值。
 void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
          将默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中的整数像素数组设置为图像数据的一部分。
 String toString()
          返回此 BufferedImage 对象及其值的 String 表示形式。
 
从类 java.awt.Image 继承的方法
flush, getAccelerationPriority, getCapabilities, getScaledInstance, setAccelerationPriority
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

TYPE_CUSTOM

public static final int TYPE_CUSTOM
没有识别出图像类型,因此它必定是一个自定义图像。此类型仅用作 getType() 方法的返回值。

另请参见:
常量字段值

TYPE_INT_RGB

public static final int TYPE_INT_RGB
表示一个图像,它具有合成整数像素的 8 位 RGB 颜色分量。该图像具有不带 alpha 的 DirectColorModel。当具有透明 alpha 的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃 alpha,如 AlphaComposite 文档中的描述。

另请参见:
常量字段值

TYPE_INT_ARGB

public static final int TYPE_INT_ARGB
表示一个图像,它具有合成整数像素的 8 位 RGBA 颜色分量。该图像具有带 alpha 的 DirectColorModel。认为此图像中的颜色数据没有预乘以 alpha。当使用此类型作为 BufferedImage 构造方法的 imageType 参数时,所创建的图像与 JDK1.1 和更早期版本中创建的图像一致。

另请参见:
常量字段值

TYPE_INT_ARGB_PRE

public static final int TYPE_INT_ARGB_PRE
表示一个图像,它具有合成整数像素的 8 位 RGBA 颜色分量。该图像具有带 alpha 的 DirectColorModel。认为此图像中的颜色数据已预乘以 alpha。

另请参见:
常量字段值

TYPE_INT_BGR

public static final int TYPE_INT_BGR
表示一个具有 8 位 RGB 颜色分量的图像,对应于 Windows 或 Solaris 风格的 BGR 颜色模型,具有打包为整数像素的 Blue、Green 和 Red 三种颜色。不存在 alpha。该图像具有一个 DirectColorModel。当具有透明 alpha 的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃 alpha,如 AlphaComposite 文档中的描述。

另请参见:
常量字段值

TYPE_3BYTE_BGR

public static final int TYPE_3BYTE_BGR
表示一个具有 8 位 RGB 颜色分量的图像,对应于 Windows 风格的 BGR 颜色模型,具有用 3 字节存储的 Blue、Green 和 Red 三种颜色。不存在 alpha。该图像具有一个 ComponentColorModel。当具有透明 alpha 的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃 alpha,如 AlphaComposite 文档中的描述。

另请参见:
常量字段值

TYPE_4BYTE_ABGR

public static final int TYPE_4BYTE_ABGR
表示一个具有 8 位 RGBA 颜色分量的图像,具有用 3 字节存储的 Blue、Green 和 Red 颜色以及 1 字节的 alpha。该图像具有带 alpha 的 ComponentColorModel。认为此图像中的颜色数据没有预乘以 alpha。按照每个像素中字节地址从低到高的顺序 A、B、G、R 将字节数据插入单个字节数组中。

另请参见:
常量字段值

TYPE_4BYTE_ABGR_PRE

public static final int TYPE_4BYTE_ABGR_PRE
表示一个具有 8 位 RGBA 颜色分量的图像,具有用 3 字节存储的 Blue、Green 和 Red 颜色以及 1 字节的 alpha。该图像具有带 alpha 的 ComponentColorModel。认为此图像中的颜色数据已预乘以 alpha。按照每个像素中字节地址从低到高的顺序 A、B、G、R 将字节数据插入单个字节数组中。

另请参见:
常量字段值

TYPE_USHORT_565_RGB

public static final int TYPE_USHORT_565_RGB
表示一个具有 5-6-5 RGB 颜色分量(5 位 red、6 位 green、5 位 blue)的图像,不带 alpha。该图像具有一个 DirectColorModel。当具有透明 alpha 的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃 alpha,如 AlphaComposite 文档中的描述。

另请参见:
常量字段值

TYPE_USHORT_555_RGB

public static final int TYPE_USHORT_555_RGB
表示一个具有 5-5-5 RGB 颜色分量(5 位 red、5 位 green、5 位 blue)的图像,不带 alpha。此图像具有一个 DirectColorModel。当具有透明 alpha 的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃 alpha,如 AlphaComposite 文档中的描述。

另请参见:
常量字段值

TYPE_BYTE_GRAY

public static final int TYPE_BYTE_GRAY
表示无符号 byte 灰度级图像(无索引)。该图像具有带 CS_GRAY ColorSpaceComponentColorModel。当具有透明 alpha 的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃 alpha,如 AlphaComposite 文档中的描述。

另请参见:
常量字段值

TYPE_USHORT_GRAY

public static final int TYPE_USHORT_GRAY
表示一个无符号 short 灰度级图像(无索引)。该图像具有带 CS_GRAY ColorSpaceComponentColorModel。当具有透明 alpha 的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃 alpha,如 AlphaComposite 文档中的描述。

另请参见:
常量字段值

TYPE_BYTE_BINARY

public static final int TYPE_BYTE_BINARY
表示一个不透明的以字节打包的 1、2 或 4 位图像。该图像具有不带 alpha 的 IndexColorModel。当此类型用作 BufferedImage 构造方法(带 imageType 参数而不是 ColorModel 参数)的 imageType 参数时,创建一个 1 位图像,且其 IndexColorModel 具有默认 sRGB ColorSpace 中的两种颜色:{0, 0, 0} 和 {255, 255, 255}。

每个像素 2 位或 4 位的图像可以通过 BufferedImage 构造方法构造,该构造方法带一个 ColorModel 参数,这通过提供一个具有合适映射大小的 ColorModel 实现。

每个像素 8 位的图像应该使用 TYPE_BYTE_INDEXEDTYPE_BYTE_GRAY 图像类型,具体取决于它们的 ColorModel

当颜色数据存储在此类型的图像中时,由 IndexColorModel 确定 colormap 中最接近的颜色,并存储得到的索引。根据 IndexColorModel colormap 中的颜色,可以得到 alpha 分量或颜色分量的近似值及丢失的 alpha 或颜色分量。

另请参见:
常量字段值

TYPE_BYTE_INDEXED

public static final int TYPE_BYTE_INDEXED
表示带索引的字节图像。当此类型用作 BufferedImage 构造方法(带 imageType 参数而不带 ColorModel 参数 )的 imageType 参数时,创建一个 IndexColorModel,它具有 256 色 6/6/6 三色调色板,其余从 216 到 255 的颜色由默认 sRGB ColorSpace 的灰度级值填充。

当颜色数据存储在此类型的图像中时,由 IndexColorModel 确定 colormap 中最接近的颜色,并存储得到的索引。根据 IndexColorModel colormap 中的颜色,可以得到 alpha 分量或颜色分量的近似值及丢失的 alpha 或颜色分量。

另请参见:
常量字段值
构造方法详细信息

BufferedImage

public BufferedImage(int width,
                     int height,
                     int imageType)
构造一个类型为预定义图像类型之一的 BufferedImage。该图像的 ColorSpace 为默认的 sRGB 空间。

参数:
width - 所创建图像的宽度
height - 所创建图像的高度
imageType - 所创建图像的类型
另请参见:
ColorSpace, TYPE_INT_RGB, TYPE_INT_ARGB, TYPE_INT_ARGB_PRE, TYPE_INT_BGR, TYPE_3BYTE_BGR, TYPE_4BYTE_ABGR, TYPE_4BYTE_ABGR_PRE, TYPE_BYTE_GRAY, TYPE_USHORT_GRAY, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED, TYPE_USHORT_565_RGB, TYPE_USHORT_555_RGB

BufferedImage

public BufferedImage(int width,
                     int height,
                     int imageType,
                     IndexColorModel cm)
构造一个类型为预定义图像类型之一的 BufferedImage:TYPE_BYTE_BINARY 或 TYPE_BYTE_INDEXED。

如果图像类型为 TYPE_BYTE_BINARY,则使用颜色模型中的条目数确定图像的每像素具有 1、2 还是 4 位。如果颜色模型具有 1 或 2 个条目,则该图像每像素具有 1 位。如果颜色模型具有 3 或 4 个条目,则该图像的每像素具有 2 位。如果颜色模型的条目数在 5 到 16 之间,则该图像的每像素具有 4 位。否则,将抛出 IllegalArgumentException。

参数:
width - 所创建图像的宽度
height - 所创建图像的高度
imageType - 所创建图像的类型
cm - 所创建图像的 IndexColorModel
抛出:
IllegalArgumentException - 如果 imageType 不为 TYPE_BYTE_BINARY 或 TYPE_BYTE_INDEXED,或者 imageType 为 TYPE_BYTE_BINARY 且颜色映射的条目数大于 16。
另请参见:
TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED

BufferedImage

public BufferedImage(ColorModel cm,
                     WritableRaster raster,
                     boolean isRasterPremultiplied,
                     Hashtable<?,?> properties)
构造一个具有指定 ColorModelRaster 的新 BufferedImage。如果 RasterSampleModel 中 band 的数量和类型与 ColorModel(表示其颜色和 alpha 分量)所要求的数量和类型不匹配,则抛出 RasterFormatException。此方法可以将 Raster 颜色数据乘以或除以 alpha,以匹配 ColorModel 中的 alphaPremultiplied 状态。可以通过传入 String/ Object 对的 Hashtable 建立此 BufferedImage 的属性。

参数:
cm - 新图像的 ColorModel
raster - 图像数据的 Raster
isRasterPremultiplied - 如果为 true,则 raster 中的数据已预乘以 alpha。
properties - String/ Object 对的 Hashtable
抛出:
RasterFormatException - 如果 RasterSampleModel 中 band 的数量和类型与 ColorModel(表示其颜色和 alpha 分量)所要求的数量和类型不匹配。
IllegalArgumentException - 如果 rastercm 不一致
另请参见:
ColorModel, Raster, WritableRaster
方法详细信息

getType

public int getType()
返回图像类型。如果它不是已知的类型之一,则返回 TYPE_CUSTOM 。

返回:
BufferedImage 的图像类型。
另请参见:
TYPE_INT_RGB, TYPE_INT_ARGB, TYPE_INT_ARGB_PRE, TYPE_INT_BGR, TYPE_3BYTE_BGR, TYPE_4BYTE_ABGR, TYPE_4BYTE_ABGR_PRE, TYPE_BYTE_GRAY, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED, TYPE_USHORT_GRAY, TYPE_USHORT_565_RGB, TYPE_USHORT_555_RGB, TYPE_CUSTOM

getColorModel

public ColorModel getColorModel()
返回 ColorModel

指定者:
接口 RenderedImage 中的 getColorModel
返回:
BufferedImageColorModel

getRaster

public WritableRaster getRaster()
返回 WritableRaster

返回:
BufferedImageWriteableRaster

getAlphaRaster

public WritableRaster getAlphaRaster()
返回一个 WritableRaster,它使用支持单独空间 alpha 通道的 ColorModel 对象(比如 ComponentColorModelDirectColorModel)表示 BufferedImage 对象的 alpha 通道。如果此图像中没有与 ColorModel 关联的 alpha 通道,则返回 null。此方法假定 IndexColorModel 之外的所有 ColorModel 对象都具有一个单独的 alpha 通道(如果 ColorModel 支持 alpha),该通道存储为图像数据的最后一个 band。如果该图像使用查找表中一个具有 alpha 的 IndexColorModel,则此方法返回 null

JDK 1.6 中文手册