У меня есть растровое изображение, которое я загружаю каждый пиксель в массив. Позже я просматриваю данные каждого пикселя массива и проверяю, является ли цвет RED и изменяет его на BLACK. Поэтому, если это изображение 1024x1024, мне нужно пройти через массив длиной 1048576. Есть ли более быстрый способ обработать это. Любые рекомендации по повышению производительности приветствуются. Мне в основном нужно проверить цвет в изображении и изменить его. Ниже приведен пример моего кода.Есть ли более быстрый способ обработки массивов в java-андроиде?
int[] allpixels = new int[myBitmap.getHeight() * myBitmap.getWidth()];
myBitmap.getPixels(allpixels, 0, myBitmap.getWidth(), 0, 0,
myBitmap.getWidth(), myBitmap.getHeight());
for (int i = 0; i < myBitmap.getHeight() * myBitmap.getWidth(); i++) {
if (allpixels[i] == fromColor) {
allpixels[i] = toColor;
}
}
Bitmap bitmapCopy = myBitmap.copy(myBitmap.getConfig(), true);
bitmapCopy.setPixels(allpixels, 0, myBitmap.getWidth(), 0, 0,
myBitmap.getWidth(), myBitmap.getHeight());
Похоже, вы можете использовать несколько потоков здесь. –
звучит как ваш случай http://stackoverflow.com/questions/4251027/faster-way-to-set-a-png-bitmap-color-instead-of-pixel-by-pixel –
Спасибо @Sergey Benner. это сработало для меня. – Vinodtiru