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
{
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;
}
}
But that doesn't really work. What other more reliable way is there?
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
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With