2016-04-24 27 views
1

私はいくつかの画像を比較しようとする問題にぶつかってきました。そしてそれらが等しい場合、プログラムはいくつかの特定のことを行います。私はそれを上にプログラムを作ったコンピュータ上でそれをテストするとき、写真を比較するのに問題はありません。 (私は1920x1080を実行します)。しかし、私は小さなモニターでは、同じ解像度では動作しません別のコンピュータ上で同じプログラムを実行しようとすると。 2番目のコンピュータは、まったく同じもの、サイズなどの画像を比較しています。違いは、新しく撮影した画像を元の画像と比較することです。元のコンピュータで撮影したものです。コンピュータからコンピュータへのデスクトップの写真撮影に違いはありますか?私はこれをどのように修正すべきか分かりません。今、私はちょうどあるピクセルの写真を撮っていて、ピクセルグラバーを使って比較しています。JAVAで画像を比較する

public static boolean processImage(String file1) { 

    String file2 = "screencapture.png"; 

    Image image1 = Toolkit.getDefaultToolkit().getImage(file1); 
    Image image2 = Toolkit.getDefaultToolkit().getImage(file2); 

    int[] data1 = null; 
    int[] data2 = null; 

    try { 

     PixelGrabber grab1 = new PixelGrabber(image1, 0, 0, -1, -1, false); 
     PixelGrabber grab2 = new PixelGrabber(image2, 0, 0, -1, -1, false); 

     if (grab1.grabPixels()) { 
      int width = grab1.getWidth(); 
      int height = grab1.getHeight(); 
      data1 = new int[width * height]; 
      data1 = (int[]) grab1.getPixels(); 
     } 

     if (grab2.grabPixels()) { 
      int width = grab2.getWidth(); 
      int height = grab2.getHeight(); 
      data2 = new int[width * height]; 
      data2 = (int[]) grab2.getPixels(); 
     } 

     System.out.println("Pixels equal: " + java.util.Arrays.equals(data1, data2)); 

    } catch (Exception e1) { 
     e1.printStackTrace(); 
    } 
    return java.util.Arrays.equals(data1, data2); 
} 
+0

比較方法のコードを表示します。 – randominstanceOfLivingThing

+0

@ SureshKoya added –

+0

ピクセルを抽出する前に、イメージの幅と高さを比較しませんでした。同じでない場合は、必要に応じて拡大縮小して比較することができます。 – randominstanceOfLivingThing

答えて

0

他のコンピュータで撮影した画像が元の画像より明るくなっているので、何とかしていない理由があります。しかし、まだ修正する方法がわからない。

+0

オリジナルの色の数を256に制限し、テストのコンピュータで同じ色の番号を使用して、矛盾を避けることができます。 – randominstanceOfLivingThing

+0

@SureshKoyaどうすればいいですか? –