所有类


java.awt.image
类 PixelGrabber

java.lang.Object
  继承者 java.awt.image.PixelGrabber
所有已实现的接口:
ImageConsumer

public class PixelGrabber
   
   
   
   
   
extends Object
implements ImageConsumer

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]);
            }
        }
 }

 

另请参见:
ColorModel.getRGBdefault()

字段摘要
 
从接口 java.awt.image.ImageConsumer 继承的字段
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
 
构造方法摘要
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) 抓取到给定的数组中。
 
方法摘要
 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 的一部分。
 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()
          返回像素的状态返回表示可用像素信息的 ImageObserver 标志。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

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

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

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,则为 true
方法详细信息

startGrabbing

public void startGrabbing()
请求 PixelGrabber 开始获取像素。


abortGrabbing

public void abortGrabbing()
请求 PixelGrabber 中止图像的获取。


grabPixels

public boolean grabPixels()
                   throws InterruptedException
请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素。

返回:
如果成功抓取了像素,则返回 true;在中止、有错误或超时的情况下返回 false
抛出:
InterruptedException - 另一个线程中断了此线程。

grabPixels

public boolean grabPixels(long ms)
                   throws InterruptedException
请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素,或者等待到超时期已过。根据 ms 值的不同,此方法采取下列行为:
  • 如果 ms == 0,则等待到传递完所有像素
  • 如果 ms > 0,则传递所有像素,直到超时为止。
  • 如果 ms < 0,则在抓取所有像素后返回 true;否则返回 false 并且不等待。

参数:
ms - 在超时前等待获取图像像素的毫秒数
返回:
如果成功抓取了像素,则返回 true;在中止、有错误或超时的情况下返回 false
抛出:
InterruptedException - 另一个线程中断了此线程。

getStatus

public int getStatus()
返回像素的状态。返回表示可用像素信息的 ImageObserver 标志。

返回:
所有相关 ImageObserver 标志按位进行 OR 运算后的结果
另请参见:
ImageObserver

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部