BMP — формат файла изображения
Файлы с расширением .BMP представляют файлы растровых изображений, которые используются для хранения растровых цифровых изображений. Эти изображения не зависят от графического адаптера и также называются форматом файла независимого от устройства растрового изображения (DIB). Эта независимость служит цели открытия файла на нескольких платформах, таких как Microsoft Windows и Mac. Формат файла BMP может хранить данные в виде двумерных цифровых изображений как в монохромном, так и в цветном формате с различной глубиной цвета.
Спецификации формата файла BMP
Независимые от устройств растровые изображения помогают обмениваться растровыми изображениями между устройствами и приложениями. Из-за постоянного развития этого формата файла информация, содержащаяся в заголовках, может различаться в зависимости от версии Bitmap. Один файл растрового изображения состоит из фиксированных, а также структур переменного размера в определенной последовательности.
Структуры в файле Bitmap располагаются в следующем порядке:
Структура | Необязательно | Размер | Назначение |
---|---|---|---|
Заголовок файла | Нет | 14 | Для хранения общей информации о файле растрового изображения |
Заголовок DIB | Нет | Фиксированный размер | Для хранения подробной информации о растровом изображении и определения формата пикселей |
Дополнительные битовые маски | Да | 12 или 16 байт | Для определения формата пикселей |
Цветовая палитра | Полудополнительно | Переменный размер | Для определения цветов, используемых данными растрового изображения |
Gap1 | Да | Размер переменной | Выравнивание структуры |
Массив пикселей | Нет | Переменный размер | Формат пикселей определяется заголовком DIB или дополнительными битовыми масками. |
Gap2 | Да | Переменный размер | Выравнивание структуры |
Цветовой профиль ICC | Да | Размер переменной | Для определения цветового профиля для управления цветом |
Когда растровое изображение загружается в память, оно становится структурой DIB, используемой Windows через GDI API. Заголовок файла не является частью этой структуры данных. Цвет также может состоять из 16-битных записей, которые представляют собой индексы к текущей палитре, на которую ссылаются, вместо явных определений цвета RGB. Давайте посмотрим на некоторые из них подробно, особенно на заголовки.
Заголовок растрового файла
Заголовок растрового файла похож на другие заголовки файлов, используемые для идентификации файла. Поскольку существуют разные варианты формата файла BMP, первые 2 байта формата файла BMP представляют собой символ «B», а затем символ «M» в кодировке ASCII. Все целочисленные значения хранятся в формате с прямым порядком байтов.
Смещение шестнадцатеричное | Смещение dec | Размер | Назначение |
---|---|---|---|
00 | 0 | 2 байта | Поле заголовка, используемое для идентификации файла BMP и DIB, имеет значение 0x42 0x4D в шестнадцатеричном формате, такое же, как BM в ASCII. Возможны следующие значения. * BM — Windows 3.1x, 95, NT, … и т. д. * BA — массив растровых изображений структуры OS/2 * CI — структура OS/2 цветной значок * CP – указатель цвета OS/2 const * IC – значок структуры OS/2 * PT – указатель OS/2 |
02 | 2 | 4 байта | Размер файла BMP в байтах |
06 | 6 | 2 байта | Зарезервировано; фактическое значение зависит от приложения, которое создает образ |
08 | 8 | 2 байта | Зарезервировано; фактическое значение зависит от приложения, которое создает образ |
0A | 10 | 4 байта | Смещение, т. е. начальный адрес байта, в котором можно найти данные растрового изображения (массив пикселей). |
Заголовок DIB (заголовок растровой информации)
Подробная информация об изображении представлена этим заголовком. На основе этой информации будет определено приложение, которое будет использоваться для вывода изображения на экран. Все такие заголовки содержат поле DWORD (32-битное) с указанием их размера, чтобы приложение могло легко определить заголовок, используемый в изображении. В основном это связано с тем, что формат DIB претерпел несколько расширений. Ниже приведен заголовок DIB с перечисленными полями.
Цветовая палитра
Цветовая палитра BMP представляет собой массив структур, определяющих значения интенсивности RGB для каждого цвета в цветовой палитре устройства отображения. Каждый пиксель в растровых данных хранит одно значение, используемое в качестве индекса в цветовой палитре. Информация о цвете, хранящаяся в элементе с этим индексом, определяет цвет этого пикселя. Доступность цвета в файле растрового изображения различается следующим образом:
- Один, 4 и 8-битный — ожидается, что он всегда будет содержать цветовую палитру
- Шестнадцать, 24 и 32-битные — никогда не содержат цветовые палитры
- Шестнадцати- и 32-битные файлы BMP — содержат значения маски битовых полей вместо цветовой палитры
Хранилище пикселей
Пиксели растрового изображения хранятся в виде битов, упакованных в строки, где размер каждой строки округляется до кратного 4 байтам (32-битное DWORD) путем заполнения. Общее количество байтов, необходимых для хранения пикселей изображения, нельзя рассчитать напрямую, просто подсчитав биты. Поскольку задействовано заполнение, требуется эффект округления размера каждой строки до кратного 4 байтам. Байты заполнения (не обязательно 0) должны быть добавлены в конец строк, чтобы увеличить длину строк до числа, кратного четырем байтам. Когда массив пикселей загружается в память, каждая строка должна начинаться с адреса памяти, кратного 4.
Изображение на самом деле описывается 32-битным представлением DWORD массива пикселей. Обычно пиксели хранятся «снизу вверх», начиная с левого нижнего угла, двигаясь слева направо, а затем построчно снизу вверх изображения. Форматы пикселей и их значение перечислены ниже:
- Формат 1 бит на пиксель (1bpp) поддерживает 2 различных цвета (например, черный и белый).
- Формат 2 бита на пиксель (2bpp) поддерживает 4 различных цвета и хранит 4 пикселя на 1 байт, причем крайний левый пиксель занимает два старших бита. Каждое значение пикселя представляет собой 2-битный индекс в таблице до 4 цветов.
- Формат 4 бита на пиксель (4bpp) поддерживает 16 различных цветов и хранит 2 пикселя на 1 байт, при этом крайний левый пиксель находится в более значимом полубайте. Каждое значение пикселя представляет собой 4-битный индекс в таблице до 16 цветов.
- Формат 8 бит на пиксель (8bpp) поддерживает 256 различных цветов и сохраняет 1 пиксель на 1 байт. Каждый байт является индексом в таблице до 256 цветов.
- Формат 16 бит на пиксель (16 бит на пиксель) поддерживает 65536 различных цветов и сохраняет 1 пиксель на 2-байтовое СЛОВО. Каждое СЛОВО может определять альфа-, красный, зеленый и синий образцы пикселя.
- Формат 24-битных пикселей (24bpp) поддерживает 16 777 216 различных цветов и сохраняет значение 1 пикселя на 3 байта. Каждое значение пикселя определяет образцы красного, зеленого и синего пикселя (8.8.8.0.0 в нотации RGBAX). Конкретно в порядке: синий, зеленый и красный (по 8 бит на каждый отсчет).
- Формат 32 бита на пиксель (32 бита на пиксель) поддерживает 4 294 967 296 различных цветов и сохраняет 1 пиксель на 4-байтовое DWORD. Каждое DWORD может определять альфа-, красный, зеленый и синий образцы пикселя.
Использованная литература
- Формат метафайла Windows
- Формат файла BMP
Файл BMP – чем открыть, описание формата
Чем открыть, описание – 1 формат файла
Точечный рисунок
Bitmap Image
Тип файла: Растровые изображения
Тип данных: Двоичный файл
Mime-type: image/bmp
Разработчик: Microsoft
Заголовок и ключевые строки
HEX: 42 4D
ASCII: BM
Подробное описание
BMP — популярный формат несжатого растрового изображения. В заголовке файла записана информация об изображении — размер файла, ширина и высота рисунка, глубина пикселей, количество цветов. После заголовка может следовать палитра. Далее идет непосредственно набор данных о пикселях, который идентифицирует положение каждого пикселя и его цвет.
Файлы BMP поддерживают несколько различных глубин цвета — от черно-белого изображения (1 бит) до Deep color (64 бит). Реализована поддержка частичной прозрачности различной битности. Достоинством формата является тот факт, что изображение хранится без потерь качества. Однако, чем больше геометрические размеры BMP-изображения и цветовая глубина, тем больше размер файла.
К примеру, размер обычной фотографии с глубиной цвета 24 бит может легко достигнуть 15 МБ и более. Поэтому сфера целенаправленного применения формата ограничена. В основном, он используется для больших монохромных изображений — пиктограмм, схем, чертежей — там, где очень важна точная передача деталей.
Поддержка формата BMP интегрирована в Windows, таким образом файл можно открыть двойным щелчком мыши.
Как, чем открыть файл .bmp?
WindowsОнлайнAndroidiOSMac OS
|
Инструкция — как выбрать программу из списка, скачать и использовать ее для открытия файла
Для более точного определения формата и программ для открытия файла используйте функцию определения формата файла по расширению и по данным (заголовку) файла.
BMP — Формат файла изображения
Файлы с расширением .BMP представляют файлы растровых изображений, которые используются для хранения растровых цифровых изображений. Эти изображения не зависят от графического адаптера и также называются форматом файла независимого от устройства растрового изображения (DIB). Эта независимость служит цели открытия файла на нескольких платформах, таких как Microsoft Windows и Mac. В формате файла BMP данные могут храниться в виде двумерных цифровых изображений как в монохромном, так и в цветном формате с различной глубиной цвета.
Спецификации формата файла BMP
Независимые от устройства растровые изображения помогают обмениваться растровыми изображениями между устройствами и приложениями. Из-за постоянного развития этого формата файла информация, содержащаяся в заголовках, может различаться в зависимости от версии Bitmap. Один файл растрового изображения состоит из фиксированных, а также структур переменного размера в определенной последовательности.
Структуры в растровом файле располагаются в следующем порядке:
Структура | Дополнительное | Размер | Цель | ||
---|---|---|---|---|---|
Заголовок файла | NO | 14 | для хранения общей информации о битмаре | . | Для хранения подробной информации о растровом изображении и определения формата пикселей |
Дополнительные битовые маски | Да | 12 или 16 байт | Для определения формата пикселей | ||
Цветовая палитра | Полуоптационные | . | Нет | Переменный размер | Формат пикселей определяется заголовком DIB или дополнительными битовыми масками. |
Gap2 | Да | Переменный размер | Выравнивание структуры | ||
Цветовой профиль ICC | Да | Переменный размер | Для определения цветового профиля для управления цветом |
Windows через GDI API. Заголовок файла не является частью этой структуры данных. Цвет также может состоять из 16-битных записей, которые представляют собой индексы к текущей палитре, на которую ссылаются, вместо явных определений цвета RGB. Давайте посмотрим на некоторые из них подробно, особенно на заголовки.
Заголовок растрового файла похож на другие заголовки файлов, используемые для идентификации файла. Поскольку существуют разные варианты формата файла BMP, первые 2 байта формата файла BMP представляют собой символ «B», а затем символ «M» в кодировке ASCII. Все целочисленные значения хранятся в формате с прямым порядком байтов.
Сметный HEX | Смещение декабрь | Размер | Цель | |||||
---|---|---|---|---|---|---|---|---|
00 | 0 | 2 BYTES | 0 | 2 BYTES | 5 | 0 | 2 BYTES | 9. то же, что BM в ASCII. Возможны следующие значения.* BM – Windows 3.1x, 95, NT, … и т. д. * BA – массив растровых изображений структуры OS/2 * CI – цветной значок структуры OS/2 * CP – указатель цвета константы OS/2 * IC – значок структуры OS/2 * PT – OS/2 Pointer|
02 | 2 | 4 байт | Размер файла BMP в байтах | |||||
06 | 6 | 2 Bytes | ; фактическое значение зависит от приложения, которое создает изображение||||||
08 | 8 | 2 байта | Зарезервировано; фактическое значение зависит от приложения, которое создает изображение | |||||
0A | 10 | 4 байта | Смещение, т. е. начальный адрес, байта, в котором можно найти данные растрового изображения (массив пикселей). |
В этом заголовке представлена подробная информация об изображении. На основе этой информации будет определено приложение, которое будет использоваться для вывода изображения на экран. Все такие заголовки содержат поле DWORD (32-битное) с указанием их размера, чтобы приложение могло легко определить заголовок, используемый в изображении. В основном это связано с тем, что формат DIB претерпел несколько расширений. Ниже приведен заголовок DIB с перечисленными полями.
Цветовая палитра
Цветовая палитра BMP представляет собой массив структур, определяющих значения интенсивности RGB для каждого цвета в цветовой палитре устройства отображения. Каждый пиксель в растровых данных хранит одно значение, используемое в качестве индекса в цветовой палитре. Информация о цвете, хранящаяся в элементе с этим индексом, определяет цвет этого пикселя. Доступность цвета в файле растрового изображения варьируется следующим образом:
- Одно-, 4- и 8-битный — ожидается, что всегда будет содержаться цветовая палитра
- Шестнадцати-, 24- и 32-разрядные файлы — никогда не содержат цветовых палитр
- Шестнадцати- и 32-разрядные файлы BMP — содержат значения маски битовых полей вместо цветовой палитры где размер каждой строки округляется до числа, кратного 4 байтам (32-битное DWORD), путем заполнения. Общее количество байтов, необходимых для хранения пикселей изображения, нельзя рассчитать напрямую, просто подсчитав биты. Поскольку задействовано заполнение, требуется эффект округления размера каждой строки до кратного 4 байтам. Байты заполнения (не обязательно 0) должны добавляться в конец строк, чтобы длина строк была кратна четырем байтам. Когда массив пикселей загружается в память, каждая строка должна начинаться с адреса памяти, кратного 4.
Изображение на самом деле описывается 32-битным представлением массива пикселей в формате DWORD. Обычно пиксели хранятся «снизу вверх», начиная с левого нижнего угла, двигаясь слева направо, а затем построчно снизу вверх изображения. Форматы пикселей и их значения перечислены ниже:
- Формат 1 бит на пиксель (1 бит на пиксель) поддерживает 2 различных цвета (например, черный и белый).
- Формат 2 бита на пиксель (2bpp) поддерживает 4 различных цвета и сохраняет 4 пикселя на 1 байт, причем крайний левый пиксель занимает два старших бита. Каждое значение пикселя представляет собой 2-битный индекс в таблице до 4 цветов.
- Формат 4 бита на пиксель (4 бит на пиксель) поддерживает 16 различных цветов и хранит 2 пикселя на 1 байт, при этом крайний левый пиксель относится к более значимому полубайту. Каждое значение пикселя представляет собой 4-битный индекс в таблице до 16 цветов.
- Формат 8 бит на пиксель (8 бит на пиксель) поддерживает 256 различных цветов и сохраняет 1 пиксель на 1 байт. Каждый байт является индексом в таблице до 256 цветов.
- Формат 16 бит на пиксель (16 бит на пиксель) поддерживает 65 536 различных цветов и сохраняет 1 пиксель на 2-байтовое СЛОВО. Каждое СЛОВО может определять альфа-, красный, зеленый и синий образцы пикселя.
- Формат 24-битных пикселей (24 бита на пиксель) поддерживает 16 777 216 различных цветов и сохраняет значение 1 пикселя на 3 байта. Каждое значение пикселя определяет образцы красного, зеленого и синего пикселя (8.8.8.0.0 в нотации RGBAX). Конкретно в порядке: синий, зеленый и красный (по 8 бит на каждый отсчет).
- Формат 32 бита на пиксель (32 бита на пиксель) поддерживает 4 294 967 296 различных цветов и сохраняет 1 пиксель на 4-байтовое DWORD. Каждое DWORD может определять альфа-, красный, зеленый и синий образцы пикселя.
Ссылки
- Формат метафайла Windows
- Формат файла BMP
Типы растровых изображений — Windows Forms .NET Framework
- Статья
- 6 минут на чтение
Растровое изображение — это массив битов, определяющий цвет каждого пикселя в прямоугольном массиве пикселей. Количество битов, выделенных для отдельного пикселя, определяет количество цветов, которые можно назначить этому пикселю. Например, если каждый пиксель представлен 4 битами, то данному пикселю можно присвоить один из 16 различных цветов (2^4 = 16). 4 = 16 цветов. Каждый цвет в таблице представлен 24-битным числом: 8 бит для красного, 8 бит для зеленого и 8 бит для синего. Числа представлены в шестнадцатеричном формате (с основанием 16): A = 10, B = 11, C = 12, D = 13, E = 14, F = 15,9.0003
Посмотрите на пиксель в строке 3, столбце 5 изображения. Соответствующее число в растровом изображении — 1. Таблица цветов говорит нам, что 1 представляет красный цвет, поэтому пиксель красный. Все записи в верхней строке растрового изображения равны 3. Таблица цветов говорит нам, что 3 представляет синий цвет, поэтому все пиксели в верхней строке изображения синие.
Примечание
Некоторые растровые изображения хранятся в восходящем формате; числа в первой строке растрового изображения соответствуют пикселям в нижней строке изображения.
Растровое изображение, индексы которого хранятся в таблице цветов, называется растровым изображением с индексом палитры. Некоторые растровые изображения не нуждаются в таблице цветов.
Форматы графических файлов
Существует множество стандартных форматов для сохранения растровых изображений в дисковых файлах. GDI+ поддерживает форматы графических файлов, описанные в следующих параграфах.
BMP
BMP — это стандартный формат, используемый Windows для хранения изображений, независимых от устройств и приложений. Количество битов на пиксель (1, 4, 8, 15, 24, 32 или 64) для данного файла BMP указывается в заголовке файла. Файлы BMP с 24 битами на пиксель распространены. Файлы BMP обычно не сжимаются и поэтому плохо подходят для передачи через Интернет.
Формат обмена графикой (GIF)
GIF — это распространенный формат для изображений, которые появляются на веб-страницах. GIF хорошо подходят для линейных рисунков, изображений с блоками сплошного цвета и изображений с четкими границами между цветами. GIF-файлы сжимаются, но в процессе сжатия информация не теряется; распакованный образ точно такой же, как и оригинал. Один цвет в GIF может быть обозначен как прозрачный, так что изображение будет иметь цвет фона любой веб-страницы, на которой оно отображается. Последовательность изображений GIF может быть сохранена в одном файле для создания анимированного GIF. GIF-файлы хранят не более 8 бит на пиксель, поэтому они ограничены 256 цветами.
Объединенная группа экспертов по фотографии (JPEG)
JPEG — это схема сжатия, которая хорошо подходит для естественных сцен, таких как отсканированные фотографии. Некоторая информация теряется в процессе сжатия, но часто эта потеря незаметна человеческому глазу. JPEG хранит 24 бита на пиксель, поэтому они способны отображать более 16 миллионов цветов. JPEG не поддерживает прозрачность или анимацию.
Уровень сжатия изображений JPEG настраивается, но более высокие уровни сжатия (файлы меньшего размера) приводят к большей потере информации. Коэффициент сжатия 20:1 часто создает изображение, которое человеческому глазу трудно отличить от оригинала. На следующем рисунке показано изображение BMP и два изображения JPEG, сжатые из этого изображения BMP. Первый JPEG имеет коэффициент сжатия 4:1, а второй JPEG имеет коэффициент сжатия около 8:1.
Сжатие JPEG плохо работает для линейных рисунков, блоков сплошного цвета и резких границ. На следующем рисунке показан файл BMP, а также два файла JPEG и GIF. JPEG и GIF были сжаты из BMP. Коэффициент сжатия составляет 4:1 для GIF, 4:1 для меньшего JPEG и 8:3 для большего JPEG. Обратите внимание, что GIF сохраняет четкие границы вдоль линий, но JPEG имеет тенденцию размывать границы.
JPEG — это схема сжатия, а не формат файла. Формат обмена файлами JPEG (JFIF) — это формат файлов, обычно используемый для хранения и передачи изображений, сжатых в соответствии со схемой JPEG. Файлы JFIF, отображаемые веб-браузерами, используют расширение .jpg.
Заменяемый файл изображения (EXIF)
EXIF — это формат файла, используемый для фотографий, снятых цифровыми камерами. Файл EXIF содержит изображение, сжатое в соответствии со спецификацией JPEG. Файл EXIF также содержит информацию о фотографии (дата съемки, выдержка, время экспозиции и т. д.) и информацию о камере (производитель, модель и т. д.).
Переносимая сетевая графика (PNG)
Формат PNG сохраняет многие преимущества формата GIF, но также предоставляет возможности, превосходящие возможности GIF. Как и файлы GIF, файлы PNG сжимаются без потери информации. Файлы PNG могут хранить цвета с 8, 24 или 48 битами на пиксель и оттенки серого с 1, 2, 4, 8 или 16 битами на пиксель. Напротив, файлы GIF могут использовать только 1, 2, 4 или 8 бит на пиксель. Файл PNG также может хранить альфа-значение для каждого пикселя, которое определяет степень, в которой цвет этого пикселя смешивается с цветом фона.
PNG превосходит GIF по своей способности постепенно отображать изображение (то есть отображать все более и более приближенные изображения по мере их поступления по сетевому соединению). Файлы PNG могут содержать информацию о коррекции гаммы и цветокоррекции, чтобы изображения можно было точно отображать на различных устройствах отображения.
Формат файлов изображений тегов (TIFF)
TIFF — это гибкий и расширяемый формат, поддерживаемый широким спектром платформ и приложений для обработки изображений. Файлы TIFF могут хранить изображения с произвольным количеством битов на пиксель и могут использовать различные алгоритмы сжатия. Несколько изображений могут храниться в одном многостраничном файле TIFF. Информация, относящаяся к изображению (производитель сканера, хост-компьютер, тип сжатия, ориентация, выборка на пиксель и т.