我正在用它来比较BufferedImage
private boolean compareImages(BufferedImage actualImage, BufferedImage expectedImage) {
for (int x = 0; x < expectedImage.getWidth(); x++) {
for (int y = 0; y < expectedImage.getHeight();y++) {
if (actualImage.getRGB(x, y) != expectedImage.getRGB(x, y)) {
return false;
}
}
}
return true;
}
当图像类型为PNG时有效,但是当图像类型为JPEG / JPG时无效
这是我尝试运行此代码的方式:-`
BufferedImage resizedImage = Scalr.resize(originalImage,50,50);
ImageIO.write(resizedImage,new File("a.jpg"));
BufferedImage bufferedImage = ImageIO.read(new File("a.jpg"));
assertTrue(compareImages(resizedImage, bufferedImage));
这对于JPG / JPEG及其怪异失败。
PS:我正在使用此库“ Scalr”来调整图像大小
最佳答案
请记住,jpeg是一种有损格式,然后将图像写入jpeg文件中(例如对它进行编码)可能会修改该图像,因此将其取回可能不会导致原始图像...
关于java - BufferedImage比较显示奇怪的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44673901/