我目前正試圖弄清楚一些代碼,通過改變每個像素的rgb值並將它們放入一個數組中,從而使圖像水平翻轉。我設法得到這個垂直翻轉圖像的工作,但我不能讓我的生活得到水平工作。我無法弄清楚爲什麼我不斷得到一個outOfBoundsException。值得注意的是,此代碼適用於方形圖像,但不是矩形。所以,我的代碼是爲什麼這個循環在掃描圖像時給我一個arrayIndexOutOfBoundsException?
int width = selection.getWidth();
int height = selection.getHeight();
int rgb[][] = new int[height][width];
int rgb2[][] = new int[height][width];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
rgb[i][j] = selection.getRGB(i, j);
rgb2[i][j] = selection.getRGB(i, j);
System.out.println(j);
}
}
由閱讀小數組的價值觀和測試這個循環調試它,我想不通這是怎麼回事。我試着用手做幾個值,它似乎應該逐行掃描,創建一個具有像素值的圖像高度和寬度相同的二維數組。但是,它永遠不會脫離內部循環。內循環中的某些內容超出範圍。
即使做
for (int i = 0; i < rgb.length; i++) {
for (int j = 0; j < rgb[0].length; j++) {
rgb[i][j] = selection.getRGB(i, j);
rgbTwo[i][j] = selection.getRGB(i, j);
}
}
它仍然說,一個座標爲出界。我不明白爲什麼這不是爲水平工作,但它是垂直的,它適用於正方形,但不是矩形。我的垂直翻轉適用於正方形和矩形。
它看起來像「我」和「J」是倒退。寬度應該是第一個不應該用於'getRGB'嗎? – Carcigenicate