Bitmap の getPixels メソッドによって int 値として格納されている Color 値の配列に、標準の .jpeg 画像を転送しようとしています。私のコードは画像に読み込まれ、そのデータを 1 次元の int 配列に送信しますが、元の画像と比較すると値の一部が意味をなしません。プログラムで画面に印刷しているため、画像が適切に読み込まれていることがわかります。私の出力にそのような奇妙な値が含まれている理由を誰かが知っていますか?
/* Test */
ImageView image = (ImageView) findViewById(R.id.imageView1);
Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.testsmall);
image.setImageBitmap(bMap);
int[] pixels = new int[bMap.getHeight() * bMap.getWidth()];
bMap.getPixels(pixels, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight());
int[][] colors2D = new int[bMap.getWidth()][bMap.getHeight()];
Log.i("State", "Start");
for (int x = 0; x < bMap.getWidth(); x++)
{
for (int y = 0; y < bMap.getHeight(); y++)
{
colors2D[x][y] = pixels[x + y * bMap.getWidth()];
Log.i("Inside", "X: " + x + ", Y: " + y + ", Pixel: " + pixels[x + y * bMap.getWidth()]);
}
Log.i("Outside", "New Line");
}
Log.i("State", "End");
/* End Test */
追加情報:
以下に、プログラムのこの部分の LogCat 出力を示します。奇妙な値はここにあります。Android の Color クラスは、白を -1、黒を -16777216 として定義します。
これがtestSmall.jpgです。ご覧のとおり、かなり小さいです。16x16 のみを測定します。