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]);
}
}
}
PixelGrabber
public PixelGrabber(Image img,
int x,
int y,
int w,
int h,
int[] pix,
int off,
int scansize)
pix[(j - y) * scansize + (i - x) + off] 位置处。
参数:
img - 从中检索像素的图像
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
pix - 用于保存从图像中检索的 RGB 像素的整数数组
off - 数组中存储第一个像素的偏移量
scansize - 数组中一行像素到下一行像素之间的距离
另请参见:
PixelGrabber
public PixelGrabber(ImageProducer ip,
int x,
int y,
int w,
int h,
int[] pix,
int off,
int scansize)
pix[(j - y) * scansize + (i - x) + off] 位置处。
参数:
ip - 生成图像的
ImageProducer,从该图像中检索像素
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
pix - 用于保存从图像中检索的 RGB 像素的整数数组
off - 数组中存储第一个像素的偏移量
scansize - 数组中一行像素到下一行像素之间的距离
另请参见:
PixelGrabber
public PixelGrabber(Image img, int x, int y, int w, int h, boolean forceRGB)
参数:
img - 要从中检索图像数据的图像
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
forceRGB - 如果总是应该将像素转换为默认 RGB ColorModel,则为 true
grabPixels
public boolean grabPixels()
throws InterruptedException
返回:
如果成功抓取了像素,则返回 true;在中止、有错误或超时的情况下返回 false 抛出:
InterruptedException - 另一个线程中断了此线程。
















