我正在用它来比较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/

10-12 03:39