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
ConstructorDescriptionPixelGrabber
(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
返回像素的状态。int
getWidth()
获取像素缓冲区的宽度(调整后的图像宽度)。boolean
请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递。boolean
grabPixels
(long ms) 请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递,或者直到指定的超时时间到达。void
imageComplete
(int status) imageComplete方法是ImageConsumer API的一部分,该类必须实现以检索像素。void
setColorModel
(ColorModel model) setColorModel方法是ImageConsumer API的一部分,该类必须实现以检索像素。void
setDimensions
(int width, int height) setDimensions方法是ImageConsumer API的一部分,该类必须实现以检索像素。void
setHints
(int hints) setHints方法是ImageConsumer API的一部分,该类必须实现以检索像素。void
setPixels
(int srcX, int srcY, int srcW, int srcH, ColorModel model, byte[] pixels, int srcOff, int srcScan) setPixels方法是ImageConsumer API的一部分,该类必须实现以检索像素。void
setPixels
(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan) setPixels方法是ImageConsumer API的一部分,该类必须实现以检索像素。void
setProperties
(Hashtable<?, ?> props) setProperties方法是ImageConsumer API的一部分,该类必须实现以检索像素。void
请求PixelGrabber开始获取像素。int
status()
返回像素的状态。
-
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标志的按位或
- 另请参见:
-