Рассчитать размер пиксельного массива изображения, используя пиксельный формат RGBA32 - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть простое изображение, которое хранит ширину, высоту, формат пикселя и некоторые другие вещи, в которых я не уверен, а затем данные пикселя.

Мне сказали пиксельформат - RGBA32, а остальные данные - только пиксельные данные.

Какая формула для его расчета?Насколько я понимаю, для каждого из цветов RGBA требуется 8 бит, поэтому для каждого пикселя требуется 4 байта.

Итак, я бы пришел к выводу, что размер массива пикселей - это ширина * высота * 4, нобыло недостаточно.

1 Ответ

1 голос
/ 21 февраля 2012

Размер BMP 64 на 64 пикселя с RGBA32 обычно составляет 16440 байт (при условии BITMAPV3INFOHEADER).56 байтов для заголовка, 16384 байта для данных пикселей (что составляет 64 * 64 * 4).Размер заголовка может варьироваться, хотя , и может достигать 124 байтов (BITMAPV5HEADER), предполагая стандартный BMP.

Я думаю, у вас есть одно или несколько из следующих значений для учетаВаши дополнительные ~ 5376 (21760 - 16384) байтов:

  • Проверка целостности (s) (контрольная сумма, CRC и т. д.)
  • Более длинный заголовок, чем вы в настоящее время принимаете
  • Выравнивание по пикселям, не равное 4 байтам
  • Метаданные (комментарии, данные EXIF, данные GPS и т. Д.)
  • Цветовой профиль ICC
  • Пробел в данных

В любом случае, я бы сначала проверил последние 16384 (64 * 64 * 4) байта данных, которые, вероятно, там, где находятся данные вашего изображения (если этот формат вообще принимает после формата BMPи не имеет никаких конечных метаданных или профиля ICC или проверки целостности).Примечательно, что данные RGBA обычно хранятся с первым альфа-байтом (ARGB).

Возможно, стоит взглянуть на эту диаграмму формата файла BMP , просто чтобы ознакомиться собщая структура формата изображения.

...