Module java.desktop
Package java.awt.image

Class PixelGrabber

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

public class PixelGrabber extends Object implements 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

  • Constructor Summary

    Constructors
    Constructor
    Description
    PixelGrabber(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 Type
    Method
    Description
    void
    请求PixelGrabber中止图像获取。
    获取存储在数组中的像素的ColorModel。
    int
    获取像素缓冲区的高度(调整后的图像高度)。
    获取像素缓冲区。
    int
    返回像素的状态。
    int
    获取像素缓冲区的宽度(调整后的图像宽度)。
    boolean
    请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递。
    boolean
    grabPixels(long ms)
    请求Image或ImageProducer开始传递像素,并等待兴趣区域内的所有像素被传递,或者直到指定的超时时间到达。
    void
    imageComplete(int status)
    imageComplete方法是ImageConsumer API的一部分,该类必须实现以检索像素。
    void
    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()
    返回像素的状态。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • 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)的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

      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)的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

      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
  • Method Details

    • 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标志的按位或
      参见:
    • getWidth

      public int getWidth()
      获取像素缓冲区的宽度(调整后的图像宽度)。如果未为要抓取的像素矩形指定宽度,则此信息仅在图像传递尺寸后才可用。
      返回:
      用于像素缓冲区的最终宽度,如果宽度尚不可知则为-1
      参见:
    • getHeight

      public int getHeight()
      获取像素缓冲区的高度(调整后的图像高度)。如果未为要抓取的像素矩形指定宽度,则此信息仅在图像传递尺寸后才可用。
      返回:
      用于像素缓冲区的最终高度,如果高度尚不可知则为-1
      参见:
    • getPixels

      public Object getPixels()
      获取像素缓冲区。如果PixelGrabber没有使用显式像素缓冲区来保存像素,则在了解图像数据的大小和格式之前,此方法将返回null。由于PixelGrabber可能随时回退到在默认RGB ColorModel中累积数据,如果源图像使用多个ColorModel传递数据,则此方法返回的数组对象可能会随时间而变化,直到图像抓取完成为止。
      返回:
      可能是字节数组或整数数组
      另请参见:
    • getColorModel

      public 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

      public void setProperties(Hashtable<?,?> props)
      setProperties方法是ImageConsumer API的一部分,该类必须实现以检索像素。

      注意:此方法旨在由正在抓取像素的图像的ImageProducer调用。使用此类从图像检索像素的开发人员应避免直接调用此方法,因为该操作可能导致检索请求的像素出现问题。

      指定者:
      setProperties 在接口 ImageConsumer
      参数:
      props - 属性列表
    • setColorModel

      public void setColorModel(ColorModel model)
      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标志的按位或
      另请参见: