JavaTM Platform
Standard Ed. 6

java.awt.image
类 PixelGrabber

java.lang.Object
  继承者 java.awt.image.PixelGrabber
所有已实现的接口:
ImageConsumer

public class PixelGrabber
extends Object
implements ImageConsumer

PixelGrabber 类实现可以附加在 Image 或 ImageProducer 对象上获得图像像素子集的 ImageConsumer。下面是一个示例:


 public void handlesinglepixel(int x, int y, int pixel) {
        int alpha = (pixel >> 24) & 0xff;
        int red   = (pixel >> 16) & 0xff;
        int green = (pixel >>  8) & 0xff;
        int blue  = (pixel      ) & 0xff;
        // Deal with the pixel as necessary...
 }

 public void handlepixels(Image img, int x, int y, int w, int h) {
        int[] pixels = new int[w * h];
        PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);
        try {
            pg.grabPixels();
        } catch (InterruptedException e) {
            System.err.println("interrupted waiting for pixels!");
            return;
        }
        if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
            System.err.println("image fetch aborted or errored");
            return;
        }
        for (int j = 0; j < h; j++) {
            for (int i = 0; i < w; i++) {
                handlesinglepixel(x+i, y+j, pixels[j * w + i]);
            }
        }
 }

 

另请参见:
ColorModel.getRGBdefault()

字段摘要
 
从接口 java.awt.image.ImageConsumer 继承的字段
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
 
构造方法摘要
PixelGrabber(Image img, int x, int y, int w, int h, boolean forceRGB)
          创建一个 PixelGrabber 对象,以从指定的图像中抓取像素矩形部分 (x, y, w, h)。
PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)
          创建一个 PixelGrabber 对象,以从指定图像将像素矩形部分 (x, y, w, h) 抓取到给定的数组中。
PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)
          创建一个 PixelGrabber 对象,以从指定 ImageProducer 所生成的图像中将像素矩形部分 (x, y, w, h) 抓取到给定的数组中。
 
方法摘要
 void abortGrabbing()
          请求 PixelGrabber 中止获取图像。
 ColorModel getColorModel()
          获取该数组中所存储像素的 ColorModel。
 int getHeight()
          获取(调整图像高度后的)像素缓冲区的高度。
 Object getPixels()
          获取像素缓冲区。
 int getStatus()
          返回像素的状态。
 int getWidth()
          获取(调整图像宽度后的)像素缓冲区的宽度。
 boolean grabPixels()
          请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素。
 boolean grabPixels(long ms)
          请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素,或者等待到用完超时期。
 void imageComplete(int status)
          imageComplete 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。
 void setColorModel(ColorModel model)
          setColorModel 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。
 void setDimensions(int width, int height)
          setDimensions 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。
 void setHints(int hints)
          setHints 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。
 void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, byte[] pixels, int srcOff, int srcScan)
          setPixels 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。
 void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan)
          setPixels 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。
 void setProperties(Hashtable<?,?> props)
          setProperties 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。
 void startGrabbing()
          请求 PixelGrabber 开始获取像素。
 int status()
          返回像素的状态。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

PixelGrabber

public PixelGrabber(Image img,
                    int x,
                    int y,
                    int w,
                    int h,
                    int[] pix,
                    int off,
                    int scansize)
创建一个 PixelGrabber 对象,以从指定图像将像素矩形部分 (x, y, w, h) 抓取到给定的数组中。以默认的 RGB ColorModel 形式将像素存储到数组中。像素 (i, j)((i, j) 处于矩形 (x, y, w, h) 内)的 RGB 数据存储在数组中的 pix[(j - y) * scansize + (i - x) + off] 位置处。

参数:
img - 从中检索像素的图像
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
pix - 用于保存从图像中检索的 RGB 像素的整数数组
off - 数组中存储第一个像素的偏移量
scansize - 数组中一行像素到下一行像素之间的距离
另请参见:
ColorModel.getRGBdefault()

PixelGrabber

public PixelGrabber(ImageProducer ip,
                    int x,
                    int y,
                    int w,
                    int h,
                    int[] pix,
                    int off,
                    int scansize)
创建一个 PixelGrabber 对象,以从指定 ImageProducer 所生成的图像中将像素矩形部分 (x, y, w, h) 抓取到给定的数组中。以默认的 RGB ColorModel 形式将像素存储到数组中。像素 (i, j)((i, j) 处于矩形 (x, y, w, h) 内)的 RGB 数据存储在数组中的 pix[(j - y) * scansize + (i - x) + off] 位置处。

