是否可以获取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