Насколько я понимаю, каждый пиксель представлен 4 байтами (a, r, g, b). Как это можно сохранить в массиве byte [], где размер - это количество пикселей в изображении.
Следующий код работает как ожидалось (поворачивает изображение)
rotatedData = new byte[data.length];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++)
rotatedData[x * height + height - y - 1] = data[x + y * width];
}
data = rotatedData;
int tmp = width; // Here we are swapping, that the difference to #11
width = height;
height = tmp;
Если вы говорите об декодировании представления "NV21" изображения предварительного просмотра камеры, состоящего из блока, содержащего один байт данных яркости на пиксель, за которым следует еще один блок, содержащий данные цвета с одним образцом для каждого блока размером 2 × 2 пикселя. Цветовые данные имеют меньшее разрешение, чем яркость, потому что человеческий глаз менее чувствителен к деталям цвета.
Для образца кода, который декодирует этот формат для обычных Android битового формата ARGB пикселей см DecodeNV21
процедуры здесь.
one byte = 0xaarrggbb
или аналогичный.