~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ A38F3A10CB1F7FF60F53DC727DC6EBE0__1706902860 ✰
Заголовок документа оригинал.:
✰ BMP file format - Wikipedia ✰
Заголовок документа перевод.:
✰ Формат файла BMP — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/BMP_file_format ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/a3/e0/a38f3a10cb1f7ff60f53dc727dc6ebe0.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/a3/e0/a38f3a10cb1f7ff60f53dc727dc6ebe0__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 01:06:19 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 2 February 2024, at 22:41 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Формат файла BMP — Википедия Jump to content

Формат файла BMP

Из Википедии, бесплатной энциклопедии
Растровое изображение Windows
Расширение имени файла
.bmp, .dib
Тип интернет-СМИ image/bmp[1]
image/x-bmp
Введите код 'BMP '
'BMPf'
'BMPp'
Единый идентификатор типа (UTI) com.microsoft.bmp
Разработан Корпорация Майкрософт
Тип формата Растровая графика
Открытый формат ? OSP для WMF

или Формат файла BMP растровое изображение — это растрового графического формат файла изображения, используемый для хранения растровых цифровых изображений независимо от устройства отображения (например, графического адаптера ), особенно в Microsoft Windows. [2] и ОС/2 [3] операционные системы.

Формат файлов BMP способен хранить двумерные цифровые изображения с различной глубиной цвета и, при необходимости, со сжатием данных , альфа-каналами и цветовыми профилями . Спецификация метафайла Windows (WMF) охватывает формат файлов BMP. [4]

Независимые от устройства растровые изображения и формат файлов BMP [ править ]

Схема 1 – Структура файла растрового изображения
Схема 1 – Структура файла растрового изображения

Microsoft определила особое представление цветных растровых изображений различной глубины цвета как средство обмена растровыми изображениями между устройствами и приложениями с различными внутренними представлениями. Они назвали эти аппаратно-независимые растровые изображения или DIB, а формат файла для них называется форматом файла DIB или форматом файла изображения BMP.

По данным службы поддержки Microsoft: [5]

Аппаратно-независимое растровое изображение (DIB) — это формат, используемый для определения аппаратно-независимых растровых изображений в различных цветовых разрешениях. Основная цель DIB — обеспечить возможность перемещения растровых изображений с одного устройства на другое (отсюда и независимая от устройства часть имени). DIB — это внешний формат, в отличие от растрового изображения, зависящего от устройства, которое отображается в системе как объект растрового изображения (созданный приложением...). DIB обычно переносится в метафайлах (обычно с использованием функции StretchDIBits()), файлах BMP и буфере обмена ( формат данных CF_DIB ).

В следующих разделах подробно обсуждаются данные, хранящиеся в файле BMP или DIB. Это стандартный формат файла BMP. [5] Некоторые приложения создают файлы растровых изображений, не соответствующие документации Microsoft. Кроме того, используются не все поля; в этих неиспользуемых полях будет найдено значение 0.

Структура файла [ править ]

Файл растрового изображения состоит из структур фиксированного размера (заголовков), а также структур переменного размера, появляющихся в заранее определенной последовательности. В файле может присутствовать множество различных версий некоторых из этих структур из-за долгой эволюции этого формата файла.

На диаграмме 1 видно, что растровый файл состоит из структур в следующем порядке:

Имя структуры Необязательный Размер Цель Комментарии
Заголовок растрового файла Нет 14 байт Для хранения общей информации о файле растрового изображения Не требуется после загрузки файла в память.
DIB-заголовок Нет Исправленный размер
(существует 7 различных версий)
Для хранения подробной информации о растровом изображении и определения формата пикселей. Сразу следует за заголовком растрового файла.
Дополнительные битовые маски Да 3 или 4 DWORD [6]
(12 или 16 байт)
Чтобы определить формат пикселей Присутствует только в том случае, если заголовок DIB является BITMAPINFOHEADER , а для элемента метода сжатия установлено значение BI_BITFIELDS или BI_ALPHABITFIELDS.
Таблица цветов Полу-необязательный Переменный размер Чтобы определить цвета, используемые данными растрового изображения (массив пикселей) Обязательно для глубины цвета ≤ 8 бит.
разрыв1 Да Переменный размер Выравнивание структуры Артефакт смещения файла в массив пикселей в заголовке файла растрового изображения.
Пиксельный массив Нет Переменный размер Чтобы определить фактические значения пикселей Формат пикселей определяется заголовком DIB или дополнительными битовыми масками. Каждая строка в массиве пикселей дополняется до размера, кратного 4 байтам.
разрыв2 Да Переменный размер Выравнивание структуры Артефакт поля смещения данных профиля ICC в заголовке DIB.
Цветовой профиль ICC Да Переменный размер Определение цветового профиля для управления цветом Также может содержать путь к внешнему файлу, содержащему цветовой профиль. При загрузке в память как «неупакованный DIB» он располагается между таблицей цветов и Gap1. [7]

DIB в памяти [ править ]

