Bmp windows device independent bitmap это

Windows Bitmap

BMP (от англ. растровых изображений. Изначально формат мог хранить только аппаратно-зависимые растры (англ. Device Dependent Bitmap, DDB ), но с развитием технологий отображения графических данных формат BMP стал преимущественно хранить аппаратно-независимые растры (англ. Device Independent Bitmap, DIB ).

С форматом BMP работает огромное количество программ, так как его поддержка интегрирована в операционные системы Windows и OS/2. Файлы формата BMP могут иметь расширения .bmp, .dib и .rle. Кроме того, данные этого формата включаются в двоичные файлы ресурсов RES и в PE-файлы.

Глубина цвета в данном формате может быть от 1 до 48 бит на пиксель, максимальные размеры изображения 65535×65535 пикселей.

В формате BMP есть поддержка сжатия по алгоритму RLE, однако теперь существуют форматы с более сильным сжатием, и из-за большого объёма BMP редко используется в Интернете, где для сжатия без потерь используются PNG и более старый portable anymap. Для сохранения промежуточных версий растровых изображений редакторы иногда используют собственный формат — например, XCF у Adobe Photoshop.

Содержание

Обзор структуры файла

BMP-файл состоит из четырёх частей:

  1. Заголовок файла (BITMAPFILEHEADER)
  2. Заголовок изображения (BITMAPINFOHEADER, может отсутствовать). BITMAPV4HEADER (Win95, NT4.0) BITMAPV5HEADER (Win98/Me, 2000/XP)
  3. Палитра (может отсутствовать)
  4. Само изображение

Смещение Длина поля Описание поля (что тут находится)

Заголовок файла Смещение Длина поля Описание поля (что тут находится

0 2 Код 4D42h — Буквы ‘BM’ 2 4 Размер файла в байтах 6 2 0 (Резервное поле) 8 2 0 (Резервное поле) 10 4 Смещение, с которого начинается само изображение (растр).

14 4 Размер заголовка BITMAP (в байтах) равно 40 18 4 Ширина изображения в пикселях 22 4 Высота изображения в пикселях 26 2 Число плоскостей, должно быть 1 28 2 Бит/пиксел: 1, 4, 8 или 24 30 4 Тип сжатия 34 4 0 или размер сжатого изображения в байтах. 38 4 Горизонтальное разрешение, пиксел/м 42 4 Вертикальное разрешение, пиксел/м 46 4 Количество используемых цветов 50 4 Количество «важных» цветов. Палитра (Карта цветов для N цветов), если используется 54 4*N Палитра

BITMAPFILEHEADER

Эта структура содержит информацию о типе, размере и представлении данных в файле.

Тип «WORD» должен иметь размер 16 бит, типы «DWORD» и «LONG» — 32 бита, порядок байтов подразумевается little endian.

  • bfType — тип файла, BM.
  • bfSize — размер файла в байтах.
  • bfReserved1 — зарезервировано, содержит ноль.
  • bfReserved2 — содержит ноль или может содержать абсолютное смещение от начала файла до данных; считается как размер BITMAPFILEHEADER плюс размер палитры (если есть) [1]
  • bfOffBits — содержит смещение в байтах от начала структуры BITMAPFILEHEADER до непосредственно битов изображения.

После заголовка файла

BITMAPINFOHEADER [2]

  • biSize — размер структуры в байтах.
  • biWidth — ширина изображения в пикселях. Для Win98/Me и Win2000/XP: если поле biCompression содержит BI_JPEG или BI_PNG, здесь указана ширина распакованного изображения.
  • biHeight — высота изображения в пикселях. Если содержит положительное значение — изображение записано в порядке снизу вверх, нулевой пиксель в нижнем левом углу. Если значение отрицательное — изображение записано сверху вниз, нулевой пиксель в верхнем левом углу изображения. Поле biCompression должно содержать значение BI_RGB или BI_BITFIELDS. Такое изображение не может быть сжато.
  • biPlanes — содержит единицу.
  • biBitCount — указывает количество бит на пиксель. Может принимать следующие значения:

0 — имеет смысл для Win98/Me/2000/XP/. Число бит на пиксель определяет формат JPEG или PNG. 1 — изображение монохромное. Член bmiColors структуры BITMAPINFO содержит два элемента. Каждый бит изображения представляет один пиксель; если бит равен нулю — пиксель имеет цвет первого элемента таблицы bmiColors, иначе — цвет второго. 4 — шестнадцатицветное изображение. Пиксели определяются 4-х битными индексами, каждый байт изображения содержит информацию о двух пикселях — старшие 4 бита для первого, оставшиеся — для второго. 8 — в палитре содержится до 256 цветов, каждый байт изображения хранит индекс в палитре для одного пикселя. 16 — если поле biCompression содержит значение BI_RGB, файл не содержит палитры. Каждые два байта изображения хранят интенсивность красной, зелёной и синей компоненты одного пикселя. При этом старший бит не используется, на каждую компоненту отведено 5 бит: 0RRRRRGGGGGBBBBB. Если поле biCompression содержит значение BI_BITFIELDS, палитра хранит три двухбайтных значения, определяющих маску для каждой из трёх компонент цвета. Каждый пиксель изображения представлен двухбайтным значением, из которого с помощью масок извлекаются цветовые компоненты. Для WinNT/2000/XP — последовательности бит каждой компоненты должны следовать непрерывно, не перекрываясь и не пересекаясь с последовательностями других компонент. Для Win95/98/Me — поддерживаются только следующие маски: 5-5-5, где маска синей компоненты 0х001F, зелёной 0x03E0, красной 0x7C00; и 5-6-5, где маска синей компоненты 0x001F, зелёной 0x07E0, красной 0xF800. 24 — палитра не используется, каждая тройка байт изображения представляет один пиксель, по байту для интенсивности синего, зелёного и красного канала соответственно. 32 — Если поле biCompression содержит значение BI_RGB, изображение не содержит палитры. Каждые четыре байта изображения представляют один пиксель, по байту для интенсивности синего, зелёного и красного канала соответственно. Старший байт каждой четвёрки не используется. Если поле biCompression содержит значение BI_BITFIELDS, в палитре хранятся три четырёхбайтных цветовых маски — для красной, зелёной и синей компоненты. Каждый пиксель изображения представлен четырьмя байтами. WinNT/2000: маски компонент не должны перекрываться или пересекаться. Windows 95/98/Me: система поддерживает только один режим сжатия, полностью аналогичный режиму без компрессии BI_RGB — старший байт каждой четвёрки не используется, следующие три отведены для синего, зелёного и красного канала соответственно.

  • biCompression — указывает тип сжатия для сжатых изображений:
Читайте также:  Linux терминал удалить строку
Значение Идентификатор Компрессия
0 BI_RGB несжатое изображение
1 BI_RLE8 сжатие RLE для 8-битных изображений
2 BI_RLE4 сжатие RLE для 4-битных изображений
3 BI_BITFIELDS изображение не сжато, палитра содержит три 4-байтные маски для красной, зелёной и синей компонент цвета. Используется для 16- и 32-битных изображений
4 BI_JPEG Win98/Me/2000/XP: PNG-сжатие
  • biSizeImage — Указывает размер изображения в байтах. Может содержать ноль для BI_RGB-изображений. Win98/Me/2000/XP: если biCompression содержит BI_JPEG или BI_PNG, biSizeImage указывает размер BI_JPEG или BI_PNG буфера изображения.
  • biXPelsPerMeter — указывает горизонтальное разрешение в пикселях на метр для целевого устройства. Приложение может использовать это значение для выбора из группы ресурсов изображения, наиболее подходящего для текущего устройства.
  • biYPelsPerMeter — указывает вертикальное разрешение в пикселях на метр для целевого устройства.
  • biClrUsed — указывает количество используемых цветовых индексов в палитре. Если значение равно нулю — изображение использует максимально доступное количество индексов, в соответствии со значением biBitCount и методом сжатия, указанным в biCompression.

Если содержит ненулевое значение и biBitCount меньше 16, biClrUsed указывает количество цветов, к которым будет обращаться драйвер устройства или приложение. Если biBitCount больше или равен 16, biClrUsed указывает размер палитры, используемой для оптимизации работы системных палитр. Если biBitCount равен 16 или 32, оптимальная палитра следует сразу после трёх четырёхбайтных маск. В упакованном изображении массив пикселей следует сразу после структуры BITMAPINFO, biClrUsed должен содержать ноль, либо реальный размер палитры.

  • biClrImportant — указывает количество индексов, необходимых для отображения изображения. Если содержит ноль — все индексы одинаково важны.

Примечания: Структура BITMAPINFO объединяет BITMAPINFOHEADER и палитру, предоставляя полное описание размеров и цветов изображения.

Чтобы найти палитру в структуре BITMAPINFO, приложение должно использовать информацию, хранимую в biSize, следующим образом:

BITMAPV4HEADER [3]

Поля от начала структуры и до bV4ClrImportant включительно имеют то же назначение, что и соответствующие поля структуры BITMAPINFOHEADER.

  • bV4RedMask — цветовая маска красной компоненты каждого пикселя, используется только если bV4Compression содержит значение BI_BITFIELDS.
  • bV4GreenMask — цветовая маска зелёной компоненты каждого пикселя, используется только если bV4Compression содержит значение BI_BITFIELDS.
  • bV4BlueMask — цветовая маска синей компоненты каждого пикселя, используется только если bV4Compression содержит значение BI_BITFIELDS.
  • bV4AlphaMask — маска, определяющая компоненту альфа канала.
  • bV4CSType — определяет цветовое пространство изображения.
  • bV4Endpoints — структура LOGCOLORSPACE, указывающая x, y и z координаты трёх цветов, которые соответствуют конечным точкам(endpoints) цветового пространства, определённого для изоражения. Это поле игнорируется, если bV4CSType не содержит значения LCS_CALIBRATED_RGB.
  • bV4GammaRed — кривая тона красной компоненты. Игнорируется, если bV4CSType не содержит значения LCS_CALIBRATED_RGB. Указывается в формате 16^16.
  • bV4GammaGreen — кривая тона зелёной компоненты. Игнорируется, если bV4CSType не содержит значения LCS_CALIBRATED_RGB.
  • bV4GammaBlue — кривая тона синей компоненты. Игнорируется, если bV4CSType не содержит значения LCS_CALIBRATED_RGB.
Читайте также:  Git mac os как пользоваться

BITMAPV5HEADER [4]

Для полей от начала структуры и до bV5GammaBlue включительно будут описаны только отличия от предыдущих версий — BITMAPINFOHEADER и BITMAPV4HEADER.

  • bV5CSType — определяет цветовое пространство изображения, может принимать следующие значения:

LCS_CALIBRATED_RGB LCS_sRGB LCS_WINDOWS_COLOR_SPACE PROFILE_LINKED PROFILE_EMBEDDED

  • bV5Intent — может принимать следующие значения:

LCS_GM_ABS_COLORIMETRIC LCS_GM_BUSINESS LCS_GM_GRAPHICS LCS_GM_IMAGES

  • bV5ProfileData — смещение в байтах от начала структуры к началу данных профиля (имя файла профиля, строка состоящая исключительно из символов кодовой таблицы 1252 и заканчивающаяся нулевым байтом). Игнорируется, если bV5CSType содержит значение, отличное от PROFILE_LINKED и PROFILE_EMBEDDED.
  • bV5ProfileSize — размер данных профиля в байтах.
  • bV5Reserved — зарезервировано. Содержит ноль.

Палитра

Палитра может содержать последовательность четырёхбайтовых полей по числу доступных цветов (256 для 8-битного изображения). Три младшие байта каждого поля определяют интенсивность красной, зелёной и синей компоненты цвета, старший байт не используется. Каждый пиксель изображения описан в таком случае одним байтом, содержащим номер поля палитры, в котором сохранен цвет этого пикселя.

Если пиксель изображения описывается 16-битным числом, палитра может хранить три двухбайтных значения, каждое из которых пределяет маску для извлечения из 16-битного пикселя красной, зелёной и синей компонент цвета.

Файл BMP может не содержать палитры, если в нём хранится несжатое полноцветное изображение.

Данные изображения

Последовательность пикселей, записанных в том или ином виде. Пиксели хранятся построчно, снизу вверх. Каждая строка изображения дополняется нулями до длины, кратной четырём байтам.

В bmp файлах с глубиной цвета 24 бита, байты цвета каждого пиксела хранятся в порядке BGR (Blue,Green,Red)

B bmp файлах с глубиной цвета 32 бита, байты цвета каждого пиксела хранятся в порядке BGRA (Blue,Green,Red,Alpha)

Битность изображения

В зависимости от количества представляемых цветов, на каждую точку отводится от 1 до 48 битов:

  • 1 бит — монохромное изображение (два цвета).
  • 2 бита — 4 возможных цвета (режимы работы EGA).
  • 8 бит (1 байт) — 256 цветов, последний из режимов, поддерживавших индексированные цвета (см. ниже).
  • 16 бит (2 байта) — режим HiColor, 65536 возможных оттенков.
  • 24 бита (3 байта) — выравнивание данных по границе слова имеет значение), вместо него часто используют 32-битное изображение. В режиме TrueColor на каждый из трёх каналов (в режиме 16777216.
  • 32 бита (4 байта) — этот режим практически аналогичен TrueColor, четвёртый байт обычно не используется, или в нём располагается альфа-канал (прозрачность).
  • 48 бит (6 байт) — редко используемый формат с повышенной точностью передачи цвета, поддерживается относительно малым количеством программ и оборудования.

Индексированные цвета

При количестве бит от 1 до 8 на каждый пиксел может использоваться специальный режим индексированных цветов. В этом случае число, соответствующее каждому пикселу указывает не на цвет, а на номер цвета в палитре. Благодаря использованию палитры имеется возможность адаптировать изображение к цветам, присутствующим на изображении. В таком случае изображение ограниченно не заданными цветами, а максимальным количеством одновременно используемых цветов…

Bmp: Windows Device Independent Bitmap

BMP (аппаратно-независимое побитовое изображение Windows) поддерживается лю­быми Windows-совместимыми программами. Структура файла BMP используется Windows для хранения растровых изображений. В этом формате хранятся рисунки фона, пиктограммы и другие растровые изображения Windows. Этот формат сводит к мини­муму вероятность ошибок или неправильной интерпретации растровых данных.

Формат BMP правильно отображает данные независимо от аппаратных и программ­ных устройств (монитора компьютера, видеокарты и драйвера дисплея). Такая незави­симость от устройств обеспечивается применением системных палитр. Однако данный формат имеет и свои недостатки. Только версии формата с 4- и 8-битовым цветом под­даются сжатию (к ним можно применить метод сжатия RLE), следовательно, 24-бито­вые файлы BMP будут очень большими. Кроме того, применение файлов ВМР ограничено платформой Windows.

JPEG (Joint Photographic Experts Group). Формат предназначен для хранения растровых изображений (расширение имени файлаJPG). Применяется в основном для хранения фотографий. При большой степени сжатия на изображении появляются ореолы из вокруг элементов с резкими переходами цвета, поэтому формат не рекомендуют использовать для хранения схем, графиков, логотипов и др.

Читайте также:  C windows forms random

GIF (Graphics Interchange Format). Стандартизирован в 1987 году как средство хранения сжатых изображений с фиксированным (256) количеством цветов (расши­рение имени файла .GIF). Получил популярность в Интернете благодаря высокой степени сжатия без потери качества. Последняя версия форматаGIF89aпозволяет выполнять черес­строчную загрузку изображений и создавать рисунки с прозрачным фоном. Ограни­ченные возможности по количеству цветов обуславливают его применение исклю­чительно в электронных публикациях (схемы, графики, логотипы, рекламные баннеры и другие несложные изображения, имеющие резкие переходы в тонах изображения).

PNG (Portable Network Graphics). Сравнительно новый (1995 год) формат хра­нения изображений для ихпубликации в Интернете (расширение имени файла .PNG). Поддерживаются три типа изображений — цветные с глубиной 8 или 24 бита и черно-белое с градацией 256 оттенков серого. Сжатие информации происходит без потерь качества. Имеет преимущество передGIFформатом в большей глубине цвета. При хранении фотографийPNGформат проигрывает форматуJPEGв размерах файла.

TIFF (Tagget Image File Format). Формат предназначен для хранения растровых изображений высокого качества (расширение имени файлаJIF). Относятся к числу широко распространенных, отличается переносимостью между платформами(IBM PCиAppleMacintosh), обеспечен поддержкой со стороны большинства графических, верстальных и дизайнерских программ. ФорматTIFFсохраняет множество данных изображения в помеченных полях, что и определило его название («Формат файла помеченного изображения»). Каждое поме­ченное поле хранит информацию о растровом рисунке или ссылку на другие поля. Про­грамма, читающая файл, может пропускать неизвестные или ненужные ей поля. Эта многогранность позволяет формату находить применение в различных компьютерных системах. Кроме того, форматTIFFможет сохранять разнообразные дополнительные дан­ные о растровом рисунке, включая: кривую коррекции для изображения с оттенками серого; поля детальной информации об изображении (название программы, автора, дату создания и комментарии); размер изображения и разрешающую способность; деталь­ную информацию о цвете оригинала.

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

Файлы данного формата способны хранить пиксельные данные, сжатые с помощью разнообразных схем, например, кодированием по методу Хаффмана.

PSD (PhotoShop Document). Собственный формат программыAdobPnotoshop(расширение имени файла .PSD), один из наиболее мощных по возможностям хране­ния растровой графической информации. Позволяет запоминать параметры слоев, каналов, степени прозрачности, множества масок. Поддерживаются 48-разрядное кодирование цвета, цветоделение и различные цветовые модели. Основной недо­статок выражен в том, что отсутствие эффективного алгоритма сжатия информации приводит к большому объему файлов.

PCX.Формат появился как формат хранения растровых данных программы PC PaintBrush фирмы Z-Soft и является одним из наиболее распространенных (рас­ширение имени файла .PCX). Отсутствие возможности хранить цветоделенные изображения, недостаточность цветовых моделей и другие ограничения привели к утрате популярности формата. В настоящее время считается устаревшим.

WMF (Windows MetaFile). Формат хранениявекторныхизображений операци­онной системыWindows(расширение имени файла .WMF). По определению под­держивается всеми приложениями этой системы. Однако отсутствие средств для работы со стандартизированными цветовыми палитрами, принятыми в полигра­фии, и другие недостатки ограничивают его применение.

EPS (Encapsulated PostScript). Формат описания каквекторных, так ирастро­выхизображений на языкеPostScriptфирмыAdobe, фактическом стандарте в области допечатных процессов и полиграфии (расширение имени файла .EPS). Так как языкPostScriptявляется универсальным, в файле могут одновременно хра­ниться векторная и растровая графика, шрифты, контуры обтравки (маски), пара­метры калибровки оборудования, цветовые профили. Для отображения на экране векторного содержимого используется форматWMF,а растрового —TIFF.Но экранная копия лишь в общих чертах отображает реальное изображение, что явля­ется существенным недостаткомEPS.Действительное изображение можно уви­деть лишь на выходе выводного устройства, с помощью специальных программ просмотра или после преобразования файла в форматPDFvприложенияхAcrobatReader,AcrobatExchange.

PDF (Portable Document Format). Формат описания документов, разработанный фирмойAdobe(расширение имени файла .PDF). Хотя этот формат в основном пред­назначен для хранения документа целиком, его впечатляющие возможности позво­ляют обеспечить эффективное представление изображений. Формат является аппаратно независимым, поэтому вывод изображений допустим на любых устройствах — от экрана монитора до фотоэкспонирующего устройства. Мощный алгоритм сжатия со средствами управления итоговым разрешением изображения обеспечивает компактность файлов при высоком качестве иллюстраций.

Оцените статью