参数:
ip - 生成图像的 ImageProducer,从该图像中检索像素
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
pix - 用于保存从图像中检索的 RGB 像素的整数数组
off - 数组中存储第一个像素的偏移量
scansize - 数组中一行像素到下一行像素之间的距离
另请参见:
ColorModel.getRGBdefault()

PixelGrabber

public PixelGrabber(Image img,
                    int x,
                    int y,
                    int w,
                    int h,
                    boolean forceRGB)
创建一个 PixelGrabber 对象,以从指定的图像中抓取像素矩形部分 (x, y, w, h)。如果每次调用 setPixels 都使用相同的 ColorModel,则像素以原 ColorModel 形式存储,否则像素将以默认 RGB ColorModel 形式存储。如果 forceRGB 参数为 true,则像素将总是以默认 RGB ColorModel 形式存储。无论是哪种情况,PixelGrabber 都会分配一个缓冲区来保存这些像素。如果 (w < 0) 或 (h < 0),则它们默认为传递信息时保存的源数据的宽度和高度。

参数:
img - 要从中检索图像数据的图像
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
forceRGB - 如果总是应该将像素转换为默认 RGB ColorModel,则为 true
方法详细信息

startGrabbing

public void startGrabbing()
请求 PixelGrabber 开始获取像素。


abortGrabbing

public void abortGrabbing()
请求 PixelGrabber 中止获取图像。


grabPixels

public boolean grabPixels()
                   throws InterruptedException
请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素。

返回:
如果成功抓取了像素,则返回 true;在中止、有错误或超时的情况下返回 false
抛出:
InterruptedException - 另一个线程中断了此线程。

grabPixels

public boolean grabPixels(long ms)
                   throws InterruptedException
请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素,或者等待到用完超时期。根据 ms 值的不同,此方法的行为如下:

参数:
ms - 在超时前等待获取图像像素的毫秒数
返回:
如果成功抓取了像素,则返回 true;在中止、有错误或超时的情况下返回 false
抛出:
InterruptedException - 另一个线程中断了此线程。

getStatus

public int getStatus()
返回像素的状态。返回表示可用像素信息的 ImageObserver 标志。

返回:
所有相关 ImageObserver 标志的按位或
另请参见:
ImageObserver

getWidth

public int getWidth()
获取(调整图像宽度后的)像素缓冲区的宽度。如果未指定要抓取的像素矩形的宽度,则只有在为图像传递尺寸后此信息才有效。

返回:
像素缓冲区的最终宽度;如果宽度未知,则为 -1
另请参见:
getStatus()

getHeight

public int getHeight()
获取(调整图像高度后的)像素缓冲区的高度。如果未指定要抓取的像素矩形的高度,则只有在为图像传递尺寸后此信息才有效。

返回:
像素缓冲区的最终高度;如果高度未知,则为 -1
另请参见:
getStatus()

getPixels

public Object getPixels()
获取像素缓冲区。如果没有使用保存像素的显式像素缓冲区来构造 PixelGrabber,则在知道图像数据的大小和格式前,此方法将返回 null。因为当源图像使用多个 ColorModel 来传递数据时,PixelGrabber 随时都可能回退到以默认 RGB ColorModel 方式存储数据,所以在图像抓取完成前,此方法返回的数组对象可能随时间的推移而更改。

返回:
byte 数组或 int 数组
另请参见:
getStatus(), setPixels(int, int, int, int, ColorModel, byte[], int, int), setPixels(int, int, int, int, ColorModel, int[], int, int)

getColorModel

public ColorModel getColorModel()
获取该数组中所存储像素的 ColorModel。如果使用显式像素缓冲区构造此 PixelGrabber,则此方法将始终返回默认的 RGB ColorModel;否则,在知道 ImageProducer 使用的 ColorModel 前,此方法可能返回 null。因为当源图像使用多个 ColorModel 来传递数据时,PixelGrabber 随时都可能回退到以默认 RGB ColorModel 形式存储数据,所以在图像抓取完成前,此方法返回的 ColorModel 对象可能随时间的推移而更改,且可能无法反映 ImageProducer 用来传递像素的任何 ColorModel 对象。

返回:
存储像素所用的 ColorModel 对象
另请参见:
getStatus(), ColorModel.getRGBdefault(), setColorModel(ColorModel)

