Что значит bmp

Что значит bmp

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

Предыстория

Примерно в 1994 году разработчикам понадобился новый формат изображений, для использования в программных продуктах. Критерии были поставлены жесткие. Формат должен был работать с 256-цветной палитрой, обладать вменяемым размером. В скором времени был представлен формат BMP. Это было настоящим прорывом на то время. Он массово использовался практически везде. Даже в компании «Майкрософт», которая его и разработала.


Однако шли года, и данный формат перестал быть востребованным. Появились куда более продвинутые технологии компрессии. При этом качество цвета у новых форматов было куда лучше. Теперь BMP используется только в некоторых программах. Да и то, только в тех, разработчики которых не «заморачивались» на интерфейсе, например, ОС «Виндовс». Файл BMP безнадежно устарел. Но его почему-то все еще используют. А теперь попытаемся понять, что же это за зверь.

Что такое BMP?

BMP — это тип файла для хранения растровых изображений. Только растровых. Векторная графика не для этого формата. Особенностью данного формата является то, что он не использует никакого механизма сжатия. Теоретически, он должен обеспечивать высочайшее качество изображения. Но беда в том, что размер такого изображения будет просто гигантским. Именно поэтому данный формат растрового изображения и потерял популярность. Началось падение BMP с олимпа после появления PNG. Этот формат позволял не только сохранить изображение высокого качества при маленьком размере, но и можно было работать со слоями, что весьма важно в современном мире.

Однако пока еще BMP File существует и используется. Поэтому пользователям важно знать, чем можно открыть такие файлы и как сконвертировать его в более удобные форматы. Вот это сейчас и обсудим. Сразу стоит сказать, что таких программ великое множество. И все они способны адекватно работать с данным форматом, так как он довольно старый. Но вот в конвертации есть свои нюансы, о которых стоит упомянуть.

Чем открыть BMP


На данный момент с этой задачей может справиться более или менее продвинутый просмотрщик графических файлов. Как ни странно, даже стандартный вьювер «Виндовс» может открыть данный формат, хоть и с жуткими тормозами. Но лучше всего с этой задачей справляется FS Image Viewer и ACDSee. Такие продвинутые продукты, как «Фотошоп» и редакторы от «Корел» также способны работать с файлами данного формата. А вообще, все современные просмотрщики способны читать данный формат, так как он довольно-таки старый.

Однако все вышеперечисленное касается только операционных систем семейства «Виндовс». А как открыть файл BMP в «Линукс» или «Мак ОС»? Там есть специализированные программные продукты, поддерживающие данный формат. И их немало. Так что проблем не возникнет. А «Мак ОС» еще и поддерживает «Фотошоп», который и вовсе является всеядным. В довесок к остальным мультимедийным программам.

Конвертирование BMP

Как конвертировать BMP в JPG или какой-либо другой более привычный формат? Все зависит от того, какое качество картинки требуется на выходе. Если потери должны быть минимальными, то лучше использовать для этих целей «Фотошоп» или что-то равнозначное. Только «Фотошоп» позволяет сохранить изображение без потери качества. А если использовать для сохранения форматы PNG или PSD, то можно сохранить еще и слои. Если же качество не имеет значения, то можно использовать любой конвертер. Практически все они поддерживают конвертацию в JPEG, PNG, BMP и другие популярные форматы.


И опять же, выше были перечислены исключительно программы под «Виндовс». В «Линукс» или «Мак ОС» дела с конвертированием обстоят несколько иначе. В системе от Apple есть поддержка «Фотошопа», так что быстро перегнать изображение BMP в другой формат без потери качества не составляет проблемы. А вот в «Линукс» приходится пользоваться разнообразными конвертерами, которые часто не в состоянии обеспечить максимальное качество.

Для чего может использоваться этот формат?

Хоть формат BMP и устарел морально, но он все равно может использоваться в некоторых случаях. Достаточно того факта, что весь интерфейс «Виндовс» основан на данном растровом формате. Почему так? Потому, что использовать BMP очень удобно. Он обладает хорошей цветностью и полным отсутствием компрессии. Также изображения в этом формате можно редактировать какое угодно количество раз. И качество ничуть не пострадает. В отличие от того же JPEG. Как раз этим и объясняется живучесть этого формата. Многие разработчики программ под «Виндовс» также активно используют изображения BMP в своих продуктах.

