как получить цвет пикселя с помощью массива байтов в Android

В моем проекте Android вот мой код.

for (int x = 0; x < targetBitArray.length; x += weight) {
    for (int y = 0; y < targetBitArray[x].length; y += weight) {
        targetBitArray[x][y] = bmp.getPixel(x, y) == mSearchColor;
    }
}

но этот код тратит много времени.

Поэтому мне нужно найти способ быстрее, чем bitmap.getPixel(). Я пытаюсь получить цвет пикселя, используя массив байтов, преобразованный из растрового изображения, но не могу. Как заменить Bitmap.getPixel()?


person phalanx89    schedule 03.09.2014    source источник


Ответы (1)


Каждый вызов метода Bitmap.getPixel требует много ресурсов, поэтому вам нужно избегать количества запросов, чтобы повысить производительность вашего кода.

Мое предложение:

  1. Прочитайте данные изображения построчно с помощью метода Bitmap.getPixels в локальный массив.
  2. Итерация по вашему локальному массиву

e.g.

int [] rowData= new int [bitmapWidth];
for (int row = 0; row < bitmapHeight; row ++) {
    // Load row of pixels
    bitmap.getPixels(rowData, 0, bitmapWidth, 0, row, bitmapWidth, 1);

    for (int column = 0; column < bitmapWidth; column ++) {
        targetBitArray[column][row] = rowData(column) == mSearchColor;
    }
}

Это будет большим улучшением производительности вашего кода.

person yopablo    schedule 26.01.2015