Я пишу приложение для Android, которое читает пиксели растрового изображения, используя getPixel
, и он работал, за исключением того, что он использовал много вычислительной мощности. Итак, я попытался использовать getPixels
и сохранить все целые числа в целочисленном массиве int[]
. Это сократило вычислительное время до третьего, но конечный результат полностью отличался от предыдущего.Использование bitmap getPixels, вместо растрового изображения getPixel возвращает другой результат?
Я не знаю, возвращает ли getPixels
целые числа или если я просто что-то пропустил в своем коде.
старый код (рабочий):
int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();
for (int X = 0; X < bitmapWidth; X++)
{
for(int Y = 0; Y < bitmapHeight;Y++)
{
colorValue = Color.red(bitmap.getPixel(X,Y));
//Making use of colorValue here
}
}
Новый код (другой результат):
int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();
int[] intArray = new int[bitmap.getWidth()*bitmap.getHeight()];
bitmap.getPixels(intArray,0,bitmap.getWidth(),0,0,bitmap.getWidth(),bitmap.getHeight());
for (int X = 0; X < bitmapWidth; X++)
{
for(int Y = 0; Y < bitmapHeight;Y++)
{
colorValue = Color.red(intArray[X*Y]);
//Making use of colorValue here
}
}
Я знаю intArray[X*Y]
даст мне intArray[0]
при чтении первой строки и первого столбца, но если те, это единственные места, которые затронуты, это меня не беспокоит.
Я на самом деле пришел к такому выводу, и я чувствую себя настолько глупо, что по какой-то причине, хотя x * y на самом деле будет работать. Спасибо! –