2016-05-07 4 views
0

を使用して2つのBufferedImageを比較すると、私は2つのBufferedImageが同じであるかどうかを確認したい場合は、私は単にこれら二つのループ使用してピクセルで彼らにピクセルを比較することができます:HereのJava:ループ

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; 
} 

を私はからこれを取りました

img290 or 270度回転している場合、これも機能します。私は img2.getWidth()-x 第2の.getRGB()のような組み合わせを使用して、xyを試しましたが、どれもうまくいかないようです。

私はそれが世界で最も難しい問題ではないかもしれないことは知っていますが、私はそれを理解できないようです。

ご協力いただければ幸いです。

答えて

0

私は「2ループ」を3回行うことは避けられないと思う: 1 0度の回転のために、第90および第三270:

90度の場合:((img1.getWidthをアサート) == img2.getHeight()& & img1.getHeight()== img2.getWidth())270度について

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; 
    } 
} 

:(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; 
    } 
} 
+0

おかげで、90度ループでは範囲外のエラーが発生し、270ループでは誤った結果になります。何か不足していますか? – InJustice47

+0

いいえ、私は何かを逃した人です。私は問題が何であるかを知っています。今すぐ修正します – aviad

+0

もう一度お悔やみ申し訳ありませんが、まだ修正しましたか? – InJustice47