java.lang.Object
java.awt.image.PixelGrabber
- 所有已实现的接口:
-
ImageConsumer
PixelGrabber类实现了一个ImageConsumer,可以附加到Image或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;
// 根据需要处理像素...
}
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("等待像素时中断!");
return;
}
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
System.err.println("图像获取中止或出错");
return;
}
for (int j = 0; j < h; j++) {
for (int i = 0; i < w; i++) {
handlesinglepixel(x+i, y+j, pixels[j * w + i]);
}
}
}
- 参见:
-
Field Summary
Fields declared in interface java.awt.image.ImageConsumer
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT -
Constructor Summary
ConstructorsConstructorDescriptionPixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize) 创建一个PixelGrabber对象,从指定的ImageProducer生成的图像中抓取给定数组中的(x, y, w, h)矩形像素部分。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)矩形像素部分到给定数组中。 -
Method Summary
Modifier and TypeMethodDescriptionvoid请求PixelGrabber中止图像获取。获取存储在数组中的像素的ColorModel。int获取像素缓冲区的高度(调整后的图像高度)。获取像素缓冲区。int返回像素的状态。intgetWidth()获取像素缓冲区的宽度(调整后的图像宽度)。boolean请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递。booleangrabPixels(long ms) 请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递,或者直到指定的超时时间到达。voidimageComplete(int status) imageComplete方法是ImageConsumer API的一部分,该类必须实现以检索像素。voidsetColorModel(ColorModel model) setColorModel方法是ImageConsumer API的一部分,该类必须实现以检索像素。voidsetDimensions(int width, int height) setDimensions方法是ImageConsumer API的一部分,该类必须实现以检索像素。voidsetHints(int hints) setHints方法是ImageConsumer API的一部分,该类必须实现以检索像素。voidsetPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, byte[] pixels, int srcOff, int srcScan) setPixels方法是ImageConsumer API的一部分,该类必须实现以检索像素。voidsetPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan) setPixels方法是ImageConsumer API的一部分,该类必须实现以检索像素。voidsetProperties(Hashtable<?, ?> props) setProperties方法是ImageConsumer API的一部分,该类必须实现以检索像素。void请求PixelGrabber开始获取像素。intstatus()返回像素的状态。
-
Constructor Details
-
PixelGrabber
创建一个PixelGrabber对象,从指定图像中抓取(x, y, w, h)矩形像素部分到给定数组中。像素以默认的RGB ColorModel存储在数组中。像素(i, j)的RGB数据,其中(i, j)在矩形(x, y, w, h)内,存储在数组中的位置为pix[(j - y) * scansize + (i - x) + off]。- 参数:
-
img- 从中检索像素的图像 -
x- 要从图像中检索像素的矩形的左上角的x坐标,相对于图像的默认(未缩放)大小 -
y- 要从图像中检索像素的矩形的左上角的y坐标 -
w- 要检索的像素矩形的宽度 -
h- 要检索的像素矩形的高度 -
pix- 用于保存从图像中检索的RGB像素的整数数组 -
off- 存储第一个像素的数组中的偏移量 -
scansize- 数组中从一行像素到下一行的距离 - 参见:
-
PixelGrabber
创建一个PixelGrabber对象,从指定的ImageProducer生成的图像中抓取给定数组中的(x, y, w, h)矩形像素部分。像素以默认的RGB ColorModel存储在数组中。像素(i, j)的RGB数据,其中(i, j)在矩形(x, y, w, h)内,存储在数组中的位置为pix[(j - y) * scansize + (i - x) + off]。- 参数:
-
ip- 产生要从中检索像素的图像的ImageProducer -
x- 要从图像中检索像素的矩形的左上角的x坐标,相对于图像的默认(未缩放)大小 -
y- 要从图像中检索像素的矩形的左上角的y坐标 -
w- 要检索的像素矩形的宽度 -
h- 要检索的像素矩形的高度 -
pix- 用于保存从图像中检索的RGB像素的整数数组 -
off- 存储第一个像素的数组中的偏移量 -
scansize- 数组中从一行像素到下一行的距离 - 参见:
-
PixelGrabber
创建一个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
-
-
Method Details
-
startGrabbing
public void startGrabbing()请求PixelGrabber开始获取像素。 -
abortGrabbing
public void abortGrabbing()请求PixelGrabber中止图像获取。 -
grabPixels
请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递。- 返回:
- 如果成功抓取像素,则为true,中止、错误或超时时为false
- 抛出:
-
InterruptedException- 另一个线程中断了此线程
-
grabPixels
请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递,或者直到指定的超时时间到达。根据ms的值,此方法的行为如下:- 如果
ms == 0,则等待直到所有像素被传递 - 如果
ms > 0,则等待直到所有像素被传递,直到超时 - 如果
ms < 0,则如果所有像素被抓取,则返回true,否则返回false,并且不等待
- 参数:
-
ms- 等待图像像素到达的毫秒数,超时前 - 返回:
- 如果成功抓取像素,则为true,中止、错误或超时时为false
- 抛出:
-
InterruptedException- 另一个线程中断了此线程
- 如果
-
getStatus
public int getStatus()返回像素的状态。返回表示可用像素信息的ImageObserver标志。- 返回:
- 所有相关ImageObserver标志的按位或
- 参见:
-
getWidth
public int getWidth()获取像素缓冲区的宽度(调整后的图像宽度)。如果未为要抓取的像素矩形指定宽度,则此信息仅在图像传递尺寸后才可用。- 返回:
- 用于像素缓冲区的最终宽度,如果宽度尚不可知则为-1
- 参见:
-
getHeight
public int getHeight()获取像素缓冲区的高度(调整后的图像高度)。如果未为要抓取的像素矩形指定宽度,则此信息仅在图像传递尺寸后才可用。- 返回:
- 用于像素缓冲区的最终高度,如果高度尚不可知则为-1
- 参见:
-
getPixels
获取像素缓冲区。如果PixelGrabber没有使用显式像素缓冲区来保存像素,则在了解图像数据的大小和格式之前,此方法将返回null。由于PixelGrabber可能随时回退到在默认RGB ColorModel中累积数据,如果源图像使用多个ColorModel传递数据,则此方法返回的数组对象可能会随时间而变化,直到图像抓取完成为止。- 返回:
- 可能是字节数组或整数数组
- 另请参见:
-
getColorModel
获取存储在数组中的像素的ColorModel。如果PixelGrabber使用显式像素缓冲区构造,则此方法将始终返回默认的RGB ColorModel,否则在了解ImageProducer使用的ColorModel之前可能返回null。由于PixelGrabber可能随时回退到在默认RGB ColorModel中累积数据,如果源图像使用多个ColorModel传递数据,则此方法返回的ColorModel对象可能会随时间而变化,直到图像抓取完成,并且可能不反映ImageProducer用于传递像素的任何ColorModel对象。- 返回:
- 用于存储像素的ColorModel对象
- 另请参见:
-
setDimensions
public void setDimensions(int width, int height) setDimensions方法是ImageConsumer API的一部分,该类必须实现以检索像素。注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。
- 指定者:
-
setDimensions在接口ImageConsumer - 参数:
-
width- 尺寸的宽度 -
height- 尺寸的高度
-
setHints
public void setHints(int hints) setHints方法是ImageConsumer API的一部分,该类必须实现以检索像素。注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。
- 指定者:
-
setHints在接口ImageConsumer - 参数:
-
hints- 用于处理像素的一组提示
-
setProperties
setProperties方法是ImageConsumer API的一部分,该类必须实现以检索像素。注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。
- 指定者:
-
setProperties在接口ImageConsumer - 参数:
-
props- 属性列表
-
setColorModel
setColorModel方法是ImageConsumer API的一部分,该类必须实现以检索像素。注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。
- 指定者:
-
setColorModel在接口ImageConsumer - 参数:
-
model- 指定的ColorModel - 另请参见:
-
setPixels
public void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, byte[] pixels, int srcOff, int srcScan) setPixels方法是ImageConsumer API的一部分,该类必须实现以检索像素。注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。
- 指定者:
-
setPixels在接口ImageConsumer - 参数:
-
srcX- 要设置的像素区域的左上角的X坐标 -
srcY- 要设置的像素区域的左上角的Y坐标 -
srcW- 像素区域的宽度 -
srcH- 像素区域的高度 -
model- 指定的ColorModel -
pixels- 像素数组 -
srcOff- 像素数组中的偏移量 -
srcScan- 像素数组中从一行像素到下一行的距离 - 另请参见:
-
setPixels
public void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan) setPixels方法是ImageConsumer API的一部分,该类必须实现以检索像素。注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。
- 指定者:
-
setPixels在接口ImageConsumer - 参数:
-
srcX- 要设置的像素区域的左上角的X坐标 -
srcY- 要设置的像素区域的左上角的Y坐标 -
srcW- 像素区域的宽度 -
srcH- 像素区域的高度 -
model- 指定的ColorModel -
pixels- 像素数组 -
srcOff- 像素数组中的偏移量 -
srcScan- 像素数组中从一行像素到下一行的距离 - 另请参见:
-
imageComplete
public void imageComplete(int status) imageComplete方法是ImageConsumer API的一部分,该类必须实现以检索像素。注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。
- 指定者:
-
imageComplete在接口ImageConsumer - 参数:
-
status- 图像加载的状态 - 另请参见:
-
status
public int status()返回像素的状态。返回表示可用像素信息的ImageObserver标志。此方法和getStatus具有相同的实现,但getStatus是首选方法,因为它符合以"getXXX"形式命名信息检索方法的约定。- 返回:
- 所有相关ImageObserver标志的按位或
- 另请参见:
-