我正在从事一个涉及模式检测的项目。我必须将输入图像缩放到特定大小并测试像素颜色。
我尝试输入java.awt.Image,以便可以调整其大小,然后将其转换为BufferedImage,以测试每个独立像素的RGB值。 但是,将BufferedImage强制转换为Image无效。
由于java.awt.Image无法访问每个像素的颜色值,因此我必须使用BufferedImage的.getRBG函数。但是,我必须接受一个java.awt.Image,因为BufferedImage无法调整大小。我做了一些有关调整BufferedImage大小的研究,但发现的所有结果都是关于在屏幕上调整其大小,而不是实际图像。我不是要在屏幕上显示BufferedImage,而是要访问图像上每个像素的颜色值。
以下是解决我的问题的方法: 请提出一种方法...
或
Image img = ImageIO.read(inputFile).getScaledInstance(400, 400, 0);
BufferedImage scaledImage = (BufferedImage)img;
以下代码无法编译,因为BufferedImage无法转换为java.awt.Image
答案 0 :(得分:0)
String imagePath = "path/to/your/image.jpg";
BufferedImage myPicture = ImageIO.read(new File(imagePath));
您可以使用ImageIO,请查看以下文档:Converting Image to BufferedImage
或者这个惊人的教程:https://www.baeldung.com/java-images 甚至是2012年的同样问题:Converting Image to BufferedImage
如果我答错了您的问题,请告诉我。
要调整图像大小,您可以尝试使用类似的方法:
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = dimg.createGraphics();
g2d.drawImage(tmp, 0, 0, null);
g2d.dispose();
return dimg;
}
此答案来自:Bufferedimage resize