ImageConsumer
public class PixelGrabber extends Object implements 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]);
}
}
}
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
Constructor | Description |
---|---|
PixelGrabber |
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. |
PixelGrabber |
Create a PixelGrabber object to grab the (x, y, w, h) rectangular section of pixels from the specified image. |
PixelGrabber |
Create a PixelGrabber object to grab the (x, y, w, h) rectangular section of pixels from the specified image into the given array. |
Modifier and Type | Method | 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 |
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 |
The imageComplete method is part of the ImageConsumer API which this class must implement to retrieve the pixels. |
void |
setColorModel |
The setColorModel method is part of the ImageConsumer API which this class must implement to retrieve the pixels. |
void |
setDimensions |
The setDimensions method is part of the ImageConsumer API which this class must implement to retrieve the pixels. |
void |
setHints |
The setHints method is part of the ImageConsumer API which this class must implement to retrieve the pixels. |
void |
setPixels |
The setPixels method is part of the ImageConsumer API which this class must implement to retrieve the pixels. |
void |
setPixels |
The setPixels method is part of the ImageConsumer API which this class must implement to retrieve the pixels. |
void |
setProperties |
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(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)
pix[(j - y) * scansize + (i - x) + off]
.img
- the image to retrieve pixels fromx
- 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 imagey
- the y coordinate of the upper left corner of the rectangle of pixels to retrieve from the imagew
- the width of the rectangle of pixels to retrieveh
- the height of the rectangle of pixels to retrievepix
- the array of integers which are to be used to hold the RGB pixels retrieved from the imageoff
- the offset into the array of where to store the first pixelscansize
- the distance from one row of pixels to the next in the arraypublic PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)
pix[(j - y) * scansize + (i - x) + off]
.ip
- the ImageProducer
that produces the image from which to retrieve pixelsx
- 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 imagey
- the y coordinate of the upper left corner of the rectangle of pixels to retrieve from the imagew
- the width of the rectangle of pixels to retrieveh
- the height of the rectangle of pixels to retrievepix
- the array of integers which are to be used to hold the RGB pixels retrieved from the imageoff
- the offset into the array of where to store the first pixelscansize
- the distance from one row of pixels to the next in the arraypublic PixelGrabber(Image img, 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 fromx
- 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 imagey
- the y coordinate of the upper left corner of the rectangle of pixels to retrieve from the imagew
- the width of the rectangle of pixels to retrieveh
- the height of the rectangle of pixels to retrieveforceRGB
- true if the pixels should always be converted to the default RGB ColorModelpublic 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 outInterruptedException
- Another thread has interrupted this thread.public int getStatus()
public int getWidth()
public int getHeight()
public Object getPixels()
public ColorModel getColorModel()
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 dimensionheight
- the height of the dimensionpublic 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 pixelspublic 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 propertiespublic void setColorModel(ColorModel model)
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
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 setsrcY
- the Y coordinate of the upper-left corner of the area of pixels to be setsrcW
- the width of the area of pixelssrcH
- the height of the area of pixelsmodel
- the specified ColorModel
pixels
- the array of pixelssrcOff
- the offset into the pixels arraysrcScan
- the distance from one row of pixels to the next in the pixels arraypublic 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 setsrcY
- the Y coordinate of the upper-left corner of the area of pixels to be setsrcW
- the width of the area of pixelssrcH
- the height of the area of pixelsmodel
- the specified ColorModel
pixels
- the array of pixelssrcOff
- the offset into the pixels arraysrcScan
- the distance from one row of pixels to the next in the pixels arraypublic 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 loadingpublic 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".
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/java/awt/image/PixelGrabber.html