BufferedImage比较显示奇怪的行为

时间:2017-06-21 10:44:37

标签: java javax.imageio

我用它来比较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'来执行图像大小调整

1 个答案:

答案 0 :(得分:3)

请记住,jpeg是一种有损格式,然后将图像写入jpeg中的文件(比如说编码)可能会修改图像,因此将其恢复可能不会导致原始图像...