如何获取图像特定像素的颜色? - 爪哇



是否可以获取Image特定像素的颜色

我知道如何从BufferedImage中获取它:

Color color = new Color(bufferedImage.getRGB(x, y));

但这不适用于如下所示的java.awt.Image

Image image = null;
try {
image = ImageIO.read(new File("image.png"));
} catch (IOException e) {
e.printStackTrace();
}

有没有办法做到?提前感谢!

ImageIO.read(file)应该返回一个BufferedImage。您还可以使用PixelGrabber来获取特定颜色。例:

private static Color getSpecificColor(Image image, int x, int y) {
if (image instanceof BufferedImage) {
return new Color(((BufferedImage) image).getRGB(x, y));
}
int width = image.getWidth(null);
int height = image.getHeight(null);
int[] pixels = new int[width * height];
PixelGrabber grabber = new PixelGrabber(image, 0, 0, width, height, pixels, 0, width);
try {
grabber.grabPixels();
} catch (InterruptedException e) {
e.printStackTrace();
}
int c = pixels[x * width + y];
int  red = (c & 0x00ff0000) >> 16;
int  green = (c & 0x0000ff00) >> 8;
int  blue = c & 0x000000ff;
return new Color(red, green, blue);
}

ToolkitImage还有一个获取BufferedImage但可能返回 null 的方法:为什么 ToolkitImage getBufferedImage() 返回 null?

http://www.rgagnon.com/javadetails/java-0257.html