for (int i = 0; i < image1Width; i++)
{
for (int j = 0; j < image1Height; j++)
{
if (image1.getPixelReader().getColor(i, j) != image2.getPixelReader().getColor(i, j)) return false;
}
}
这就是我现在所拥有的。我传递了两个图像(javafx.scene.image.Image)。这意味着当图像相同时,它永远不会返回false。不幸的是,当我传递相同的图像时,这会返回false。
感谢。
答案 0 :(得分:2)
你需要
if (!image1.getPixelReader().getColor(i, j).equals(image2.getPixelReader().getColor(i, j))) return false;
或
if (image1.getPixelReader().getArgb(i, j) != image2.getPixelReader().getArgb(i, j)) return false;
第二个版本可能更快。
答案 1 :(得分:0)
对于只想复制和粘贴此即用型方法的人
private boolean isImageEqual(Image firstImage, Image secondImage){
// Prevent `NullPointerException`
if(firstImage != null && secondImage == null) return false;
if(firstImage == null) return secondImage == null;
// Compare images size
if(firstImage.getWidth() != secondImage.getWidth()) return false;
if(firstImage.getHeight() != secondImage.getHeight()) return false;
// Compare images color
for(int x = 0; x < firstImage.getWidth(); x++){
for(int y = 0; y < firstImage.getHeight(); y++){
int firstArgb = firstImage.getPixelReader().getArgb(x, y);
int secondArgb = secondImage.getPixelReader().getArgb(x, y);
if(firstArgb != secondArgb) return false;
}
}
return true;
}