Файл растрового изображения, загруженный в память, становится структурой данных DIB — важным компонентом Windows GDI API. Структура данных DIB в памяти почти такая же, как формат файла BMP, но она не содержит 14-байтового заголовка файла растрового изображения и начинается с заголовка DIB. Для DIB, загруженных в память, таблица цветов также может состоять из 16-битных записей, которые представляют собой индексы реализуемой в данный момент палитры. [8] (дополнительный уровень косвенности) вместо явного определения цвета RGB. Во всех случаях массив пикселей должен начинаться с адреса памяти, кратного 4 байтам. В неупакованных DIB-файлах, загруженных в память, дополнительные данные цветового профиля должны располагаться сразу после таблицы цветов и перед пробелом1 и массивом пикселей. [7] (в отличие от рис. 1).

Когда размер промежутка1 и промежутка2 равен нулю, структура данных DIB в памяти обычно называется «упакованным DIB», и на нее можно ссылаться с помощью одного указателя, указывающего на начало заголовка DIB. Во всех случаях массив пикселей должен начинаться с адреса памяти, кратного 4 байтам. В некоторых случаях может потребоваться корректировка количества записей в таблице цветов, чтобы адрес памяти массива пикселей был кратен 4 байтам. [8] Для «упакованных DIB», загруженных в память, дополнительные данные цветового профиля должны следовать сразу за массивом пикселей, как показано на рис. 1 (с разрывом 1=0 и разрывом 2=0). [7]
«Упакованные DIB» требуются для функций API буфера обмена Windows , а также для некоторых функций шаблонных кистей и ресурсов Windows. [9]

Заголовок растрового файла [ править ]

Этот блок байтов находится в начале файла и используется для его идентификации. Обычное приложение сначала считывает этот блок, чтобы убедиться, что файл на самом деле является файлом BMP и не поврежден. Первые 2 байта формата файла BMP — это символ «B», затем символ «M» в ASCII кодировке . Все целочисленные значения сохраняются в формате с прямым порядком байтов (т. е. сначала младший байт).

Смещенный шестигранник Смещение декабря Размер Цель
00 0 2 байта , Поле заголовка используемое для идентификации файлов BMP и DIB: 0x42 0x4D в шестнадцатеричном формате , то же, что и BMв ASCII. Возможны следующие записи:
БМ
Windows 3.1x, 95, NT и т. д.
НЕТ
Массив растровых изображений структуры OS/2
ТАМ
Значок цвета структуры OS/2
КП
Константный указатель цвета OS/2
IC
Значок структуры OS/2
ПТ
Указатель OS/2
02 2 4 байта Размер файла BMP в байтах
06 6 2 байта Сдержанный; фактическое значение зависит от приложения, создающего изображение, если оно создано вручную, может быть равно 0
08 8 2 байта Сдержанный; фактическое значение зависит от приложения, создающего изображение, если оно создано вручную, может быть равно 0
10 4 байта Смещение, т.е. начальный адрес, байта, в котором могут быть найдены данные растрового изображения (массив пикселей).

Заголовок DIB (заголовок информации о растровом изображении) [ править ]

Этот блок байтов сообщает приложению подробную информацию об изображении, которая будет использоваться для отображения изображения на экране. Блок также соответствует заголовку, используемому внутри Windows и OS/2, и имеет несколько различных вариантов. Все они содержат поле dword (32-битное), определяющее их размер, чтобы приложение могло легко определить, какой заголовок используется в изображении. Причина существования разных заголовков заключается в том, что Microsoft несколько раз расширяла формат DIB. Новые расширенные заголовки можно использовать с некоторыми функциями GDI вместо старых, обеспечивая большую функциональность. Поскольку GDI поддерживает функцию загрузки растровых файлов, типичные приложения Windows используют эту функцию. Одним из последствий этого является то, что для таких приложений поддерживаемые ими форматы BMP соответствуют форматам, поддерживаемым используемой версией Windows. Дополнительную информацию смотрите в таблице ниже.

Заголовки растровых изображений Windows и OS/2
Размер Название заголовка Поддержка ОС Функции Написано
12 БИТМАПКОРЗАГОЛОВОК
OS21XBITMAPHEADER
Windows 2.0 или новее
ОС/2 1.x [3]
64 OS22XBITMAPHEADER ОС/2 БИТМАПКОРЗАГОЛОВОК 2 Добавляет полутона . Добавляет сжатие RLE и Huffman 1D.
16 OS22XBITMAPHEADER Этот вариант предыдущего заголовка содержит только первые 16 байтов, а остальные байты считаются нулевыми значениями. [3]

Примером такого случая является графика pal8os2v2-16.bmp. [10] пакета BMP. [11]

40 БИТМАПИНОЗАГОЛОВОК Windows NT , 3.1x или новее [2] Увеличивает ширину и высоту растрового изображения до 4 байтов. Добавляет форматы 16 бит на пиксель и 32 бита на пиксель. Добавляет сжатие RLE.
52 БИТМАПВ2ИНФОХЕДЕР Недокументированный Добавляет битовые маски RGB. Adobe Photoshop
56 БИТМАПВ3ИНФОХЕДЕР Официально не задокументировано, но эта документация была размещена на форумах Adobe сотрудником Adobe с заявлением, что стандарт когда-то в прошлом был включен в официальную документацию MS. [12] Добавляет битовую маску альфа-канала . Adobe Photoshop
108 БИТМАПВ4ХЕДЕР Windows NT 4.0 , 95 или новее Добавляет тип цветового пространства и гамма-коррекцию.
124 БИТМАПВ5ЗАГОЛОВОК Windows NT 5.0 , 98 или новее Добавляет цветовые профили ICC. GIMP
Смещение (шестнадцатеричное) Смещение (декабрь) Размер (байты) ОС/2 1.x БИТМАПКОРЗАГОЛОВОК [3]
14 4 Размер этого заголовка (12 байт)
12 18 2 Ширина растрового изображения в пикселях (беззнаковые 16 бит).
14 20 2 Высота растрового изображения в пикселях (беззнаковые 16 бит)
16 22 2 Количество цветовых плоскостей должно быть 1.
18 24 2 Количество бит на пиксель
Растровые изображения OS/2 1.x несжаты и не могут иметь разрешение 16 или 32 бита на пиксель.

