[英]javafx how to test image equality?
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)。 這意味着當圖像相同時 this 永遠不應該返回 false 。 不幸的是,當我將相同的圖像傳遞給它時,這將返回 false。
謝謝。
你需要
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;
第二個版本可能更快。
對於只想復制和粘貼此即用型方法的人
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.