public class PixelGrabber extends Object implements 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]); } } }
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
Constructor and Description |
---|
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)像素的矩形部分从指定的图像进入给定的数组。
|
PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)
创建一个PixelGrabber对象,从指定的ImageProducer生成的图像中获取像素的(x,y,w,h)矩形部分到给定的数组。
|
Modifier and Type | Method and Description |
---|---|
void |
abortGrabbing()
请求PixelGrabber中止图像提取。
|
ColorModel |
getColorModel()
获取存储在数组中的像素的ColorModel。
|
int |
getHeight()
获取像素缓冲区的高度(调整图像高度后)。
|
Object |
getPixels()
获取像素缓冲区。
|
int |
getStatus()
返回像素的状态。
|
int |
getWidth()
获取像素缓冲区的宽度(调整图像宽度后)。
|
boolean |
grabPixels()
请求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的一部分,该类必须实现这个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 |
startGrabbing()
请求PixelGrabber开始获取像素。
|
int |
status()
返回像素的状态。
|
public PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)
img
- 从中检索像素的图像
x
- 从图像中检索的像素矩形左上角的x坐标,相对于图像的默认(未缩放)尺寸
y
- 要从图像中检索的像素矩形的左上角的y坐标
w
- 要检索的像素
w
的宽度
h
- 要检索的像素
h
的高度
pix
- 要用于保存从图像检索的RGB像素的整数数组
off
- 将阵列的偏移量存储在第一个像素的位置
scansize
- 从阵列中的一行像素到下一个像素的距离
ColorModel.getRGBdefault()
public PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)
ip
- 生成从中检索像素的图像的
ImageProducer
x
- 从图像中检索的像素矩形左上角的x坐标,相对于图像的默认(未缩放)大小
y
- 要从图像中检索的像素矩形的左上角的y坐标
w
- 要检索的像素
w
的宽度
h
- 要检索的像素
h
的高度
pix
- 要用于保存从图像检索的RGB像素的整数数组
off
- 将阵列中的偏移量保存在第一个像素的位置
scansize
- 从阵列中的一行像素到下一个像素的距离
ColorModel.getRGBdefault()
public PixelGrabber(Image img, int x, int y, int w, int h, boolean forceRGB)
(w < 0)
或(h < 0)
,那么当传递该信息时,它们将默认为源数据的剩余宽度和高度。
img
- 从中检索图像数据的图像
x
- 从图像中检索的像素矩形左上角的x坐标,相对于图像的默认(未缩放)大小
y
- 要从图像中检索的像素矩形的左上角的y坐标
w
- 要检索的像素
w
的宽度
h
- 要检索的像素
h
的高度
forceRGB
- 如果像素应始终转换为默认的RGB ColorModel,则为true
public void startGrabbing()
public void abortGrabbing()
public boolean grabPixels() throws InterruptedException
InterruptedException
- 另一个线程已经中断了这个线程。
public boolean grabPixels(long ms) throws InterruptedException
ms
:取决于ms的值:
ms == 0
,等待直到所有像素都被传送 ms > 0
,等待直到所有像素在超时到期时传送。 ms < 0
,返回true
如果所有的像素都被抓住, false
false并不等待。 ms
- 等待图像像素超时前到达的毫秒数
InterruptedException
- 另一个线程已经中断了这个线程。
public int getStatus()
ImageObserver
public int getWidth()
getStatus()
public int getHeight()
getStatus()
public Object getPixels()
public ColorModel getColorModel()
getStatus()
,
ColorModel.getRGBdefault()
,
setColorModel(ColorModel)
public void setDimensions(int width, int height)
注意:此方法旨在由图像的ImageProducer调用其像素被抓取。 使用此类从图像中检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索所请求的像素时出现问题。
setDimensions
在界面
ImageConsumer
width
-
width
的宽度
height
- 尺寸的高度
public void setHints(int hints)
注意:此方法旨在由图像的ImageProducer调用其像素被抓取。 使用此类从图像中检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索所请求的像素时出现问题。
setHints
在界面
ImageConsumer
hints
- 一组用于处理像素的提示
public void setProperties(Hashtable<?,?> props)
注意:此方法旨在由图像的ImageProducer调用其像素被抓取。 使用此类从图像中检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索所请求的像素时出现问题。
setProperties
中的
ImageConsumer
props
- 属性列表
public void setColorModel(ColorModel model)
注意:此方法旨在由图像的ImageProducer调用其像素被抓取。 使用此类从图像中检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索所请求的像素时出现问题。
setColorModel
在界面
ImageConsumer
model
- 指定的
ColorModel
getColorModel()
public void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, byte[] pixels, int srcOff, int srcScan)
注意:此方法旨在由图像的ImageProducer调用其像素被抓取。 使用此类从图像中检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索所请求的像素时出现问题。
setPixels
在界面
ImageConsumer
srcX
- 要设置的像素区域的左上角的X坐标
srcY
- 要设置的像素区域的左上角的Y坐标
srcW
- 像素面积的宽度
srcH
- 像素面积的高度
model
- 指定的
ColorModel
pixels
- 像素数组
srcOff
- 像素数组的偏移量
srcScan
- 像素阵列中的一行像素到下一像素的距离
getPixels()
public void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan)
注意:此方法旨在由图像的ImageProducer调用其像素被抓取。 使用此类从图像中检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索所请求的像素时出现问题。
setPixels
在界面
ImageConsumer
srcX
- 要设置的像素区域的左上角的X坐标
srcY
- 要设置的像素区域的左上角的Y坐标
srcW
- 像素面积的宽度
srcH
- 像素面积的高度
model
- 指定的
ColorModel
pixels
- 像素数组
srcOff
- 像素阵列的偏移量
srcScan
- 像素阵列中的一行像素到下一行的距离
getPixels()
public void imageComplete(int status)
注意:此方法旨在由图像的ImageProducer调用其像素被抓取。 使用此类从图像中检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索所请求的像素时出现问题。
imageComplete
在界面
ImageConsumer
status
- 图像加载的状态
ImageProducer.removeConsumer(java.awt.image.ImageConsumer)
public int status()
getStatus
具有相同的实现,但getStatus
是首选方法,因为它符合以“getXXX”形式命名信息检索方法的惯例。
ImageObserver
, getStatus()