BITMAPCOREHEADER в Windows 2.x отличается от BITMAPCOREHEADER OS/2 1.x (показанного в таблице выше) тем, что поля ширины и высоты изображения представляют собой целые числа со знаком, а не без знака. [13]

Версии после BITMAPINFOHEADER добавляет поля только в конец заголовка предыдущей версии. Например: BITMAPV2INFOHEADER добавляет поля в БИТМАПИНФОХЕДЕР и BITMAPV3INFOHEADER добавляет поля в БИТМАПВ2ИНФОЗАГОЛОВОК .

Интегрированный альфа-канал был представлен в недокументированной версии. BITMAPV3INFOHEADER и с документированным BITMAPV4HEADER (начиная с Windows 95 ) и используется в системе входа в систему и темах Windows XP, а также в Microsoft Office (начиная с версии 2000); он поддерживается некоторыми программами для редактирования изображений , такими как Adobe Photoshop начиная с версии 7 и Adobe Flash начиная с версии MX 2004 (тогда известной как Macromedia Flash). Он также поддерживается GIMP , Google Chrome , Microsoft PowerPoint и Microsoft Word .

По соображениям совместимости большинство приложений используют для сохранения файлов старые заголовки DIB. Поскольку OS/2 больше не поддерживается после Windows 2000, на данный момент общим форматом Windows является Заголовок BITMAPINFOHEADER . Описание смотрите в следующей таблице. Все значения сохраняются как целые числа без знака, если не указано иное.

Смещение (шестнадцатеричное) Смещение (декабрь) Размер (байты) Окна БИТМАПИНОЗАГОЛОВОК [2]
14 4 размер этого заголовка, в байтах (40)
12 18 4 ширина растрового изображения в пикселях (целое число со знаком)
16 22 4 высота растрового изображения в пикселях (целое число со знаком)
26 2 количество цветовых плоскостей (должно быть 1)
1 С 28 2 количество бит на пиксель, которое является глубиной цвета изображения. Типичные значения: 1, 4, 8, 16, 24 и 32.
30 4 используемый метод сжатия. В следующей таблице приведен список возможных значений.
22 34 4 размер изображения. Это размер необработанных растровых данных; для растровых изображений BI_RGB можно задать фиктивный 0.
26 38 4 горизонтальное разрешение изображения. (пикселей на метр, целое число со знаком)
42 4 вертикальное разрешение изображения. (пикселей на метр, целое число со знаком)
46 4 количество цветов в цветовой палитре или от 0 по умолчанию до 2 н
32 50 4 количество используемых важных цветов или 0, если важен каждый цвет; обычно игнорируется

Метод сжатия (смещение 30) может быть:

Ценить Идентифицировано Метод сжатия Комментарии
0 BI_RGB никто Наиболее общий
1 BI_RLE8 RLE 8 бит/пиксель Может использоваться только с растровыми изображениями с разрешением 8 бит/пикселей.
2 BI_RLE4 RLE 4 бит/пиксель Может использоваться только с 4-битными/пиксельными растровыми изображениями.
3 BI_BITFIELDS OS22XBITMAPHEADER : Хаффман 1D BITMAPV2INFOHEADER : маски битовых полей RGB,
BITMAPV3INFOHEADER + : RGBA
4 BI_JPEG OS22XBITMAPHEADER : RLE-24 BITMAPV4INFOHEADER + : изображение JPEG для печати. [14]
5 BI_PNG BITMAPV4INFOHEADER + : изображение PNG для печати. [14]
6 BI_ALPHABITFIELDS Маски битовых полей RGBA только Windows CE 5.0 с .NET 4.0 или более поздней версии
11 BI_CMYK никто только метафайл Windows CMYK [4]
12 BI_CMYKRLE8 РЛЭ-8 только метафайл Windows CMYK
13 BI_CMYKRLE4 РЛЭ-4 только метафайл Windows CMYK

ОС/2 2.x OS22XBITMAPHEADER ( BITMAPINFOHEADER2 в документации IBM) содержит 24 дополнительных байта: [3]

Смещение (шестнадцатеричное) Смещение (декабрь) Размер (байты) ОС/2 OS22XBITMAPHEADER ( БИТМАПИНОЗАГОЛОВОК2 ) [3]
36 54 2 Перечисляемое значение, определяющее единицы разрешения по горизонтали и вертикали (смещения 38 и 42). Единственное определенное значение — 0, что означает количество пикселей на метр.
38 56 2 Прокладка. Игнорируется и должно быть равно нулю
58 2 Перечисляемое значение, указывающее направление, в котором биты заполняют растровое изображение. Единственное определенное значение — 0, что означает, что начало координат — левый нижний угол. Биты заполняются слева направо, а затем снизу вверх.

