Module  java.desktop
软件包  java.awt.image

Class PixelGrabber

  • All Implemented Interfaces:
    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()
    • 构造方法摘要

      构造方法  
      Constructor 描述
      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)像素的矩形部分从指定的图像进入给定的数组。
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      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的一部分,该类必须实现这个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​()
      返回像素的状态。
    • 构造方法详细信息

      • 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)的像素(i,j)的RGB数据在矩形(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)中的(i,j)的像素(i,j)的RGB数据被存储在矩阵(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的一部分,该类必须实现这个API来检索像素。

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

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

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

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

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

        public void setProperties​(Hashtable<?,?> props)
        setProperties方法是ImageConsumer 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()