簡體   English   中英

javafx 如何測試圖像相等性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM