Java将一个BufferedImage与另一个进行比较

我需要比较两个缓冲的图像,看看它们是否完全相同。 简单地说,如果等于那不起作用。 我目前的方法是

{ Raster var1 = Img1.getData(); Raster var2 = Img2.getData(); int Data1 = (var1.getDataBuffer()).getSize(); int Data2 = (var2.getDataBuffer()).getSize(); if (Data1 == Data2) { return true; } else { return false; } } 

但那并没有真正起作用。 还有哪些更可靠的方式?

显而易见的解决方案是逐像素地比较它们是否相同。

 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; } 

是的,假设它们都是相同的格式,将它们作为字节串读取并比较位串。 如果一个是jpg而另一个是png则不起作用。 但我假设平等意味着他们是一样的。

这是一个如何进行文件读取的例子;

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

哈希码怎么样?

 img1.getData().hashCode().equals(img2.getData().hashCode())