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
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;
}
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
What about hash codes?
img1.getData().hashCode().equals(img2.getData().hashCode())