Обратите внимание, что растровые изображения Windows (которые не включают это поле) также могут указывать начало координат в верхнем левом углу (биты заполняются слева направо, затем сверху вниз), используя отрицательное значение высоты изображения.

60 2 Перечисляемое значение, указывающее алгоритм полутонового изображения, который следует использовать при рендеринге изображения.
40 64 4 Параметр полутонового изображения 1 (см. ниже)
44 68 4 Параметр полутонов 2 (см. ниже)
48 72 4 Перечисляемое значение, указывающее кодировку цвета для каждой записи в таблице цветов. Единственное определенное значение — 0, обозначающее RGB.
76 4 Идентификатор, определяемый приложением. Не используется для рендеринга изображений

Алгоритм полутонового изображения (смещение 60) может быть следующим:

Ценить Алгоритм полутонового изображения Комментарии
0 никто Наиболее общий
1 Распространение ошибок Параметр полутонового изображения 1 (смещение 64) — это процент демпфирования ошибок. 100 означает отсутствие демпфирования. 0 указывает, что ошибки не распространяются
2 PANDA: алгоритм обработки получения некодированных документов Параметры полутонового изображения 1 и 2 (смещение 64 и 68 соответственно) представляют размеры X и Y в пикселях соответственно используемого шаблона полутонового изображения.
3 Суперкруг Параметры полутонового изображения 1 и 2 (смещение 64 и 68 соответственно) представляют размеры X и Y в пикселях соответственно используемого шаблона полутонового изображения.

Таблица цветов [ править ]

Таблица цветов (палитра) находится в файле изображения BMP непосредственно после заголовка файла BMP, заголовка DIB и после дополнительных трех или четырех битовых масок, если BITMAPINFOHEADER Используется заголовок с опцией BI_BITFIELDS (12 байт) или BI_ALPHABITFIELDS (16 байт). Следовательно, его смещение равно размеру BITMAPFILEHEADER плюс размер заголовка DIB (плюс дополнительные 12–16 байт для трех- или четырехбитовых масок).
Примечание. В Windows CE Заголовок BITMAPINFOHEADER можно использовать с BI_ALPHABITFIELDS. [6] опция в элементе biCompression.

Количество записей в палитре либо 2 н (где n — количество бит на пиксель) или меньшее число, указанное в заголовке (в OS/2 Формат заголовка BITMAPCOREHEADER , поддерживается только полноразмерная палитра). [3] [5] В большинстве случаев каждая запись в таблице цветов занимает 4 байта в следующем порядке: синий, зеленый, красный, 0x00 (исключения см. ниже). Это индексируется в BITMAPINFOHEADER в члене структуры biBitCount.

Таблица цветов представляет собой блок байтов (таблицу), в котором перечислены цвета, используемые изображением. Каждый пиксель в индексированном цветном изображении описывается количеством битов (1, 4 или 8), которые являются индексом одного цвета, описанного в этой таблице. Назначение цветовой палитры в растровых изображениях индексированных цветов — информировать приложение о фактическом цвете, которому соответствует каждое из этих значений индекса. Целью таблицы цветов в неиндексированных (непалитрированных) растровых изображениях является перечисление цветов, используемых растровым изображением, с целью оптимизации на устройствах с ограниченными возможностями цветного отображения, а также для облегчения будущего преобразования в различные форматы пикселей и палитризации.

Цвета в таблице цветов обычно указываются в формате RGBA32 по 4 байта на запись . Таблица цветов, используемая в OS/2. BITMAPCOREHEADER использует 3-байтовый формат RGB24 на запись . [3] [5] Для DIB, загруженных в память, таблица цветов может опционально состоять из 2-байтовых записей — эти записи представляют собой индексы текущей реализованной палитры. [8] вместо явных определений цветов RGB.

Microsoft не запрещает наличие допустимой битовой маски альфа-канала. [15] в BITMAPV4HEADER и BITMAPV5HEADER для индексированных цветных изображений с глубиной цвета 1 бит на пиксель, 4 бита на пиксель и 8 бит на пиксель, что указывает на то, что записи таблицы цветов также могут указывать альфа-компонент, используя формат 8.8.8.[0-8].[0-8] через RGBQUAD.rgbReserved [16] член. Однако некоторые версии документации Microsoft запрещают эту функцию, заявляя, что член RGBQUAD.rgbReserved «должен быть равен нулю».

Как упоминалось выше, таблица цветов обычно не используется, когда пиксели имеют формат 16 бит на пиксель (16 бит на пиксель) (и выше); в этих файлах растровых изображений обычно нет записей таблицы цветов. Однако документация Microsoft (на веб-сайте MSDN по состоянию на 16 ноября 2010 г.) [17] ) указывает, что для 16 бит на пиксель (и выше) таблица цветов может присутствовать для хранения списка цветов, предназначенных для оптимизации на устройствах с ограниченными возможностями отображения цветов, а также указывает, что в таких случаях в эту таблицу цветов. Это может показаться противоречием, если не делать различия между обязательными элементами палитры и дополнительным списком цветов.

Пиксельное хранилище [ править ]

Биты, представляющие пиксели растрового изображения, упакованы в строки (также известные как шаги или строки сканирования). Размер каждой строки округляется до значения, кратного 4 байтам (32-битное DWORD ), путем заполнения. [18]

Для изображений с высотой выше 1 несколько дополненных строк сохраняются последовательно, образуя пиксельный массив.

Общее количество байтов, необходимое для хранения одной строки пикселей, можно рассчитать как:

ImageWidth выражается в пикселях. В приведенном выше уравнении используются функции пола и потолка .

Общее количество байтов, необходимое для хранения массива пикселей в изображении n бит на пиксель (bpp), при этом 2 н цветов, можно рассчитать, принимая во внимание эффект округления размера каждой строки до кратного 4 байтам, следующим образом:

ImageHeight выражается в пикселях. Абсолютное значение необходимо, поскольку ImageHeight выражается как отрицательное число для изображений сверху вниз.

Массив пикселей (растровые данные) [ править ]

Массив пикселей представляет собой блок 32-битных DWORD, который описывает изображение попиксельно. Обычно пиксели сохраняются «снизу вверх», начиная с левого нижнего угла, идя слева направо, а затем построчно снизу вверх по изображению. [5] Пока не Используется BITMAPCOREHEADER , несжатые растровые изображения Windows также можно сохранять сверху вниз, если значение высоты изображения отрицательное.

В исходном DIB OS/2 единственными четырьмя допустимыми значениями глубины цвета были 1, 4, 8 и 24 бита на пиксель (bpp). [5] Современные заголовки DIB допускают форматы пикселей с 1, 2, 4, 8, 16, 24 и 32 битами на пиксель (bpp). [19] GDI+ также допускает 64 бита на пиксель. [20]

Байты заполнения (не обязательно 0) должны быть добавлены в конец строк, чтобы увеличить длину строк до кратной четырем байтам. Когда массив пикселей загружается в память, каждая строка должна начинаться с адреса памяти, кратного 4. Это ограничение адреса/смещения является обязательным только для массивов пикселей, загруженных в память. Для хранения файлов только размер каждой строки должен быть кратен 4 байтам, а смещение файла может быть произвольным. [5] 24-битное растровое изображение с шириной = 1 будет содержать 3 байта данных на строку (синий, зеленый, красный) и 1 байт заполнения, тогда как ширина = 2 будет содержать 6 байтов данных и 2 байта заполнения, ширина = 3. будет иметь 9 байтов данных и 3 байта заполнения, а Width=4 будет иметь 12 байтов данных и без заполнения.

Сжатие [ править ]

Формат пикселей [ править ]

  • Формат 1 бит на пиксель (1 бит на пиксель) поддерживает два разных цвета (например: черный и белый). Значения пикселей хранятся в каждом бите, при этом первый (крайний левый) пиксель находится в самом старшем бите первого байта. [5] Каждый бит представляет собой индекс таблицы двух цветов. Неустановленный бит будет относиться к первой записи таблицы цветов, а установленный бит будет относиться к последней (второй) записи таблицы цветов.
  • Формат 2 бита на пиксель (2bpp) поддерживает 4 различных цвета и сохраняет 4 пикселя на 1 байт, причем самый левый пиксель находится в двух старших битах ( для Windows CE : только [21] ). Каждое значение пикселя представляет собой 2-битный индекс в таблице, содержащей до 4 цветов.
  • Формат 4 бита на пиксель (4bpp) поддерживает 16 различных цветов и хранит 2 пикселя на 1 байт, причем самый левый пиксель находится в более значимом полубайте . [5] Каждое значение пикселя представляет собой 4-битный индекс в таблице, содержащей до 16 цветов.
  • Формат 8 бит на пиксель (8bpp) поддерживает 256 различных цветов и сохраняет 1 пиксель на 1 байт. Каждый байт представляет собой индекс таблицы, содержащей до 256 цветов.
  • Формат 16 бит на пиксель (16 бит на пиксель) поддерживает 65536 различных цветов и сохраняет 1 пиксель на 2-байтовое СЛОВО. Каждое СЛОВО может определять альфа, красный, зеленый и синий образцы пикселя.
  • Формат 24 бита на пиксель (24 бита на пиксель) поддерживает 16 777 216 различных цветов и сохраняет значение 1 пикселя на 3 байта. Каждое значение пикселя определяет образцы красного, зеленого и синего пикселя (8.8.8.0.0 в нотации RGBAX). Точнее, в порядке: синий, зеленый и красный (8 бит на каждую выборку). [5]
  • Формат 32 бита на пиксель (32 бита на пиксель) поддерживает 4 294 967 296 различных цветов и сохраняет 1 пиксель на 4-байтовое DWORD. Каждый DWORD может определять альфа, красный, зеленый и синий образцы пикселя.

Чтобы устранить неоднозначность в отношении того, какие биты определяют какие выборки, заголовки DIB предоставляют определенные значения по умолчанию, а также конкретные BITFIELDS, которые представляют собой битовые маски, определяющие принадлежность определенной группы битов в пикселе к определенному каналу . Следующая диаграмма определяет этот механизм:

Диаг.  2 – Механизм BITFIELDS для 32-битного пикселя, изображенного в обозначении длины выборки RGBAX.
Диаг. 2 – Механизм BITFIELDS для 32-битного пикселя, изображенного в обозначении длины выборки RGBAX.