Еще одна область применения формата — БИОСы компьютеров. Некоторые из них имеют весьма неплохие картинки (они могут включать в себя лого производителя, некоторые элементы интерфейса и прочее). Все они сделаны в формате BMP. Растровые изображения такого плана отлично показывают себя в системах без адекватного графического интерфейса. Потому они и используются в БИОСах.

Размер


Стоит отметить, что хорошая картинка в формате BMP будет «весить» немало. Все дело в том, что данный файловый формат не использует сжатие. Потому и размер не может быть уменьшен. К примеру, качественная фотография с разрешением 1280 на 720 точек будет иметь размер около 300 мегабайт. Такова особенность данного формата.

Внутреннее строение и расширение

Строение файла BMP можно описать так: это однослойное изображение растрового типа с приличной плотностью и хорошей цветопередачей. В этом и заключается главный недостаток формата — он не может использовать дополнительные слои. Потому они был вытеснен в «вебе» более продвинутыми форматами, поддерживающими многослойность.

Заключение

Итак, мы рассмотрели старый, но еще кое-где применяемый формат BMP. Это формат растровых изображений, который может похвастаться отсутствием всякой компрессии и совместимостью практически со всеми программами как просмотрщиками, так и редакторами. Он может применяться в современных программах для обеспечения работы интерфейса. А в операционной системе «Виндовс» он широко используется и по сей день. Конвертировать этот формат в какой-нибудь другой не составляет никакого труда. Для этого имеется огромное количество соответствующего софта. И не только под «Виндовс». В общем, сей формат еще будет жить, несмотря на появление более продвинутых и качественных.


Источник: fb.ru

Что такое форматы изображений бывают и зачем они нужны?

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

Это своеобразный инструмент, материал или метод, с помощью которого можно сохранить на ваш компьютер понравившуюся картинку или перекинуть с фотоаппарата на ПК ваши фото. В общем, это способ кодирования информации.

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

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


Jpeg, png, gif, bmp - чем отличаются расширения Картинки в формате jpeg, gif, png, bmp - отличияГрафические файлы различных форматов - различия

Фотография может быть черно-белой, цветной, цифровой, бумажной, в виде слайда. Художник может сделать ваш портрет красками, карандашом, чернилами, на бумаге, на холсте, на стене. Скульптор может выполнить портрет из гипса, мрамора, дерева, металла…

В общем, вариантом бесчисленное количество. Но любой из них буде являться вашим портретом.

То же самой и с форматами изображений – вариантов множество.

Но их всех можно разделить на две большие группы – растровые и векторные. А нет, есть еще одна группа – смешанные, или комплексные, куда ж без них в современном мире ?

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


Векторные изображения основаны на геометрических фигурах – точках, кривых, кругах, многоугольниках. Векторные изображения можно увеличивать без потери качества. Примеры векторных файлов  – svg, cdr, eps. Но, честно говоря, я не сталкивался с такими форматами.

Комплексные форматы, как следует из названия, обладают признаками и векторных, и растровых изображений. Наиболее известный пример такого формата – файлы pdf. Наверняка каждый сталкивался с ними: многие электронные книжки и документы как раз и хранятся в PDF-формате.

 

Растровые изображения

Наиболее распространённые форматы изображений – jpg (jpeg), gif, png, bmp. Все они относятся к растровой группе.

Растровые изображения при ближайшем рассмотрении состоят из маленьких квадратиков – пикселей. Поэтому, в отличие от векторных, растровые изображения при большом увеличении теряют в качестве.

Вот пример растрового рисунка и его части под увеличением.

  

Качество растровых изображений. В чем разница графических форматов

Видите, как размыт рисунок при увеличении?

Зато  редактировать, хранить и передавать растровые изображения намного проще, чем векторные. Это очень важно для простых пользователей.

Работать с растром можно в таких удобных и известных редакторах, как Adobe Photoshop и Paint.

 

Характеристики растровых изображений


