我用它来比较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'来执行图像大小调整
答案 0 :(得分:3)
请记住,jpeg是一种有损格式,然后将图像写入jpeg中的文件(比如说编码)可能会修改图像,因此将其恢复可能不会导致原始图像...