Поля выборки, определенные битовыми масками BITFIELDS, должны быть смежными и неперекрывающимися, но порядок полей выборки произвольный. Наиболее распространенный порядок полей: Альфа, Синий, Зеленый, Красный (от старшего до младшего бита). Красная, зеленая и синяя битовые маски действительны только в том случае, если для элемента Compression заголовка DIB установлено значение BI_BITFIELDS. Маска альфа-бита действительна всякий раз, когда она присутствует в заголовке DIB или когда для элемента Compression заголовка DIB установлено значение BI_ALPHABITFIELDS. [6] ( только для Windows CE ).

Диаг.  3 – Формат пикселей с альфа-каналом для 16-битного пикселя (в обозначении длины выборки RGBAX), фактически созданный Adobe Photoshop[22]
Диаг. 3 — формат пикселей с альфа-каналом для 16-битного пикселя (в обозначении длины выборки RGBAX), фактически созданный Adobe Photoshop. [22]
Все возможные форматы пикселей в DIB.
Все возможные форматы пикселей в DIB.

Подтипы RGB-видео [ править ]

Описанный выше механизм BIFIELD позволяет определять десятки тысяч различных форматов пикселей, однако на практике используются лишь некоторые из них. [22] все форматы палитр RGB8, RGB4 и RGB1 (отмечены желтым цветом в таблице выше, определены в dshow.hимена .MEDIASUBTYPE):

Подтипы несжатого видео RGB [23]
RGBAX Подтип RGB RGBAX Подтип ARGB
8.8.8.0.8 RGB32 8.8.8.8.0 ARGB32
10.10.10.2.0 А2Р10Г10Б10
8.8.8.0.0 RGB24 10.10.10.2.0 А2Б10Г10Р10
5.6.5.0.0 RGB565 4.4.4.4.0 АРГБ4444
5.5.5.0.1 RGB555 5.5.5.1.0 АРГБ1555
Битовые поля для десяти бит RGB [23]
Битовое поле Компенсировать Биты A2R10G10B10 Биты A2B10G10R10
Красный 36 часов 00 00 F0 3F ТЕМ: 3FF00000 20... 29 FF 03 00 00 ТЕМ: 000003FF  0...  9
Зеленый 3Ач 00 FC 0F 00 ТЕМ: 000FFC00 10... 19 00 FC 0F 00 ТЕМ: 000FFC00 10... 19
Синий 3Эх FF 03 00 00 ТЕМ: 000003FF  0...  9 00 00 F0 3F ТЕМ: 3FF00000 20... 29
Альфа 42 часа 00 00 00 C0 ТЕМ: C0000000 30... 31 00 00 00 C0 ТЕМ: C0000000 30... 31

В версии 2.1.4 FFmpeg поддерживал (в собственной терминологии) форматы пикселей BMP bgra, bgr24, rgb565le, rgb555le, rgb444le, rgb8, bgr8, rgb4_byte, bgr4_byte, Gray, pal8 и monob ; т. е. bgra был единственным поддерживаемым форматом пикселей с прозрачностью. [24]

Пример 1 растрового изображения размером 2×2 пикселя с кодировкой 24 бита на пиксель.

Пример 1 [ править ]

Ниже приведен пример 24-битного растрового изображения размером 2×2 пикселя (заголовок Windows DIB). BITMAPINFOHEADER ) с форматом пикселей RGB24.

Компенсировать Размер Шестнадцатеричное значение Ценить Описание
Заголовок БМП
2 42 4Д "БМ" Поле идентификатора (42h, 4Dh)
2 часа 4 46 00 00 00 70 байт (54+16) Размер файла BMP (заголовок 54 байта + данные 16 байт).
6 часов 2 00 00 Неиспользованный Для конкретного приложения
8 часов 2 00 00 Неиспользованный Для конкретного приложения
Ах 4 36 00 00 00 54 байта (14+40) Смещение, где можно найти массив пикселей (растровые данные).
DIB-заголовок
Эх 4 28 00 00 00 40 байт Количество байтов в заголовке DIB (с этого момента)
12 часов 4 02 00 00 00 2 пикселя (порядок слева направо) Ширина растрового изображения в пикселях
16 часов 4 02 00 00 00 2 пикселя (порядок снизу вверх) Высота растрового изображения в пикселях. Положительный для порядка пикселей снизу вверх.
1 Ач 2 01 00 1 самолет Количество используемых цветовых плоскостей
2 18 00 24 бита Количество бит на пиксель
1Эх 4 00 00 00 00 0 BI_RGB, сжатие массива пикселей не используется.
22 часа 4 10 00 00 00 16 байт Размер необработанных растровых данных (включая заполнение)
26 часов 4 13 0Б 00 00 2835 пикселей/метр по горизонтали Разрешение печати изображения,
72 DPI × 39,3701 дюймов на метр дают 2834,6472.
2Ач 4 13 0Б 00 00 2835 пикселей/метр по вертикали
2Эх 4 00 00 00 00 0 цветов Количество цветов в палитре
32 часа 4 00 00 00 00 0 важных цветов 0 означает, что все цвета важны
Начало массива пикселей (растровые данные)
36 часов 3 00 00 ПФ 0 0 255 Красный, Пиксель (x=0, y=1)
39 часов 3 ФФ ФФ ФФ 255 255 255 Белый, Пиксель (x=1, y=1)
2 00 00 0 0 Заполнение для выравнивания по 4 байта (может быть значением, отличным от нуля)
3Эх 3 ФФ 00 00 255 0 0 Синий, Пиксель (x=0, y=0)
41 час 3 00 ФФ 00 0 255 0 Зеленый, Пиксель (x=1, y=0)
44 часа 2 00 00 0 0 Заполнение для выравнивания по 4 байта (может быть значением, отличным от нуля)
0,0: синий 0000FF FF0,1: зеленый 00FF00 FF0,2: красный FF00000 FF0,3: белый FFFFFF FF1,0: синий 0000FF 7F, полупрозрачный1,1: зеленый 00FF00 7F, полупрозрачный1,2: красный FF0000 7F, полупрозрачный1,3: белый FFFFFF 7F, полупрозрачный
Пример 2 растрового изображения размером 4×2 пикселя с кодировкой 32 бита на пиксель.