Один из недостатков растровых изображений – хранятся такие файлы в сжатом виде и при их выводе на экран или на печать невозможно восстановить первоначальный вид, в той или иной степени страдает качество. Но часто эти потери даже не заметны, так что не стоит расстраиваться и отказываться от использования растровой графики. Тем более, по большому счеты, альтернативы нет.

Самые распространенные форматы изображений, безусловно, BMP, GIF, PNG, JPEG.

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

К первой группе относятся форматы BMP, GIF, PNG, ко второй – JPEG. Сжатие без потерь основано на удалении избыточной информации, а сжатие с потерями – на отбрасывании информации, которую зрение человека не воспринимает.

 

Источник: blogmonet.ru

Формат файла BMP (сокращенно от BitMaP) — это "родной" формат растровой графики для Windows, поскольку он наиболее близко соответствует внутреннему формату Windows, в котором эта система хранит свои растровые массивы.
от формат поддержива­ется всеми графическими редакторами, работающими под управлением операционной системы Windows. Для имени файла, представленного в BMP-формате, чаще всего используется расширение BMP, хотя некоторые файлы имеют расширение RLE, означающее run length encoding (кодирование длины серий). Расширение RLE имени файла обычно указывает на то, что произведено сжатие растровой информации файла одним из двух способов сжатия RLE, которые допустимы для файлов BMP-формата

Это один из самых простых по структуре графических форматов, содержащий ми­нимальный набор данных для перехода от одномерного массива байтов к двумерному сигналу – изображению. Файл ВМР для черно-белого изображения состоит из трех основных структурных элементов:

— заголовок:

— таблица цветов (ахроматических);

— область данных.

Формат предназначен для представления штриховых итоновых черно-белых ицветных изображений. В файлах BMP информация о цвете каждого пиксела кодируется 1, 4, 8, 16 или 24 бит (бит/пиксел). Числом бит/пиксел, называемым также глубиной представления цвета, определяется максимальное число цветов в изображении. Изображение при глубине 1 бит/пиксел может иметь всего два цвета, а при глубине 24 бит/пиксел — более 16 млн. различных цветов.
я первых трех значений в структуру файла включается таблица цветов, вне зависимости от того, какого типа представленное изображениецветное или в градациях серого. При 24 битах на пиксел таблица цветов отсутствует. При наличии таблицы цветов, каждый байт из области дан­ных указывает на смещение в таблице относительно начальной ячейки с нулевым смещением. На устройство вывода, например видеокарту имонитор, выводится содержимое ячейки таблицы, на которую указывает сигнал из области данных. Некоторые графические программы самостоя­тельно генерируют таблицу цветов и не используют таблицу, записанную в файле ВМР. Это относится, например, к черно-белым изображениям при восьми битах на пиксел, обрабатываемым в программе Photoshop.

Структура файла BMP
Заголовок файла растровой графики (14 байт) Сигнатура файла BMP (2 байт) Размер файла (4 байт) Не используется (2 байт) Не используется (2 байт) Местонахождение данных растрового массива (4 байт)
Информационный заголовок растрового массива (40 байт) Длина этого заголовка (4 байт) Ширина изображения (4 байт) Высота изображения (4 байт) Число цветовых плоскостей (2 байт) Бит/пиксел (2 байт) Метод сжатия (4 байт) Длина растрового массива (4 байт) Горизонтальное разрешение (4 байт) Вертикальное разрешение (4 байт) Число цветов изображения (4 байт) Число основных цветов (4 байт)
Таблица цветов (длина изменяется от 8 до 1024 байт)
Собственно данные растрового массива (длина переменная)

 



На рис.5 представлен файл формата ВМР для черно-белого изо­бражения размером 10 х 10 пиксел. В таблице используется шестнадцатиричная система счисления, более компактная и удобная для записи значений цифровых сигналов. Для сокращения объема экранного изобра­жениячасть файла опущена изаменена горизонтальным пробелом.

Левый столбец данной ниже таблицы – это величина смешения в файле от­носительно начального нулевого значения. В остальной части таблицы расположены байты файла.

Что значит bmp

Рис.5. Структура файла формата BMP черно-белого, 8 бит

 

