模块 java.desktop

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

  
参见:
  • 字段摘要

  • 构造方法总结

    构造方法
    构造方法
    描述
    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) 像素矩形部分抓取到给定数组中。
  • 方法总结

    修饰符和类型
    方法
    描述
    void
    请求 PixelGrabber 中止图像获取。
    获取存储在数组中的像素的 ColorModel。
    int
    获取像素缓冲区的高度(调整图像高度后)。
    获取像素缓冲区。
    int
    返回像素的状态。
    int
    获取像素缓冲区的宽度(调整图像宽度后)。
    boolean
    请求 Image 或 ImageProducer 开始传送像素并等待传送感兴趣矩形中的所有像素。
    boolean
    grabPixels(long ms)
    请求 Image 或 ImageProducer 开始传送像素并等待传送感兴趣的矩形中的所有像素或直到指定的超时已过。
    void
    imageComplete(int status)
    imageComplete 方法是 ImageConsumer API 的一部分,此类必须实现该 API 才能检索像素。
    void
    setColorModel 方法是 ImageConsumer API 的一部分,此类必须实现该 API 才能检索像素。
    void
    setDimensions(int width, int height)
    setDimensions 方法是 ImageConsumer API 的一部分,此类必须实现该 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 的一部分,此类必须实现该 API 才能检索像素。
    void
    setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan)
    setPixels 方法是 ImageConsumer API 的一部分,此类必须实现该 API 才能检索像素。
    void
    setProperties(Hashtable<?,?> props)
    setProperties 方法是 ImageConsumer API 的一部分,此类必须实现该 API 才能检索像素。
    void
    请求 PixelGrabber 开始获取像素。
    int
    返回像素的状态。

    在类 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) 的 RGB 数据存储在位于 pix[(j - y) * scansize + (i - x) + off] 的数组中,其中 (i, j) 在矩形 (x, y, w, h) 内。
      参数:
      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 数据存储在位于 pix[(j - y) * scansize + (i - x) + off] 的数组中,其中 (i, j) 在矩形 (x, y, w, h) 内。
      参数:
      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 参数为真,那么无论如何像素都会在默认的 RGB ColorModel 中累积。 PixelGrabber 会分配一个缓冲区来保存两种情况下的像素。如果是 (w < 0)(h < 0) ,则在传递该信息时它们将默认为源数据的剩余宽度和高度。
      参数:
      img - 从中检索图像数据的图像
      x - 要从图像中检索的像素矩形左上角的 x 坐标,相对于图像的默认(未缩放)大小
      y - 要从图像中检索的像素矩形左上角的 y 坐标
      w - 要检索的像素矩形的宽度
      h - 要检索的像素矩形的高度
      forceRGB - 如果像素应始终转换为默认 RGB ColorModel,则为真
  • 方法详情

    • 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,直到已知图像数据的大小和格式。如果源图像使用多个 ColorModel 来传递数据,则 PixelGrabber 可能会随时回退到在默认 RGB ColorModel 中累积数据,因此此方法返回的数组对象可能会随时间变化,直到图像抓取完成。
      返回:
      字节数组或 int 数组
      参见:
    • getColorModel

      public ColorModel  getColorModel()
      获取存储在数组中的像素的 ColorModel。如果 PixelGrabber 是使用显式像素缓冲区构造的,则此方法将始终返回默认的 RGB ColorModel,否则它可能会返回 null,直到 ImageProducer 使用的 ColorModel 已知为止。如果源图像使用多个 ColorModel 来传递数据,则 PixelGrabber 可能会在任何时候退回到默认 RGB ColorModel 中累积数据,因此此方法返回的 ColorModel 对象可能会随时间变化,直到图像抓取完成并且可能不反映 ImageProducer 用来传送像素的任何 ColorModel 对象。
      返回:
      用于存储像素的 ColorModel 对象
      参见:
    • setDimensions

      public void setDimensions(int width, int height)
      setDimensions 方法是 ImageConsumer API 的一部分,此类必须实现该 API 才能检索像素。

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

      指定者:
      setDimensions 在接口 ImageConsumer
      参数:
      width - 维度的宽度
      height - 维度的高度
    • setHints

      public void setHints(int hints)
      setHints 方法是 ImageConsumer API 的一部分,此类必须实现该 API 才能检索像素。

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

      指定者:
      setHints 在接口 ImageConsumer
      参数:
      hints - 一组用于处理像素的提示
    • setProperties

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

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

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

      public void setColorModel(ColorModel  model)
      setColorModel 方法是 ImageConsumer API 的一部分,此类必须实现该 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 的一部分,此类必须实现该 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 的一部分,此类必须实现该 API 才能检索像素。

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

      指定者:
      setPixels 在接口 ImageConsumer
      参数:
      srcX - 待设置像素区域左上角的X坐标
      srcY - 待设置像素区域左上角的Y坐标
      srcW - 像素区域的宽度
      srcH - 像素区域的高度
      model - 指定的 ColorModel
      pixels - 像素数组
      srcOff - 像素数组的偏移量
      srcScan - 像素数组中一行像素到下一行像素的距离
      参见:
    • imageComplete

      public void imageComplete(int status)
      imageComplete 方法是 ImageConsumer API 的一部分,此类必须实现该 API 才能检索像素。

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

      指定者:
      imageComplete 在接口 ImageConsumer
      参数:
      status - 图片加载状态
      参见:
    • status

      public int status()
      返回像素的状态。返回表示可用像素信息的 ImageObserver 标志。此方法与getStatus 具有相同的实现,但getStatus是首选方法,因为它符合以“getXXX”形式命名信息检索方法的约定。
      返回:
      所有相关 ImageObserver 标志的按位或
      参见: