Что такое формат BMP?

Формат BMP (Bitmap Picture) — это стандартный растровый формат для хранения изображений, изначально разработанный компанией Microsoft для использования в операционной системе Windows. Его основная задача — хранение цифровых изображений в виде массива точек (пикселей) без потери качества. В отличие от более современных форматов, BMP обычно не использует сжатие данных или применяет очень простое сжатие без потерь (RLE), что делает его одним из самых «прямолинейных» и понятных форматов для хранения графики. Если вы хотите глубже разобраться в том, что такое формат как общее понятие в цифровом мире, рекомендуем ознакомиться с отдельной статьей.

История и основные характеристики

Формат был представлен вместе с Windows 3.0 и стал неотъемлемой частью платформы. Файлы BMP имеют расширение .bmp или, реже, .dib (Device-Independent Bitmap — аппаратно-независимый битмап). Ключевые характеристики формата:

  • Растровая природа: Изображение состоит из сетки пикселей, каждый из которых имеет свой цвет.
  • Отсутствие сжатия (чаще всего): Данные пикселей хранятся «как есть», что гарантирует полное сохранение исходного качества, но создает файлы большого размера.
  • Поддержка различных цветовых глубин: BMP может хранить изображения с глубиной цвета от 1 бита (чёрно-белые) до 24 и 32 бит (True Color с альфа-каналом прозрачности).
  • Простая структура: Файл состоит из заголовков и массива данных пикселей, что упрощает его чтение и запись программами.

Как устроен и работает BMP-файл?

Структура BMP довольно проста и логична. Файл условно можно разделить на четыре части:

  1. Заголовок файла (BITMAPFILEHEADER): Содержит общую информацию: сигнатуру (обычно «BM»), размер файла и смещение до начала данных пикселей.
  2. Заголовок информации (BITMAPINFOHEADER): Содержит ключевые параметры изображения: ширину и высоту в пикселях, количество цветовых плоскостей, глубину цвета (бит на пиксель), тип сжатия и размер массива пикселей.
  3. Цветовая палитра (опционально): Для изображений с глубиной цвета 8 бит и менее используется таблица цветов (палитра). Каждый пиксель в таком случае хранит не конкретный цвет, а индекс в этой палитре.
  4. Данные пикселей: Непосредственно массив, описывающий цвет каждого пикселя изображения. Строки пикселей (ряды) обычно записываются снизу вверх, а не сверху вниз, и длина каждой строки выравнивается до границы в 4 байта.
Именно из-за отсутствия сложного сжатия и выравнивания строк BMP-файлы часто имеют значительный размер. Например, несжатое изображение размером 1920x1080 пикселей с глубиной 24 бита займет около 6 мегабайт.

Отличия BMP от других популярных форматов

Чтобы понять место BMP среди других форматов, полезно провести сравнение:

  • BMP vs JPEG: JPEG использует сжатие с потерями для значительного уменьшения размера файла, что приводит к появлению артефактов. BMP хранит данные без потерь, но файлы получаются намного больше. JPEG идеален для фотографий в интернете, BMP — для хранения эталонных изображений или скриншотов, где важна точность каждого пикселя.
  • BMP vs PNG: PNG, как и BMP, поддерживает сжатие без потерь, но делает это гораздо эффективнее (алгоритм Deflate). Кроме того, PNG имеет более продвинутую поддержку прозрачности (альфа-канал). Сегодня PNG практически полностью вытеснил BMP в вебе и приложениях, где нужно качество без потерь.
  • BMP vs GIF: GIF использует палитру (максимум 256 цветов) и поддерживает анимацию и простую прозрачность. BMP же может хранить миллионы цветов, но не поддерживает анимацию.

Практическое применение формата BMP сегодня

Несмотря на архаичность и неэффективность с точки зрения размера, формат BMP до сих пор находит применение в ряде областей:

  • Системные задачи и программирование: Благодаря простой структуре BMP часто используется в качестве входного или выходного формата в низкоуровневых графических библиотеках, встроенных системах, микроконтроллерах и при обучении основам обработки изображений.
  • Хранение эталонных изображений: В некоторых научных, медицинских и инженерных областях, где критически важна точность каждого пикселя и исключены любые искажения, BMP может использоваться как промежуточный или архивный формат.
  • Скриншоты и захват экрана: Некоторые программы захвата экрана по умолчанию сохраняют результат в BMP, чтобы избежать потерь качества перед последующей обработкой.
  • Создание иконок и курсоров в Windows: Хотя для иконок чаще используется формат ICO, он может включать в себя данные в формате BMP.

Однако для повседневного использования — публикации в интернете, отправки по почте, хранения личной фотоколлекции — BMP крайне непрактичен из-за огромных размеров файлов. Его место заняли более эффективные форматы: JPEG для фотографий и PNG для графики с прозрачностью и без потерь.

Читайте также

Источники