Начальный байт файла (нулевое смешение) и следующий за ним байт – это ASCII коды знаков «ВМ» латинского алфавита. Аббревиатура «ВМ» — признак данного графического формата. В той же строке, со смешением ОАh. выделена область из четырех байтов, указывающая на­чало области данных в файле. В данном случае это число 0436h. Правила записи байтов в файле аналогичны правилам записи данных для микро­процессоров Intel:

— по младшему адресу или меньшему смещению в массиве записыва­ется младший байт данных.

В строке 0010h находятся две группы по четыре байта. Это области, где указывается ширина и высота изображения в пикселах. В той же строке, со смешением 1Сh есть два байта, которые используются для указания числа бит на каждый пиксел изображения, в данном случае 8 бит на пиксел. В строке 20h со смещением 2Еh начинается группа из четырех байтов, указывающих количество цветов (хроматических или ахроматических) на пиксел.

Следующая группа со смещением 32h указывает коли­чество цветов от начала таблицы кодировки цветов, которые должны быть воспроизведены при ограниченных возможностях устройства вы­вода изображения по сравнению с параметрами файла. Со смещением 36h присутствует группа из четырех байтов, которая является нулевой ячей­кой таблицы кодировки цветов. Для изображения в градациях серого в таблице цветов записаны ахроматические цвета (градации серого цвета). Для изображения в индексированных цветах в таблице цветов записаны хроматические и ахроматические цвета. Каждая ячейка таблицы цветов имеет следующую структуру (в порядке следования байтов от младшего значения смешения к старшему):

— байт синего канала:

— байт зеленого канала:

— байт красного канала:

— нулевой разделительный байт.

Общепринятой основой для представления цвета (хроматического или ахроматического) является трехкомпонентная система базовых цветов КЗС. КЗС – это русскоязычная аббревиатура, указывающая на названия базовых цветов (Красный, Зеленый, Синий), используемых при выводе на экран цветных изображений. Для обозначения трехкомпонентной сис­темы чаще используется англоязычная аббревиатура RGB (Red, Green, Blue). Каждая ячейка таблицы цветов графического, файла черно-белого изображения имеет одинаковые значения цифрового сигнала по трем ба­зовым компонентам. Устройство вывода, отвечающее условиям аддитив­ного синтеза цвета, должно воспроизводить по сигналам каждой ячейки такой таблицы одну из 256-ти градаций серого. Общий объем таблицы кодировки цветов для данного файла составляет 1024 байта, составляю­щие 256 ячеек по четыре байта в каждой, три из которых представляют сигналы RGB, а четвертый – нулевой (резервный).

В любом случае таблица индексированных цветов – это произвольная выборка (от 2 до 256) из 16777216 (224) возможных цветов, в т.ч. 256 ахроматических.

Нулевой разделительный байт выполняет функции резервного и ис­пользуется для кодировки сигнала при переходе кчетырехкомпонентному представлению цвета в системе СМУК. СМУК – это англоязычная аббревиатура, указывающая на названия системы базовых цветов, ис­пользуемых при печати цветных изображений: Cyan, Magenta,Yellow, Black.

 

Что значит bmp

Рис.6. Структура файла формата BMP в режиме индексированных цветов, 8 бит.

В строке 0430h первый байт области данных, смещение ко­торого относительно начала файла указано в заголовке (0436h). Область данных организована по строкам изображения, начиная с байта лево­го нижнего элемента пространственной дискретизации. При отсутствии сжатия каждыйбайт области данных файла с таблицей цветов представ­ляет один, два или восемь элементов изображения. Каждая строка изо­бражения дополняется нулевыми байтами до числа байтов, кратного че­тырем. Файл заканчивается двумя нулевыми байтами.

Для данного варианта изображения (черно-белое, 8 бит на пиксел) ка­ждый байт соответствует одному пикселу изображения. Для штрихового изображения (1 бит на пиксел) биты каждого пиксела распределяются по восьми разрядам байта — первый по счету пиксел группы занимает пози­цию в старшем разряде байта. При кодировке изображения 4-мя битами на пиксел (16 цветов), тетрады также распределяются по две на каждый байт области данных по аналогичному принципу — первый пиксел пары занимает место старшей тетрады в байте.

