0

我目前正試圖弄清楚一些代碼,通過改變每個像素的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); 

     } 
    } 

它仍然說,一個座標爲出界。我不明白爲什麼這不是爲水平工作,但它是垂直的,它適用於正方形,但不是矩形。我的垂直翻轉適用於正方形和矩形。

+0

它看起來像「我」和「J」是倒退。寬度應該是第一個不應該用於'getRGB'嗎? – Carcigenicate

回答

0

getRGB(j, i)代替getRGB(i, j)。 x值在y值之前。 (見here

+0

非常感謝。我有3個不同的問題循環,這就是問題所在。 –

相關問題