package cn.outofmemory.snippets.desktop;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
public class BufferedImagePixels {
static boolean imageLoaded = false;
public static void main
(String[] args
) {
// The ImageObserver implementation to observe loading of the image
public boolean imageUpdate
(Image image,
int flags,
int x,
int y,
int width,
int height
) {
if ((flags & ALLBITS) != 0) {
imageLoaded = true;
System.
out.
println("Image loading finished!");
return false;
}
return true;
}
};
// The image URL - change to where your image file is located!
String imageURL
= "image.png";
/*
* This call returns immediately and pixels are loaded in the background
* We use an ImageObserver to be notified when the loading of the image
* is complete
*/
Image sourceImage
= Toolkit.
getDefaultToolkit().
getImage(imageURL
);
sourceImage.getWidth(myImageObserver);
// We wait until the image is fully loaded
while (!imageLoaded) {
try {
}
}
// Create a buffered image from the source image with a format that's compatible with the screen
GraphicsDevice graphicsDevice
= graphicsEnvironment.
getDefaultScreenDevice();
// If the source image has no alpha info use Transparency.OPAQUE instead
BufferedImage image
= graphicsConfiguration.
createCompatibleImage(sourceImage.
getWidth(null), sourceImage.
getHeight(null),
Transparency.
BITMASK);
// Copy image to buffered image
// Paint the image onto the buffered image
graphics.drawImage(sourceImage, 0, 0, null);
graphics.dispose();
int x = 10;
int y = 10;
// Get a pixel
int rgb = image.getRGB(x, y);
System.
out.
println("Pixel at [" + x
+ "," + y
+ "] RGB : " + rgb
);
// Get all the pixels
int w = image.getWidth(null);
int h = image.getHeight(null);
int[] rgbs = new int[w*h];
image.getRGB(0, 0, w, h, rgbs, 0, w);
// Set a pixel
rgb = 0xFF00FF00; // green
image.setRGB(x, y, rgb);
}
}
//源代码片段来自云代码http://yuncode.net