Java Compare one BufferedImage to Another

前端 未结 3 1804
-上瘾入骨i
-上瘾入骨i 2020-12-21 07:57

I need to compare two buffered images to see if they are the exact same. Simply saying if that equals that doesn\'t work. My current method is

                       


        
相关标签:
3条回答
  • 2020-12-21 08:36

    The obvious solution would be to compare, pixel by pixel, that they are the same.

    boolean bufferedImagesEqual(BufferedImage img1, BufferedImage img2) {
        if (img1.getWidth() == img2.getWidth() && img1.getHeight() == img2.getHeight()) {
            for (int x = 0; x < img1.getWidth(); x++) {
                for (int y = 0; y < img1.getHeight(); y++) {
                    if (img1.getRGB(x, y) != img2.getRGB(x, y))
                        return false;
                }
            }
        } else {
            return false;
        }
        return true;
    }
    
    0 讨论(0)
  • 2020-12-21 08:39

    Yeah, assuming they are both in the same format read them as byte strings and compare the bit strings. If one is a jpg and the other a png this won't work. But I'm assuming equality implies they are the same.

    here's an example on how to do the file reading;

    http://www.java-examples.com/read-file-byte-array-using-fileinputstream

    0 讨论(0)
  • 2020-12-21 08:44

    What about hash codes?

    img1.getData().hashCode().equals(img2.getData().hashCode())
    
    0 讨论(0)
提交回复
热议问题