Данные Android Camera Byte [], как он хранит 32-битные пиксели?

1

Насколько я понимаю, каждый пиксель представлен 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;
  • 0
    Вы уверены, что это 32b данных? Не менее правильный способ сохранить его, который будет соответствовать вашему описанию, - one byte = 0xaarrggbb или аналогичный.
  • 0
    Как вы можете хранить число 0-255 в 2 битах?
Показать ещё 6 комментариев
Теги:
image-processing

1 ответ

0
Лучший ответ

Если вы говорите об декодировании представления "NV21" изображения предварительного просмотра камеры, состоящего из блока, содержащего один байт данных яркости на пиксель, за которым следует еще один блок, содержащий данные цвета с одним образцом для каждого блока размером 2 × 2 пикселя. Цветовые данные имеют меньшее разрешение, чем яркость, потому что человеческий глаз менее чувствителен к деталям цвета.

Для образца кода, который декодирует этот формат для обычных Android битового формата ARGB пикселей см DecodeNV21 процедуры здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню