0
我比較Java中的BufferedImage對象。我從一組圖像中獲得圖像,並將其與同一組中的所有圖像進行比較。但是,它會導致這種奇怪的錯誤,將圖像與自身進行比較,並且對於其他圖像,一切都很好。下面的代碼:BufferedImage比較圖像與自身拋出ArrayOutOfBoundsException
private boolean diagonalCompare() {
for(int i = 0, j = 0; i < w && j < h; i++, j++) {
if(bimg1.getRGB(i, j) != bimg2.getRGB(i, j)) {
return false;
}
}
for(int i = w, j = 0; i > -1 && j < h; i--, j++) {
//-----------THIS IS THE LINE CAUSES THE ERROR---------------------------------\\
if(bimg1.getRGB(i, j) != bimg2.getRGB(i, j)) {
return false;
}
}
return true;
}
這裏的堆棧跟蹤:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
at sun.awt.image.ByteInterleavedRaster.getDataElements(Unknown Source)
at java.awt.image.BufferedImage.getRGB(Unknown Source)
at com.oy.duplicator.SimpleComparator.diagonalCompare(SimpleComparator.java:144)
at com.oy.duplicator.SimpleComparator.compareBufferedImage(SimpleComparator.java:78)
at com.oy.duplicator.SimpleComparator.compare(SimpleComparator.java:44)
at com.oy.duplicator.Main.main(Main.java:78)
ArrayOutOfBoundsException
?這是爲什麼?也許這是由讀取相同文件引起的,但它在第一個for-loop
中起作用。