java.lang.Object | +----java.awt.image.PixelGrabber
PixelGrabber 类执行一个已连接到某个 Image 的 ImageConsumer 或 ImageProducer 对象来检索该图像的像素子集。示例如下:
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
- 参见:
- getRGBdefault
构造子索引
- PixelGrabber(Image, int, int, int, int, boolean)
- 创建一个 PixelGrabber 对象以便从指定图像中抓取像素的 (x, y, w, h) 矩形部分。
- PixelGrabber(Image, int, int, int, int, int[], int, int)
- 创建一个 PixelGrabber 对象以便从指定图像中抓取像素的 (x, y, w, h) 矩形部分放入给定数组中。
- PixelGrabber(ImageProducer, int, int, int, int, int[], int, int)
- 创建一个 PixelGrabber 对象以便从指定的 ImageProducer 所产生的图像中抓取像素的
(x, y, w, h) 矩形部分放入给定数组中。
方法索引
- abortGrabbing()
- 请求 PixelGrabber 放弃图像取装。
- getColorModel()
- 为保存在数组中的像素获取 ColorModel 。
- getHeight()
- 获取像素缓冲区的高度 (调整图像高度之后) 。
- getPixels()
- 获取像素缓冲区。
- getStatus()
- 返回像素状态。
- getWidth()
- 获取像素缓冲区的宽度 (调整图像宽度之后) 。
- grabPixels()
- 请求 Image 或 ImageProducer 开始发送像素并等待有兴趣发送的矩形中的所有像素。
- grabPixels(long)
- 请求 Image 或 ImageProducer 开始发送像素并等待有兴趣发送的矩形中的所有像素直到消耗完超时安排为止。
- imageComplete(int)
- imageComplete 方法 ImageConsumer API 的一部分,该类必须执行以获取像素。
- setColorModel(ColorModel)
- setColorModel 方法 ImageConsumer API 的一部分,该类必须执行以获取像素。
- setDimensions(int, int)
- setDimensions 方法 ImageConsumer API 的一部分,该类必须执行以获取像素。
- setHints(int)
- setHints 方法 ImageConsumer API 的一部分,该类必须执行以获取像素。
- setPixels(int, int, int, int, ColorModel, byte[], int, int)
- setPixels 方法 ImageConsumer API 的一部分,该类必须执行以获取像素。
- setPixels(int, int, int, int, ColorModel, int[], int, int)
- setPixels 方法 ImageConsumer API 的一部分,该类必须执行以获取像素。
- setProperties(Hashtable)
- setProperties 方法 ImageConsumer API 的一部分,该类必须执行以获取像素。
- startGrabbing()
- 请求 PixelGrabber 开始装取像素。
- status()
- 不推荐:用 getStatus() 替换。
构造子
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 里的数组中。矩形 (x, y, w, h) 内像素 (i, j) 的 RGB 数据存储在位于数组的
pix[(j - y) * scansize + (i - x) + off] 偏移位置。
- 参数:
- img - 待检索像素的图像
- x - 待检索图像的像素矩形左上角相对于该图像缺省的 (未定的) 尺寸 x 坐标。
- y - 待检索图像的像素矩形左上角 y 坐标。
- w - 待检索的像素矩形的宽度。
- h - 待检索的像素矩形的高度。
- pix - 用于保留从图像检索来的 RGB 像素的整数数组。
- off - 存储在数组中的第一个像素的偏移量
- scansize - 数组中一个像素与下一个像素之间的距离。
- 参见:
- 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 里的数组中。矩形 (x, y, w, h) 内像素 (i, j) 的 RGB 数据存储在位于 pix[(j - y) * scansize + (i - x) + off] 的数组中。
- 参数:
- img - 待检索像素的图像
- x - 待检索图像的像素矩形左上角相对于该图像缺省的 (未定的) 尺寸 x 坐标。
- y - 待检索图像的像素矩形左上角 y 坐标。
- w - 待检索的像素矩形的宽度
- h - 待检索的像素矩形的高度
- pix - 用于保留从图像检索来的 RGB 像素的整数数组
- off - 存储在数组中的第一个像素的偏移量
- scansize - 数组中一个像素与下一个像素之间的距离。
- 参见:
- 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
参数为真,则像素无论如何都将在缺省的 RGB ColorModel 中积累。在任何一种情况下,
PixelGrabber 都分配一个缓冲区来保存像素。若 (w <0) 或 (h < 0), 则发送信息时它们将默认保留的源数据的宽度和长度。
- 参数:
- img - 待检索图像数据的图像
- x - 待检索图像的像素矩形左上角相对于该图像缺省的 (未定的) 尺寸 x 坐标
- y - 待检索图像的像素矩形左上角的 y 坐标
- w - 待检索的像素矩形的宽度
- h - 待检索的像素矩形的高度
- forceRGB - 若像素总是应转换为缺省的 RGB ColorModel 时为真
方法
startGrabbing
public synchronized void startGrabbing()
- 请求 PixelGrabber 开始装取像素。
abortGrabbing
public synchronized void abortGrabbing()
- 请求 PixelGrabber 放弃图像装取。
grabPixels
public boolean grabPixels() throws InterruptedException
- 请求 Image 或 ImageProducer 开始发送像素并等待有兴趣发送的矩形中的所有像素。
- 返回值:
- 若抓取像素成功则为 true ,失败则为 false ,超时则为 error
- 抛出:
InterruptedException
- 另一个线程已中断该线程。
grabPixels
public synchronized boolean grabPixels(long ms) throws InterruptedException
- 请求 Image 或 ImageProducer 开始发送像素并等待有兴趣发送的矩形中的所有像素直到消耗完超时安排为止。
- 参数:
- ms - 在超时前等待图像像素到来的毫秒数
- 返回值:
- 若抓取像素成功则为 true ,失败则为 false ,超时则为 error
- 抛出:
InterruptedException
- 另一个线程已中断该线程。
getStatus
public synchronized int getStatus()
- 返回像素状态。返回表示可用像素的 ImageObserver 标志。
- 返回值:
- 所有相关 ImageObserver 标志的位或
- 参见:
- ImageObserver
getWidth
public synchronized int getWidth()
- 获取像素缓冲区的宽度 (调整图像宽度之后使用) 。若未指定待抓取的像素矩形宽度,则该信息仅在图象发送其尺寸之后才可用。
- 返回值:
- 像素缓冲区使用的最终宽度,若该宽度未知则为 -1
- 参见:
- getStatus
getHeight
public synchronized int getHeight()
- 获取像素缓冲区的高度 (调整图像高度之后使用) 。若未指定待抓取的像素矩形宽度,则该信息仅在图象发送其尺寸之后才可用。。
- 返回值:
- 像素缓冲区使用的最终宽度,若该宽度未知则为 -1
- 参见:
- getStatus
getPixels
public synchronized Object getPixels()
- 获取像素缓冲区。若 PixelGrabber 不是用显式像素缓冲区来构造的,则该方法将返回 null ,直到知晓图像数据的尺寸和格式为止。因为若源图像使用多个 ColorModel 来发送数据,则任何时侯 PixelGrabber 都可求助于缺省的 RGB ColorModel 中的积累数据,该方法返回的数组对象可以改变超时安排,直到图像抓取完成。
- 返回值:
- 一个字节数组或者一个 int 数组
- 参见:
- getStatus
getColorModel
public synchronized ColorModel getColorModel()
- 获取保存在数组中像素的 ColorModel 。若 PixelGrabber 不是用显式像素缓冲区构造的,则该方法将返回缺省 RGB ColorModel,否则返回 null 直到知道图像数据的尺寸和格式为止。因为若源图像使用多个 ColorModel 来发送数据,则任何时侯 PixelGrabber 都可能求助于缺省的 RGB ColorModel 中的积累数据,该方法返回的数组对象可以改变,直到图像抓取完成。
- 返回值:
- 用于存储像素的 ColorModel 对象
- 参见:
- getStatus, getRGBdefault
setDimensions
public void setDimensions(int width,
int height)
- setDimensions 方法是 ImageConsumer API 的一部分,该类必须执行以获取像素。
setHints
public void setHints(int hints)
- setHints 方法是 ImageConsumer API 的一部分,该类必须执行以获取像素。
setProperties
public void setProperties(Hashtable props)
- setProperties 方法是 ImageConsumer API 的一部分,该类必须执行以获取像素。
setColorModel
public void setColorModel(ColorModel model)
- setColorModel 方法是 ImageConsumer API 的一部分,该类必须执行以获取像素。
setPixels
public void setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
byte pixels[],
int srcOff,
int srcScan)
- setPixels 方法是 ImageConsumer API 的一部分,该类必须执行以获取像素。
setPixels
public void setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
int pixels[],
int srcOff,
int srcScan)
- setPixels 方法是 ImageConsumer API 的一部分,该类必须执行以获取像素。
imageComplete
public synchronized void imageComplete(int status)
- imageComplete 方法是 ImageConsumer API 的一部分,该类必须执行以获取像素。
status
public synchronized int status()
- 不推荐用 getStatus() 替换。