Пример 2 [ править ]

Ниже приведен пример 32-битного растрового изображения размером 4×2 пикселя со значениями непрозрачности в альфа-канале (заголовок Windows DIB). BITMAPV4HEADER ) с форматом пикселей ARGB32.

Компенсировать Размер Шестнадцатеричное значение Ценить Описание
Заголовок БМП
2 42 4Д "БМ" Поле идентификатора (42h, 4Dh)
2 часа 4 9А 00 00 00 154 байта (122+32) Размер файла BMP
6 часов 2 00 00 Неиспользованный Для конкретного приложения
8 часов 2 00 00 Неиспользованный Для конкретного приложения
Ах 4 7А 00 00 00 122 байта (14+108) Смещение, где можно найти массив пикселей (растровые данные).
DIB-заголовок
Эх 4 6С 00 00 00 108 байт Количество байтов в заголовке DIB (с этого момента)
12 часов 4 04 00 00 00 4 пикселя (порядок слева направо) Ширина растрового изображения в пикселях
16 часов 4 02 00 00 00 2 пикселя (порядок снизу вверх) Высота растрового изображения в пикселях
1 Ач 2 01 00 1 самолет Количество используемых цветовых плоскостей
2 20 00 32 бита Количество бит на пиксель
1Эх 4 03 00 00 00 3 BI_BITFIELDS, сжатие массива пикселей не используется.
22 часа 4 20 00 00 00 32 байта Размер необработанных растровых данных (включая заполнение)
26 часов 4 13 0Б 00 00 2835 пикселей/метр по горизонтали Разрешение печати изображения,
72 DPI × 39,3701 дюймов на метр дают 2834,6472.
2Ач 4 13 0Б 00 00 2835 пикселей/метр по вертикали
2Эх 4 00 00 00 00 0 цветов Количество цветов в палитре
32 часа 4 00 00 00 00 0 важных цветов 0 означает, что все цвета важны
36 часов 4 00 00 ФФ 00 00FF0000 в прямом порядке Битовая маска красного канала (действительна, поскольку указан BI_BITFIELDS)
3Ач 4 00 ФФ 00 00 0000FF00 в обратном порядке Битовая маска зеленого канала (действительна, поскольку указан BI_BITFIELDS)
3Эх 4 ФФ 00 00 00 000000FF в прямом порядке Битовая маска синего канала (действительна, поскольку указан BI_BITFIELDS)
42 часа 4 00 00 00 ФФ FF000000 в прямом порядке Битовая маска альфа-канала
46 часов 4 20 6Э 69 57 с прямым порядком байтов " Win " LCS_WINDOWS_COLOR_SPACE
4 Ач 24 часа 24ч* 00...00 Конечные точки цветового пространства CIEXYZTRIPLE Не используется для LCS " Win " или " sRGB"
6Эх 4 00 00 00 00 0 Красная Гамма Не используется для LCS " Win " или " sRGB"
72 часа 4 00 00 00 00 0 Зелёная Гамма Не используется для LCS " Win " или " sRGB"
76 часов 4 00 00 00 00 0 Синяя Гамма Не используется для LCS " Win " или " sRGB"
Начало массива пикселей (данные растрового изображения)
7Ач 4 ФФ 00 00 7F 255 0 0 127 Синий (Альфа: 127), Пиксель (x=0, y=1)
7Эх 4 00FF 00 7F 0 255 0 127 Зеленый (Альфа: 127), Пиксель (x=1, y=1)
82 часа 4 00 00 ФФ 7F 0 0 255 127 Красный (Альфа: 127), Пиксель (x=2, y=1)
86 часов 4 ФФ ФФ ФФ 7F 255 255 255 127 Белый (Альфа: 127), Пиксель (x=3, y=1)
8Ач 4 ФФ 00 00 ФФ 255 0 0 255 Синий (Альфа: 255), Пиксель (x=0, y=0)
8Эх 4 00 ФФ 00 ФФ 0 255 0 255 Зеленый (Альфа: 255), Пиксель (x=1, y=0)
92 часа 4 00 00 ФФ ФФ 0 0 255 255 Красный (Альфа: 255), Пиксель (x=2, y=0)
96 часов 4 ФФ ФФ ФФ ФФ 255 255 255 255 Белый (Альфа: 255), Пиксель (x=3, y=0)