Кроме варианта с индексированными цветами формат ВМР поддерживает изображения с числом цветов 224. Из файла исключается таблица кодировки цветов. Область данных, имеющая по три байта на каждый пиксел, непосредственно воздействует на устройство вывода. Располо­жение байтов по красному, зеленому исинему каналам аналогично рас­положению в таблице кодировки цветов. Каждая строка изображения дополняется нулевыми байтами до числа, кратного четырем. Файл за­канчивается двумя нулевыми байтами.

Что значит bmp

Рис.7. Структура файла формата BMP в режиме RGB, 24 бит.

В показанной на рис. 7 таблице область данных начинается со строки 030h

Источник: studopedia.su

DIB и DDB

При использовании формата DIB (англ. Device Independent Bitmap, аппаратно-независимый растр) программист может получить доступ ко всем элементам структур, описывающих изображение, при помощи обычного указателя. Но эти данные не используются для непосредственного управления экраном, так как они всегда хранятся в системной памяти, а не в специализированной видеопамяти. Формат пикселя в оперативной памяти может отличаться от того формата, который должен заноситься в видеопамять для индикации точки такого же цвета. Например, в DIB-формате может использоваться 24 бита для задания пикселя, а графический адаптер в этот момент может работать в режиме HiColor с цветовой глубиной 16 бит. При этом ярко-красная точка в аппаратно-независимом формате будет задаваться тремя байтами 0x0000ff, а в видеопамяти — словом 0xF800. При копировании картинки на экран система будет тратить дополнительное время на преобразование кодов цвета из 24-битного формата в формат видеобуфера.

Формат DDB (англ. Device Dependent Bitmap, аппаратно-зависимый растр) всегда содержит цветовые коды, совпадающие с кодами видеобуфера, но храниться он может как в системной, так и в видеопамяти. В обоих случаях он содержит только коды цвета в том формате, который обеспечит пересылку изображения из ОЗУ в видеопамять при помощи простого копирования.[1]

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

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

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

BITMAPFILEHEADER[2]

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

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

  • bfType — тип файла, символы «BM» (в HEX: 0x42 0x4d).
  • bfSize — размер всего файла в байтах.
  • bfReserved1 и bfReserved2 — зарезервированы, должны содержать нули.
  • bfOffBits — содержит смещение в байтах от начала структуры BITMAPFILEHEADER до непосредственно битов изображения.

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

BITMAPINFOHEADER[3]

Наиболее простой вариант заголовка. Приложения для Windows NT3.51 и более ранних могут использовать только эту структуру. Размер 40 байт.

biSize 
Размер данной структуры в байтах. Формат BMP со временем дополнялся и по значению этого поля определяется версия формата.
biWidth 
Ширина изображения в пикселях. Для Win98/Me и Win2000/XP: если поле biCompression содержит BI_JPEG или BI_PNG, здесь указана ширина распакованного изображения.
biHeight 
Высота изображения в пикселях. Если содержит положительное значение — изображение записано в порядке снизу-вверх (нулевой пиксель в нижнем левом углу). Если значение отрицательное — изображение записано сверху-вниз (нулевой пиксель в верхнем левом углу изображения). Поле biCompression должно содержать значение BI_RGB или BI_BITFIELDS. Такое изображение не может быть сжато.
biPlanes 
Количество цветовых плоскостей и в формате BMP содержит единицу.
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 — старший байт каждой четвёрки используется в качестве альфа-канала, следующие три отведены для синего, зелёного и красного канала соответственно: 0xAARRGGBB.
biCompression 
Тип сжатия для сжатых изображений:
Значение Идентификатор Компрессия
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: JPEG-сжатие
5 BI_PNG Win98/Me/2000/XP: PNG-сжатие
6 BI_ALPHABITFIELDS WinCE: изображение не сжато, палитра содержит четыре 4-байтные маски для красной, зелёной, синей и прозрачной (альфа-канал) компонент цвета. Используется для 16- и 32-битных изображений
biSizeImage 
Размер изображения в байтах. Может содержать ноль для BI_RGB-изображений. Win98/Me/2000/XP: если biCompression содержит BI_JPEG или BI_PNG, biSizeImage указывает размер BI_JPEG или BI_PNG буфера изображения.
biXPelsPerMeter 
Горизонтальное разрешение в пикселях на метр для целевого устройства. Приложение может использовать это значение для выбора из группы ресурсов изображения, наиболее подходящего для текущего устройства. Для DPI 96, которое принято в Microsoft для мониторов, оно будет равно 3780 (если считать по формуле (96 / 25,4) * 1000).
biYPelsPerMeter 
Вертикальное разрешение в пикселях на метр для целевого устройства.
biClrUsed 
Количество используемых цветовых индексов в палитре. Если значение равно нулю — изображение использует максимально доступное количество индексов, в соответствии со значением biBitCount и методом сжатия, указанным в biCompression.
Если содержит ненулевое значение и biBitCount меньше 16, biClrUsed указывает количество цветов, к которым будет обращаться драйвер устройства или приложение. Если biBitCount больше или равен 16, biClrUsed размер палитры, используемой для оптимизации работы системных палитр. Если biBitCount равен 16 или 32, оптимальная палитра следует сразу после трёх четырёхбайтных масок.
В упакованном изображении массив пикселей следует сразу после структуры BITMAPINFO, biClrUsed должен содержать ноль, либо реальный размер палитры.
biClrImportant 
Количество элементов палитры, необходимых для отображения изображения. Если содержит ноль — все индексы одинаково важны.

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

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

