java 获取图片像素_转:java提取图片中的像素

本文介绍了如何使用 Java 的 PixelGrabber 类来获取和处理图像中的像素。通过创建 PixelGrabber 实例,可以从 Image 或 ImageProducer 对象中抓取像素,并将其存储到整数数组中进行进一步操作。
摘要由CSDN通过智能技术生成

本文转自:http://www.infosys.tuwien.ac.at/teaching/courses/WebEngineering/References/java/docs/api/java/awt/image/PixelGrabber.html

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)

创建一个 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 - 数组中一行像素到下一行像素之间的距离另请参见:

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 - 数组中一行像素到下一行像素之间的距离另请参见:

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,则为 truegrabPixels

public boolean grabPixels()

throws InterruptedException

请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素。返回:如果成功抓取了像素,则返回 true;在中止、有错误或超时的情况下返回 false抛出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值