setDimensions

public void setDimensions(int width,
                          int height)
setDimensions 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。

注:此方法应该由要从中抓取像素的 Image 的 ImageProducer 调用。使用此类检索图像像素的开发人员应该避免直接调用此方法,因为该调用操作可能导致检索请求像素时出现问题。

指定者:
接口 ImageConsumer 中的 setDimensions
参数:
width - 尺寸的宽度
height - 尺寸的高度

setHints

public void setHints(int hints)
setHints 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。

注:此方法应该由要从中抓取像素的 Image 的 ImageProducer 调用。使用此类检索图像像素的开发人员应该避免直接调用此方法,因为该调用操作可能导致检索请求像素时出现问题。

指定者:
接口 ImageConsumer 中的 setHints
参数:
hints - 用于处理像素的提示集

setProperties

public void setProperties(Hashtable<?,?> props)
setProperties 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。

注:此方法应该由要从中抓取像素的 Image 的 ImageProducer 调用。使用此类检索图像像素的开发人员应该避免直接调用此方法,因为该调用操作可能导致检索请求像素时出现问题。

指定者:
接口 ImageConsumer 中的 setProperties
参数:
props - 属性列表

setColorModel

public void setColorModel(ColorModel model)
setColorModel 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。

注:此方法应该由要从中抓取像素的 Image 的 ImageProducer 调用。使用此类检索图像像素的开发人员应该避免直接调用此方法,因为该调用操作可能导致检索请求像素时出现问题。

指定者:
接口 ImageConsumer 中的 setColorModel
参数:
model - 指定的 ColorModel
另请参见:
getColorModel()

setPixels

public void setPixels(int srcX,
                      int srcY,
                      int srcW,
                      int srcH,
                      ColorModel model,
                      byte[] pixels,
                      int srcOff,
                      int srcScan)
setPixels 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。

注:此方法应该由要从中抓取像素的 Image 的 ImageProducer 调用。使用此类检索图像像素的开发人员应该避免直接调用此方法,因为该调用操作可能导致检索请求像素时出现问题。

指定者:
接口 ImageConsumer 中的 setPixels
参数:
srcX - 要设置的像素区域左上角的 X 坐标
srcY - 要设置的像素区域左上角的 Y 坐标
srcW - 像素区域的宽度
srcH - 像素区域的高度
model - 指定的 ColorModel
pixels - 像素数组
srcOff - 像素数组中的偏移量
srcScan - 像素数组中一行像素到下一行的距离
另请参见:
getPixels()

setPixels

public void setPixels(int srcX,
                      int srcY,
                      int srcW,
                      int srcH,
                      ColorModel model,
                      int[] pixels,
                      int srcOff,
                      int srcScan)
setPixels 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。

注:此方法应该由要从中抓取像素的 Image 的 ImageProducer 调用。使用此类检索图像像素的开发人员应该避免直接调用此方法,因为该调用操作可能导致检索请求像素时出现问题。

指定者:
接口 ImageConsumer 中的 setPixels
参数:
srcX - 要设置的像素区域左上角的 X 坐标
srcY - 要设置的像素区域左上角的 Y 坐标
srcW - 像素区域的宽度
srcH - 像素区域的高度
model - 指定的 ColorModel
pixels - 像素数组
srcOff - 像素数组中的偏移量
srcScan - 像素数组中一行像素到下一行的距离
另请参见:
getPixels()

imageComplete

public void imageComplete(int status)
imageComplete 方法是 ImageConsumer API 的一部分,此类必需实现 ImageConsumer API 来检索像素。

注:此方法应该由要从中抓取像素的 Image 的 ImageProducer 调用。使用此类检索图像像素的开发人员应该避免直接调用此方法,因为该调用操作可能导致检索请求像素时出现问题。

指定者:
接口 ImageConsumer 中的 imageComplete
参数:
status - 正在加载的图像的状态
另请参见:
ImageProducer.removeConsumer(java.awt.image.ImageConsumer)

status

public int status()
返回像素的状态。返回表示可用像素信息的 ImageObserver 标志。此方法和 getStatus 具有相同的实现,但是优先使用 getStatus 方法,因为它遵循检索信息方法的命名约定,即 "getXXX" 的形式。

返回:
所有相关 ImageObserver 标志的按位或
另请参见:
ImageObserver, getStatus()

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策