Растр обычно хранится в вертикально зеркальном виде. Но есть также возможность хранить растр не в вертикально зеркальном виде. Признак того, что растр в BMP не в вертикально зеркальном виде задаётся параметром biHeight.

BITMAPV4HEADER[4]

Расширенная версия описанной выше структуры. Win NT 3.51 и более ранние должны использовать структуру BITMAPINFOHEADER. Win98/Me/2000/XP могут использовать вместо структуры BITMAPV4HEADER структуру BITMAPV5HEADER.

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

  • bV4RedMask — цветовая маска красной компоненты каждого пикселя, используется только если bV4Compression содержит значение BI_BITFIELDS.
  • bV4GreenMask — цветовая маска зелёной компоненты каждого пикселя, используется только если bV4Compression содержит значение BI_BITFIELDS.
  • bV4BlueMask — цветовая маска синей компоненты каждого пикселя, используется только если bV4Compression содержит значение BI_BITFIELDS.
  • bV4AlphaMask — маска, определяющая компоненту альфа-канала.
  • bV4CSType — определяет цветовое пространство изображения.
  • bV4Endpoints — структура CIEXYZTRIPLE, указывающая 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.

BITMAPV5HEADER[5]

Win95/NT 4.0: приложения могут использовать BITMAPV4HEADER. Win NT 3.51 и более ранние должны использовать структуру BITMAPINFOHEADER.

Для полей от начала структуры и до 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 возможных цвета (режимы работы CGA) (2-битовый режим официально не стандартизован, но используется).
  • 4 бита — 16-цветное изображение (режимы работы EGA).
  • 8 бит (1 байт) — 256 цветов, последний из режимов, поддерживавших индексированные цвета (см. ниже).
  • 16 бит (2 байта) — режим HiColor, Для 5-6-5 = 65536 возможных оттенков, для 5-5-5 = 32768 возможных оттенков.
  • 24 бита (3 байта) — TrueColor. В связи с тем, что 3 байта не очень хорошо соотносятся со степенями двойки (особенно при хранении данных в памяти, где выравнивание данных по границе слова имеет значение), вместо него часто используют 32-битное изображение. В режиме TrueColor на каждый из трёх каналов (в режиме RGB) отводится по 1 байту (256 возможных значений), общее количество цветов равно 16777216.
  • 32 бита (4 байта) — этот режим практически аналогичен TrueColor, четвёртый байт обычно не используется, или в нём располагается альфа-канал (прозрачность).
  • 48 бит (6 байт) — редко используемый формат с повышенной точностью передачи цвета (16 бит на канал), поддерживается относительно малым количеством программ и оборудования.

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

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

Пример программы

Следующая программа открывает 24 битный BMP файл в окне XWindow, глубина цвета должна составлять 32 бита, на меньшей цветопередаче не работает, так как это усложняет пример:

Источник: dic.academic.ru


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.