Растровое изображение возвращает странные значения цвета
Я пытаюсь передать стандартное изображение.jpeg в массив значений Color, которые сохраняются как значения int с помощью метода getPixels растрового изображения. Мой код загрузит изображение и отправит его данные в одномерный массив 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 определяет Белый как -1, а Черный как -16777216.
Это testSmall.jpg. Как видите, он довольно маленький. Измерение только 16x16.
1 ответ
Оказывается, изображение масштабировалось ОС Android, потому что я поместил его в папку для рисования. Оказывается, если вы не хотите, чтобы изображение масштабировалось, вы должны поместить его в папку с именем drawable-nodpi. Ссылка ниже помогла мне понять это.
Растровое изображение getWidth возвращает неправильное значение