現在、各ピクセルの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);
}
}
ですが、私は何が起こっているかを把握することはできません。私は手でいくつかの値をやってみたが、それは行ごとにスキャンする必要があり、ピクセル値を持つ画像の同じ高さと幅の2次元配列を作成するように思えます。しかし、それは決して内側のループから抜け出すことはありません。内側のループの何かが範囲外です。
はさえ
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);
}
}
をやってそれはまだ座標が範囲外であることを述べています。私はなぜこれが水平に働いていないのか分かりませんが、それは垂直のためのもので、四角形ではありますが長方形ではありません。私の垂直フリップは、正方形と長方形の両方で機能します。
'i'と' j'は後方にあります。 widthは 'getRGB'のために最初にすべきですか? – Carcigenicate