Прежде всего, я бы присвоил size.width
и size.height
переменной.Я не думаю, что компилятор оптимизирует это по умолчанию, но я не уверен в этом.
Кроме того, создайте byte[]
, представляющий результат, вместо использования Matrix
.Тогда вы можете сделать что-то вроде этого:
int[] grayScalePixels = new int[size.width * size.height];
int cntPixels = 0;
В вашем внутреннем цикле установите
grayScalePixels[cntPixels] = nv21ByteArray[lol];
cntPixels++;
Чтобы получить ваше окончательное изображение, сделайте следующее:
Bitmap grayScaleBitmap = Bitmap.createBitmap(grayScalePixels, size.width, size.height, Bitmap.Config.ARGB_8888);
Надеждаэто работает должным образом (я не проверял это, однако, по крайней мере, показанный принцип должен быть применим -> полагаясь на байт [] вместо матрицы)