当我想检查两个Bufferedimage是否相同时,我可以使用以下两个循环逐个像素地比较它们:
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;
}
我从这里拿走了这个
但我也希望这在img2
旋转90 or 270
度的情况下起作用。我尝试切换x
和y
,使用以下组合img2.getWidth()-x
在第二个CCD_ 6中,但似乎都不起作用。
我知道这可能不是世界上最难的问题,但我似乎无法解决。
如有任何帮助,我们将不胜感激。
我认为执行3次"2-loops"是不可避免的:一个用于0度旋转,第二个90和第三个270:
对于90度:(断言img1.getWidth()==img2.getHeight()&;img1.getHeight()==img2.getWidth())
for (int x = 0; x < img1.getWidth(); x++) {
for (int y = 0; y < img1.getHeight(); y++) {
if (img1.getRGB(x, y) != img2.getRGB(img1.getHeight() - 1 - y, x))
return false;
}
}
对于270度:(断言img1.getWidth()==img2.getHeight()&;img1.getHeight()==img2.getWidth())
for (int x = 0; x < img1.getWidth(); x++) {
for (int y = 0; y < img1.getHeight(); y++) {
if (img1.getRGB(x, y) != img2.getRGB(y, img1.getWidth() - 1 - x))
return false;
}
}