模块  java.desktop
软件包  java.awt.image

Class 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]); } } }  
    另请参见:
    ColorModel.getRGBdefault()
    • 构造方法摘要

      构造方法  
      构造器 描述
      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 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的一部分,此类必须实现该API才能检索像素。
      void startGrabbing()
      请求PixelGrabber开始获取像素。
      int status()
      返回像素的状态。
    • 构造方法详细信息

      • 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 - 数组中从一行像素到下一行像素的距离
        另请参见:
        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)的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 - 数组中从一行像素到下一行像素的距离
        另请参见:
        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, forceRGB 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
      • getWidth

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

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

        public ColorModel getColorModel()
        获取存储在数组中的像素的ColorModel。 如果PixelGrabber是使用显式像素缓冲区构造的,则此方法将始终返回默认的RGB ColorModel,否则它可能会返回null,直到ImageProducer使用的ColorModel已知。 由于如果源图像使用多个ColorModel来传递数据,PixelGrabber可能会在任何时候依赖于在默认RGB ColorModel中累积数据,此方法返回的ColorModel对象可能会随着时间的推移而改变,直到图像抓取完成并且可能无法反映ImageProducer用于传递像素的任何ColorModel对象。
        结果
        用于存储像素的ColorModel对象
        另请参见:
        getStatus()ColorModel.getRGBdefault()setColorModel(ColorModel)
      • setDimensions

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

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

        Specified by:
        setDimensions接口 ImageConsumer
        参数
        width - 维度的宽度
        height - 维度的高度
      • setHints

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

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

        Specified by:
        setHints接口 ImageConsumer
        参数
        hints - 用于处理像素的一组提示
      • setProperties

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

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

        Specified by:
        setProperties ,界面 ImageConsumer
        参数
        props - 属性列表
      • setColorModel

        public void setColorModel​(ColorModel model)
        setColorModel方法是ImageConsumer API的一部分,该类必须实现它才能检索像素。

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

        Specified by:
        setColorModel接口 ImageConsumer
        参数
        model - 指定的 ColorModel
        另请参见:
        getColorModel()
      • setPixels

        public void setPixels​(int srcX,
                              int srcY,
                              int srcW,
                              int srcH,
                              ColorModel model,
                              byte[] pixels,
                              int srcOff,
                              int srcScan)
        setPixels方法是ImageConsumer API的一部分,该类必须实现它才能检索像素。

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

        Specified by:
        setPixels ,界面 ImageConsumer
        参数
        srcX - 要设置的像素区域左上角的X坐标
        srcY - 要设置的像素区域左上角的Y坐标
        srcW - 像素区域的宽度
        srcH - 像素区域的高度
        model - 指定的 ColorModel
        pixels - 像素数组
        srcOff - 像素阵列的偏移量
        srcScan - 像素阵列中从一行像素到下一行像素的距离
        另请参见:
        getPixels()
      • setPixels

        public void setPixels​(int srcX,
                              int srcY,
                              int srcW,
                              int srcH,
                              ColorModel model,
                              int[] pixels,
                              int srcOff,
                              int srcScan)
        setPixels方法是ImageConsumer API的一部分,该类必须实现它才能检索像素。

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

        Specified by:
        setPixels ,界面 ImageConsumer
        参数
        srcX - 要设置的像素区域左上角的X坐标
        srcY - 要设置的像素区域左上角的Y坐标
        srcW - 像素区域的宽度
        srcH - 像素区域的高度
        model - 指定的 ColorModel
        pixels - 像素数组
        srcOff - 像素阵列的偏移量
        srcScan - 像素阵列中从一行像素到下一行像素的距离
        另请参见:
        getPixels()
      • imageComplete

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

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

        Specified by:
        imageComplete接口 ImageConsumer
        参数
        status - 图像加载的状态
        另请参见:
        ImageProducer.removeConsumer(java.awt.image.ImageConsumer)
      • status

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