私は現在、頭をimagejに巻き付けようとしており、画像を複製して出力を吐き出そうとしています。一般的な考え方は、画像を取得し、画像プロセッサからピクセル配列を取得し、それを新しい配列にコピーして、その配列から新しい画像を構築することです。
これで、コンソール出力からわかるように、aPixels_org[0] の値が存在します。しかし、すべてのチェックを行っても、arrayoutofbounds 例外がスローされます。
これがコードです...(ところで、l.は単なるロガーオブジェクトであり、以下のif条件に配列値が存在するかどうかを確認するためのサニティチェックです。私はC ++の人なので、より良い方法があるかどうかアドバイスしてください、そしてJavaがif(int){}チェックを許可しないため、直接チェックすることに慣れています)
関数からaPixels_orgを取得しています.dthe aPixels_dupはそのように作成されています
int[] aPixels_dup = new int[iWidth*iHeight];
ここで、iWidth*iHeight は必要な配列のサイズです。また、array.length() オプションを使用してサイズを直接生成しようとしました。問題のコードは
System.out.println(">>>>>>>>>>>>>>>>>>>>>." + aPixels_dup[0] +" " + aPixels_org[0] + " " + iWidth + " " + iHeight);
if(Integer.toString(aPixels_org[0]) != null && Integer.toString(aPixels_dup[0]) != null )
{
l.info("Arrays exsist");
System.arraycopy(aPixels_org,0,aPixels_dup,0,iWidth*iHeight);
l.info("Array Copied");
}
else{l.warn("Something is NULL");}
l.info("");
これがエラーです
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at Alpha_.DuplicateCurrentImage(Alpha_.java:64)
at Alpha_.run(Alpha_.java:81)
at ij.IJ.runUserPlugIn(IJ.java:185)
at ij.IJ.runPlugIn(IJ.java:152)
at ij.Executer.runCommand(Executer.java:127)
at ij.Executer.run(Executer.java:64)
at java.lang.Thread.run(Thread.java:679)
ここにコンソール出力があります
[INFO] % FILE: Alpha_.java % CLASS: Alpha_ % FUNCTION: DuplicateCurrentImage % LINE: 59 % COMMENT: OK % % % TIMESTAMP: 2013-01-17 00:26:55,942
0 -1393202 466 466
[INFO] % FILE: Alpha_.java % CLASS: Alpha_ % FUNCTION: DuplicateCurrentImage % LINE: 63 % COMMENT: Arrays exsist % % % TIMESTAMP: 2013-01-17 00:26:55,942
これで私の出力は終わりです。プログラムは上記のエラーでクラッシュします。ご覧のとおり、4 つの値はすべて何らかの形で存在します。エラーをグーグルで調べたところ、エラーが
配列が不正なインデックスでアクセスされたことを示すためにスローされます。インデックスが負であるか、配列のサイズ以上です。
ここで明らかな何かが欠けていますか?
RE