Обратите внимание, что данные растрового изображения начинаются с нижнего левого угла изображения.

Использование формата BMP [ править ]

Простота формата файла BMP и его широкое распространение в Windows и других системах, а также тот факт, что этот формат относительно хорошо документирован и имеет открытый формат , делают BMP очень распространенным форматом, который могут использовать программы обработки изображений из многих операционных систем. Прочитайте и напишите. Файлы ICO и CUR содержат растровые изображения, начинающиеся с BITMAPINFOHEADER.

Многие старые графические пользовательские интерфейсы использовали растровые изображения во встроенных графических подсистемах; [25] например, подсистема GDI платформ Microsoft Windows и OS/2 , где в качестве конкретного используемого формата используется формат растрового файла Windows и OS/2 , обычно называемый файла расширением .BMP. [26]

Хотя большинство файлов BMP имеют относительно большой размер из-за отсутствия какого-либо сжатия (или, как правило, кодирования серий с низким коэффициентом на паллетированных изображениях), многие файлы BMP могут быть значительно сжаты с помощью алгоритмов сжатия данных без потерь, таких как ZIP , поскольку они содержат избыточные данные. Некоторые форматы, такие как RAR , даже включают процедуры, специально предназначенные для эффективного сжатия таких данных.

Related formats[edit]

The X Window System uses a similar XBM format for black-and-white images, and XPM (pixelmap) for color images. There are also a variety of "raw" formats, which save raw data with no other information. The Portable Pixmap (PPM) and Truevision TGA formats also exist, but are less often used – or only for special purposes; for example, TGA can contain transparency information.

References[edit]

  1. ^ "IANA Considerations". Windows Image Media Types. sec. 5. doi:10.17487/RFC7903. RFC 7903.
  2. ^ Jump up to: a b c James D. Murray; William vanRyper (April 1996). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly. bmp. ISBN 1-56592-161-5. Retrieved 2014-03-07.
  3. ^ Jump up to: a b c d e f g h James D. Murray; William vanRyper (April 1996). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly. os2bmp. ISBN 1-56592-161-5. Retrieved 2014-03-07.
  4. ^ Jump up to: a b "[MS-WMF]: Windows Metafile Format". MSDN. 2014-02-13. Retrieved 2014-03-12.
  5. ^ Jump up to: a b c d e f g h i j "DIBs and Their Uses". Microsoft Help and Support. Retrieved 2015-05-14.
  6. ^ Jump up to: a b c MSDN - BITMAPINFOHEADER (Windows CE 5.0): BI_ALPHABITFIELDS in biCompression member
  7. ^ Jump up to: a b c MSDN Bitmap Header Types
  8. ^ Jump up to: a b c MSDN BITMAPINFO Structure
  9. ^ Feng Yuan - Windows graphics programming: Win32 GDI and DirectDraw: Packed Device-Independent Bitmap (CreateDIBPatternBrush, CreateDIBPatternBrushPt, FindResource, LoadResource, LockResource)
  10. ^ Summers, Jason (2015-10-30). "pal8os2v2-16.bmp". Retrieved 2016-07-06.
  11. ^ Summers, Jason (2015-10-30). "BMP Suite". Retrieved 2016-07-06.
  12. ^ Cox, Chris (2010-11-15). "Invalid BMP Format with Alpha channel". Photoshop Windows forum. Adobe. Archived from the original on 2015-01-27. Retrieved 2016-05-22.
  13. ^ "Microsoft Windows Bitmap: Summary from the Encyclopedia of Graphics File Formats".
  14. ^ Jump up to: a b "JPEG and PNG Extensions for Specific Bitmap Functions and Structures".
  15. ^ MSDN – BITMAPV4HEADER: The member bV4AlphaMask
  16. ^ MSDN – RGBQUAD: rgbReserved member
  17. ^ see note under biClrUsed MSDN BITMAPINFOHEADER
  18. ^ "Image Stride - Win32 apps". learn.microsoft.com.
  19. ^ MSDN - BITMAPINFOHEADER: The member biBitCount
  20. ^ "Types of Bitmaps". MSDN. 2012-06-03. Retrieved 2014-03-16.
  21. ^ MSDN: Windows CE - BITMAPINFOHEADER Structure
  22. ^ Jump up to: a b Adobe Photoshop: BMP Format Archived 2011-09-22 at the Wayback Machine
  23. ^ Jump up to: a b "Uncompressed RGB Video Subtypes". dshow.h. MSDN. Retrieved 2014-03-11.
  24. ^ "Image Formats". FFmpeg General Documentation. 2014. Retrieved 2014-02-23.
  25. ^ Julian Smart; Stefan Csomor & Kevin Hock (2006). Cross-Platform GUI Programming with Wxwidgets. Prentice Hall. ISBN 0-13-147381-6.
  26. ^ "Bitmap Image File (BMP), Version 5". Digital Preservation. Library of Congress. 2014-01-08. Retrieved 2014-03-11.

External links[edit]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: A38F3A10CB1F7FF60F53DC727DC6EBE0__1706902860
URL1:https://en.wikipedia.org/wiki/BMP_file_format
Заголовок, (Title) документа по адресу, URL1:
BMP file format - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)