public class PixelGrabber extends Objectimplements 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()
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT| Constructor and Description |
|---|
PixelGrabber(Image
Create a PixelGrabber object to grab the (x, y, w, h) rectangular section of pixels from the specified image.
|
PixelGrabber(Image
Create a PixelGrabber object to grab the (x, y, w, h) rectangular section of pixels from the specified image into the given array.
|
PixelGrabber(ImageProducer
Create a PixelGrabber object to grab the (x, y, w, h) rectangular section of pixels from the image produced by the specified ImageProducer into the given array.
|
| Modifier and Type | Method and Description |
|---|---|
void |
abortGrabbing()
Request the PixelGrabber to abort the image fetch.
|
ColorModel |
getColorModel()
Get the ColorModel for the pixels stored in the array.
|
int |
getHeight()
Get the height of the pixel buffer (after adjusting for image height).
|
Object |
getPixels()
Get the pixel buffer.
|
int |
getStatus()
Return the status of the pixels.
|
int |
getWidth()
Get the width of the pixel buffer (after adjusting for image width).
|
boolean |
grabPixels()
Request the Image or ImageProducer to start delivering pixels and wait for all of the pixels in the rectangle of interest to be delivered.
|
boolean |
grabPixels(long ms)
Request the Image or ImageProducer to start delivering pixels and wait for all of the pixels in the rectangle of interest to be delivered or until the specified timeout has elapsed.
|
void |
imageComplete(int status)
The imageComplete method is part of the ImageConsumer API which this class must implement to retrieve the pixels.
|
void |
setColorModel(ColorModel
The setColorModel method is part of the ImageConsumer API which this class must implement to retrieve the pixels.
|
void |
setDimensions(int width, int height)
The setDimensions method is part of the ImageConsumer API which this class must implement to retrieve the pixels.
|
void |
setHints(int hints)
The setHints method is part of the ImageConsumer API which this class must implement to retrieve the pixels.
|
void |
setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel
The setPixels method is part of the ImageConsumer API which this class must implement to retrieve the pixels.
|
void |
setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel
The setPixels method is part of the ImageConsumer API which this class must implement to retrieve the pixels.
|
void |
setProperties(Hashtable
The setProperties method is part of the ImageConsumer API which this class must implement to retrieve the pixels.
|
void |
startGrabbing()
Request the PixelGrabber to start fetching the pixels.
|
int |
status()
Returns the status of the pixels.
|
public PixelGrabber(Imageimg, int x, int y, int w, int h, int[] pix, int off, int scansize)
img - the image to retrieve pixels from
x - the x coordinate of the upper left corner of the rectangle of pixels to retrieve from the image, relative to the default (unscaled) size of the image
y - the y coordinate of the upper left corner of the rectangle of pixels to retrieve from the image
w - the width of the rectangle of pixels to retrieve
h - the height of the rectangle of pixels to retrieve
pix - the array of integers which are to be used to hold the RGB pixels retrieved from the image
off - the offset into the array of where to store the first pixel
scansize - the distance from one row of pixels to the next in the array
ColorModel.getRGBdefault()
public PixelGrabber(ImageProducerip, int x, int y, int w, int h, int[] pix, int off, int scansize)
ip - the
ImageProducer that produces the image from which to retrieve pixels
x - the x coordinate of the upper left corner of the rectangle of pixels to retrieve from the image, relative to the default (unscaled) size of the image
y - the y coordinate of the upper left corner of the rectangle of pixels to retrieve from the image
w - the width of the rectangle of pixels to retrieve
h - the height of the rectangle of pixels to retrieve
pix - the array of integers which are to be used to hold the RGB pixels retrieved from the image
off - the offset into the array of where to store the first pixel
scansize - the distance from one row of pixels to the next in the array
ColorModel.getRGBdefault()
public PixelGrabber(Imageimg, int x, int y, int w, int h, boolean forceRGB)
(w < 0) or
(h < 0), then they will default to the remaining width and height of the source data when that information is delivered.
img - the image to retrieve the image data from
x - the x coordinate of the upper left corner of the rectangle of pixels to retrieve from the image, relative to the default (unscaled) size of the image
y - the y coordinate of the upper left corner of the rectangle of pixels to retrieve from the image
w - the width of the rectangle of pixels to retrieve
h - the height of the rectangle of pixels to retrieve
forceRGB - true if the pixels should always be converted to the default RGB ColorModel
public void startGrabbing()
public void abortGrabbing()
public boolean grabPixels()
throws InterruptedException
InterruptedException - Another thread has interrupted this thread.
public boolean grabPixels(long ms)
throws InterruptedException
ms:
ms == 0, waits until all pixels are delivered ms > 0, waits until all pixels are delivered as timeout expires. ms < 0, returns true if all pixels are grabbed, false otherwise and does not wait. ms - the number of milliseconds to wait for the image pixels to arrive before timing out
InterruptedException - Another thread has interrupted this thread.
public int getStatus()
ImageObserver
public int getWidth()
getStatus()
public int getHeight()
getStatus()
public ObjectgetPixels()
getStatus(),
setPixels(int, int, int, int, ColorModel, byte[], int, int),
setPixels(int, int, int, int, ColorModel, int[], int, int)
public ColorModelgetColorModel()
getStatus(),
ColorModel.getRGBdefault() ,
setColorModel(ColorModel)
public void setDimensions(int width,
int height)
Note: This method is intended to be called by the ImageProducer of the Image whose pixels are being grabbed. Developers using this class to retrieve pixels from an image should avoid calling this method directly since that operation could result in problems with retrieving the requested pixels.
setDimensions in interface
ImageConsumer
width - the width of the dimension
height - the height of the dimension
public void setHints(int hints)
Note: This method is intended to be called by the ImageProducer of the Image whose pixels are being grabbed. Developers using this class to retrieve pixels from an image should avoid calling this method directly since that operation could result in problems with retrieving the requested pixels.
setHints in interface
ImageConsumer
hints - a set of hints used to process the pixels
public void setProperties(Hashtable<? ,?> props)
Note: This method is intended to be called by the ImageProducer of the Image whose pixels are being grabbed. Developers using this class to retrieve pixels from an image should avoid calling this method directly since that operation could result in problems with retrieving the requested pixels.
setProperties in interface
ImageConsumer
props - the list of properties
public void setColorModel(ColorModelmodel)
Note: This method is intended to be called by the ImageProducer of the Image whose pixels are being grabbed. Developers using this class to retrieve pixels from an image should avoid calling this method directly since that operation could result in problems with retrieving the requested pixels.
setColorModel in interface
ImageConsumer
model - the specified
ColorModel
getColorModel()
public void setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
byte[] pixels,
int srcOff,
int srcScan)
Note: This method is intended to be called by the ImageProducer of the Image whose pixels are being grabbed. Developers using this class to retrieve pixels from an image should avoid calling this method directly since that operation could result in problems with retrieving the requested pixels.
setPixels in interface
ImageConsumer
srcX - the X coordinate of the upper-left corner of the area of pixels to be set
srcY - the Y coordinate of the upper-left corner of the area of pixels to be set
srcW - the width of the area of pixels
srcH - the height of the area of pixels
model - the specified
ColorModel
pixels - the array of pixels
srcOff - the offset into the pixels array
srcScan - the distance from one row of pixels to the next in the pixels array
getPixels()
public void setPixels(int srcX,
int srcY,
int srcW,
int srcH,
ColorModel model,
int[] pixels,
int srcOff,
int srcScan)
Note: This method is intended to be called by the ImageProducer of the Image whose pixels are being grabbed. Developers using this class to retrieve pixels from an image should avoid calling this method directly since that operation could result in problems with retrieving the requested pixels.
setPixels in interface
ImageConsumer
srcX - the X coordinate of the upper-left corner of the area of pixels to be set
srcY - the Y coordinate of the upper-left corner of the area of pixels to be set
srcW - the width of the area of pixels
srcH - the height of the area of pixels
model - the specified
ColorModel
pixels - the array of pixels
srcOff - the offset into the pixels array
srcScan - the distance from one row of pixels to the next in the pixels array
getPixels()
public void imageComplete(int status)
Note: This method is intended to be called by the ImageProducer of the Image whose pixels are being grabbed. Developers using this class to retrieve pixels from an image should avoid calling this method directly since that operation could result in problems with retrieving the requested pixels.
imageComplete in interface
ImageConsumer
status - the status of image loading
ImageProducer.removeConsumer(java.awt.image.ImageConsumer)
public int status()
getStatus have the same implementation, but
getStatus is the preferred method because it conforms to the convention of naming information-retrieval methods with the form "getXXX".
ImageObserver,
getStatus()