Bmp это формат: Формат bmp что это такое? Где используется и как с ним работать Блог Ивана Кунпана
Формат bmp что это такое? Где используется и как с ним работать Блог Ивана Кунпана
Формат bmp что это такое? В этой статье мы разберем ответ на этот вопрос. Также выясним, где используется данный формат и как с ним работать.
Формат bmp что это такое, описание формата
Здравствуйте, друзья! Во время продвижения ресурсов в Интернете, пользователи используют картинки с разными форматами. Это могут быть Jpeg, Png, Gif и другие форматы файлов, которые являются популярными, и часто используемыми.
Но иногда приходится применять на практике другой формат картинок, который называется bmp. Он не на столько популярен среди пользователей Интернета, как предыдущие форматы изображений. В статье мы восполним пробел и рассмотрим вопрос, формат bmp что это такое? Разберем суть работы с этим форматом.
Итак, bmp – это старый формат картинок, с помощью которого сохраняются только растровые изображения, а векторные нет. С английского языка слово переводится, как «Bitmap Picture» или BMP, что значит формат для хранения растровых изображений. Данный формат для файлов разработала компания Майкрософт (Скрин 1).
Также он включает в себя ряд других расширений формата, например, bmp, dib и.rle. Этот формат картинок до сих пор работает со многими программами, в том числе он используется в операционных системах Windows и macOS.
Далее, мы рассмотрим процесс открытия этого формата различными программами. Также поработаем с ним на практике и попробуем его конвертировать в другие растровые форматы.
к оглавлению ↑
Чем открыть bmp формат
Формат bmp можно открыть в Windows стандартными программами и утилитами:
- Программой Фотошоп. Эта программа способна открыть не только bmp формат, но и другие форматы картинок. Также с ее помощью вы сможете отредактировать картинку и сохранить уже в другом формате.
- Пеинт. Утилита Paint.net встроена во всех системах Windows. Она позволяет открыть и посмотреть bmp картинки простым нажатием на файл.
- FS Image Viewer. Еще одна программа, с помощью которой вы сможете открывать bmp формат. Данную программу пользователи считают простой в использовании и бесплатной.
- ACDSee. Эта утилита может просматривать различные изображения, в том числе и bmp картинки. У этой программы есть дополнительные инструменты, которые могут редактировать картинки и не только.
Конечно, это не все программы, которые способны открывать bmp файлы. Например, на блоге писали о программе XnView, которая выполняет работу по конвертации файлов и их открывает. В Интернете есть много других похожих утилит.
к оглавлению ↑
Как открыть bmp формат
Думаю понятен ответ на вопрос, формат bmp что это такое.
Далее, рассмотрим на практике, как открывается этот формат картинок на компьютере с использованием двух программ:
- Фотошоп;
- Пеинт.
Если у вас установлена программа Фотошоп на компьютере, нажимаете по bmp картинке правой кнопкой мыши, далее выбираете из меню «Открыть с помощью» и например, «Adobe Photoshop cs6» (Скрин 2).
После этого картинка в bmp формате будет открыта в данной программе (Скрин 3).
Открывать такой формат с помощью программы Пеинт еще проще. Для этого нажимаем по картинке правой кнопкой мыши и выбираем кнопку из меню «Просмотр», либо кнопку «Изменить» (Скрин 4).
Далее картинка в bmp формате, будет открыта к просмотру на компьютере.
к оглавлению ↑
Как преобразовать bmp формат в другие форматы
Иногда возникает необходимость преобразовать бмп-формат в популярные форматы. В этом случае используются специальные сервисы-конвертеры:
- co/ru/bmp-jpg/;
- com/ru/convert-format/bmp-to-pdf/;
- online-convert.com/ru/convert-to-ico.
Есть и другие конвертеры в Интернете, которыми вы можете воспользоваться бесплатно.
Итак, чтобы преобразовать в них bmp формат, загружаете туда картинку в данном формате. Далее выбираете на сервисе нужный формат для конвертации. После чего нажимаете кнопку «Начать конвертирование» или «Конвертация».
Когда он преобразуется в другой файл формата, его можно будет скачать на компьютер, например, картинку в формате Jpeg.
к оглавлению ↑
Размер формата bmp
Размеры формата bmp могут быть разными, в зависимости от качества изображения картинок. К примеру, если картинка в формате bmp будет иметь разрешение 1380 на 820 пикселей, то ее размер может быть объемным, например, 250 мегабайт.
С низким качеством изображения и размером, например, 300 на 200 пикселей, bmp картинки будут весить 1-5 мегабайт.
Из этого следует сделать вывод, что картинки в формате bmp, как правило, считаются тяжелыми и много весят.
к оглавлению ↑
Где используется данный формат
Несмотря на то, что пользователи считают БМП формат устаревшим форматом, его используют во многих сферах деятельности.
Например, старые интерфейсы Windows и новые были созданы на основе этого формата. Почему именно он? Потому что его удобно использовать при создании картинок, которые не теряют качества после их изменений.
Также он может использоваться в Фотошопе, при редактировании картинки. Люди загружают подобные изображения в социальные сети, на свои сайты в Интернете.
Компания Майкрософт создала данный формат, который использует его во время разработок своих продуктов.
к оглавлению ↑
Заключение
В статье мы ответили на вопрос, формат bmp что это такое? Рассмотрели специальные программы, с помощью которых можно открывать и просматривать bmp картинки и не только.
Конечно, лучше использовать современные форматы картинок, поскольку они многослойные и способны без технических проблем загрузится на любой сайт в Интернете и не только. Вместе с тем, они имеют много возможностей для редактирования изображений, у них небольшой объем файла.
Спасибо за внимание!
С уважением, Иван Кунпан.
Просмотров: 3505
Формат .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. Это формат растровых изображений, который может похвастаться отсутствием всякой компрессии и совместимостью практически со всеми программами как просмотрщиками, так и редакторами. Он может применяться в современных программах для обеспечения работы интерфейса. А в операционной системе «Виндовс» он широко используется и по сей день. Конвертировать этот формат в какой-нибудь другой не составляет никакого труда. Для этого имеется огромное количество соответствующего софта. И не только под «Виндовс». В общем, сей формат еще будет жить, несмотря на появление более продвинутых и качественных.
BMP — это… Что такое BMP?
BMP (от англ. Bitmap Picture) — формат хранения растровых изображений, разработанный компанией Microsoft.
С форматом BMP работает огромное количество программ, так как его поддержка интегрирована в операционные системы Windows и OS/2. Файлы формата BMP могут иметь расширения .bmp, .dib и .rle. Кроме того, данные этого формата включаются в двоичные файлы ресурсов RES и в PE-файлы.
Компания Microsoft так же разработала для своих нужд форматы ICO и CUR, которые имеют похожую на BMP структуру. Кроме этого, структуры из этого формата используются некоторыми WinAPI-функциями подсистемы GDI.
Глубина цвета в данном формате может быть 1, 2[источник не указан 106 дней], 4, 8, 16, 24, 32, 48 бит на пиксель, но глубина 2 бита на пиксель официально не поддерживается. При этом для глубины цвета меньше 16 бит используется палитра с полноцветными компонентами глубиной 24 бита.
В формате BMP изображения могут храниться как есть или же с применением некоторых распространённых алгоритмов сжатия. В частности, формат BMP поддерживает RLE-сжатие без потери качества, а современные операционные системы и программное обеспечение позволяют использовать JPEG и PNG (эти форматы встраиваются в BMP как в контейнер).
DIB и DDB
При использовании формата DIB (англ. Device Independent Bitmap, аппаратно-независимый растр) программист может получить доступ ко всем элементам структур, описывающих изображение, при помощи обычного указателя. Но эти данные не используются для непосредственного управления экраном, так как они всегда хранятся в системной памяти, а не в специализированной видеопамяти. Формат пикселя в оперативной памяти может отличаться от того формата, который должен заноситься в видеопамять для индикации точки такого же цвета. Например, в DIB-формате может использоваться 24 бита для задания пикселя, а графический адаптер в этот момент может работать в режиме HiColor с цветовой глубиной 16 бит. При этом ярко-красная точка в аппаратно-независимом формате будет задаваться тремя байтами 0x0000ff, а в видеопамяти — словом 0xF800. При копировании картинки на экран система будет тратить дополнительное время на преобразование кодов цвета из 24-битного формата в формат видеобуфера.
Формат DDB (англ. Device Dependent Bitmap, аппаратно-зависимый растр) всегда содержит цветовые коды, совпадающие с кодами видеобуфера, но храниться он может как в системной, так и в видеопамяти. В обоих случаях он содержит только коды цвета в том формате, который обеспечит пересылку изображения из ОЗУ в видеопамять при помощи простого копирования.[1]
Обзор структуры файла
BMP-файл состоит из четырёх частей:
- Заголовок файла (BITMAPFILEHEADER)
- Заголовок изображения (BITMAPINFOHEADER, может отсутствовать). BITMAPV4HEADER (Win95, NT4.0) BITMAPV5HEADER (Win98/Me, 2000/XP)
- Палитра (может отсутствовать)
- Само изображение
Эта структура содержит информацию о типе, размере и представлении данных в файле. Размер 14 байт.
typedef struct tagBITMAPFILEHEADER { WORD bfType; // смещение 0 байт от начала файла DWORD bfSize; // смещение 2 байта от начала файла, длина 4 байта WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; // смещение 10 байт от начала файла, длина 4 байта } BITMAPFILEHEADER, *PBITMAPFILEHEADER;
Тип WORD должен иметь размер 16 бит, типы DWORD и LONG — 32 бита, тип LONG — знаковый, порядок байтов подразумевается little endian.
- bfType — тип файла, символы «BM» (в HEX: 0x42 0x4d).
- bfSize — размер всего файла в байтах.
- bfReserved1 и bfReserved2 — зарезервированы, должны содержать нули.
- bfOffBits — содержит смещение в байтах от начала структуры BITMAPFILEHEADER до непосредственно битов изображения.
После заголовка файла
Наиболее простой вариант заголовка. Приложения для Windows NT3.51 и более ранних могут использовать только эту структуру. Размер 40 байт.
typedef struct tagBITMAPINFOHEADER{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER, *PBITMAPINFOHEADER;
- 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, следующим образом:
pColor = ((LPSTR)pBitmapInfo + (WORD)(pBitmapInfo->bmiHeader.biSize));
Растр обычно хранится в вертикально зеркальном виде. Но есть также возможность хранить растр не в вертикально зеркальном виде. Признак того, что растр в BMP не в вертикально зеркальном виде задаётся параметром biHeight.
Расширенная версия описанной выше структуры. Win NT 3.51 и более ранние должны использовать структуру BITMAPINFOHEADER. Win98/Me/2000/XP могут использовать вместо структуры BITMAPV4HEADER структуру BITMAPV5HEADER.
typedef struct { DWORD bV4Size; LONG bV4Width; LONG bV4Height; WORD bV4Planes; WORD bV4BitCount; DWORD bV4V4Compression; DWORD bV4SizeImage; LONG bV4XPelsPerMeter; LONG bV4YPelsPerMeter; DWORD bV4ClrUsed; DWORD bV4ClrImportant; DWORD bV4RedMask; DWORD bV4GreenMask; DWORD bV4BlueMask; DWORD bV4AlphaMask; DWORD bV4CSType; CIEXYZTRIPLE bV4Endpoints; DWORD bV4GammaRed; DWORD bV4GammaGreen; DWORD bV4GammaBlue; } BITMAPV4HEADER, *PBITMAPV4HEADER;
Поля от начала структуры и до 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.
Win95/NT 4.0: приложения могут использовать BITMAPV4HEADER. Win NT 3.51 и более ранние должны использовать структуру BITMAPINFOHEADER.
typedef struct { DWORD bV5Size; LONG bV5Width; LONG bV5Height; WORD bV5Planes; WORD bV5BitCount; DWORD bV5Compression; DWORD bV5SizeImage; LONG bV5XPelsPerMeter; LONG bV5YPelsPerMeter; DWORD bV5ClrUsed; DWORD bV5ClrImportant; DWORD bV5RedMask; DWORD bV5GreenMask; DWORD bV5BlueMask; DWORD bV5AlphaMask; DWORD bV5CSType; CIEXYZTRIPLE bV5Endpoints; DWORD bV5GammaRed; DWORD bV5GammaGreen; DWORD bV5GammaBlue; DWORD bV5Intent; DWORD bV5ProfileData; DWORD bV5ProfileSize; DWORD bV5Reserved; } BITMAPV5HEADER, *PBITMAPV5HEADER;
Для полей от начала структуры и до bV5GammaBlue включительно будут описаны только отличия от предыдущих версий — BITMAPINFOHEADER и BITMAPV4HEADER.
- 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 бита, на меньшей цветопередаче не работает, так как это усложняет пример:
/* Компилируется строкой: cc -o xtest xtest.c -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lm */ #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <X11/keysym.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <math.h> #include "bitmap.h" /* Здесь определения заголовков BMP как было описано выше в этой статье */ static XImage *CreateImageFromBuffer(Display*, unsigned char *, int, int); main(int argc, char *argv[]) { Display *dis; Window win;/* Наше окно */ XEvent event;/* События */ GC gc;/* Графический контекст */ XImage *image; int n, width, height, fd, size; unsigned char *data; BITMAPFILEHEADER bmp; BITMAPINFOHEADER inf; char* buf; if (argc < 2) { perror("use: xtest file.bmp\n"); exit(1); } if ((fd = open(argv[1], O_RDONLY)) == -1) { printf("Error open bitmap\n"); exit(1); } read(fd, &bmp, sizeof(BITMAPFILEHEADER)); read(fd, &inf,sizeof(BITMAPINFOHEADER)); width = inf.biWidth; height = inf.biHeight; if ((dis = XOpenDisplay(getenv("DISPLAY"))) == NULL) { printf("Can't connect X server: %s\n", strerror(errno)); exit(1); } win = XCreateSimpleWindow(dis, RootWindow(dis, DefaultScreen(dis)), 0, 0, width, height, 5, BlackPixel(dis, DefaultScreen(dis)), WhitePixel(dis, DefaultScreen(dis))); XSetStandardProperties(dis, win, argv[1], argv[0], None, argv, argc, NULL); gc = DefaultGC(dis, DefaultScreen(dis)); /* Иногда в структуре это место не заполнено */ if(inf.biSizeImage == 0) { /* Вычислим размер */ size = width * 3 + width % 4; size = size * height; } else { size = inf.biSizeImage; } buf = malloc(size); if(buf == NULL) { perror("malloc"); exit(1); } printf("size = %d байтов выделено\n", size); /* Сместимся на начало самого изображения */ lseek(fd, bmp.bfOffBits, SEEK_SET); /* Читаем в буфер */ n = read(fd, buf, size); printf("size = %d байт прочитано\n", n); image = CreateImageFromBuffer(dis, buf, width, height); /* Удалим буфер - он нам больше не нужен */ free(buf); XMapWindow(dis, win); XSelectInput(dis, win, ExposureMask | KeyPressMask); while (1) { XNextEvent(dis, &event); if (event.xany.window == win) { switch (event.type) { case Expose: XPutImage(dis, win, gc, image, 0, 0, 0, 0, image->width, image->height); break; case KeyPress: if (XLookupKeysym(&event.xkey, 0) == XK_q) { XDestroyImage(image); XCloseDisplay(dis); close(fd); exit(EXIT_SUCCESS); } break; default: break; } } } } /* Создает Ximage из файла BMP, так как изображение BMP хранится первернутым * и зеркальным-в цикле это исправляется */ XImage *CreateImageFromBuffer(Display * dis, unsigned char *buf, int width, int height) { int depth, screen; XImage *img = NULL; int i, j; int numBmpBytes; size_t numImgBytes; int32_t *imgBuf; int ind = 0; int line; int temp; int ih, iw; /* Номера строки и столбца для отражения */ int new_ind; /* Новый индекс */ screen = DefaultScreen(dis); depth = DefaultDepth(dis, screen); temp = width * 3; line = temp + width % 4; /* Длина строки с учетом выравнивания */ numImgBytes = (4 * (width * height)); imgBuf = malloc(numImgBytes); /* Размер, отведенный на BMP в файле с учетом выравнивания */ numBmpBytes = line * height; for (i = 0; i < numBmpBytes; i++) { unsigned int r, g, b; /* Пропускаем padding */ if (i >= temp && (i % line) >= temp) continue; b = buf[i]; i++; g = buf[i]; i++; r = buf[i]; /* Вычисляем новый индекс для отражения по вертикали */ iw = ind % width; ih = ind / width; new_ind = iw + (height - ih - 1) * width; imgBuf[new_ind] = (r | g << 8 | b << 16) << 8; ind++; } img = XCreateImage(dis, CopyFromParent, depth, ZPixmap, 0, (char *) imgBuf, width, height, 32, 0); XInitImage(img); /* Порядок битов и байтов на PC должен быть таким */ img->byte_order = MSBFirst; img->bitmap_bit_order = MSBFirst; return img; }
Примечания
Ссылки
Чем открыть BMP файл
BMP является популярным форматом изображений без сжатия данных. Рассмотрим, при помощи каких программ можно просмотреть картинки с этим расширением.
Программы для просмотра BMP
Наверное, уже многие догадались, что, так как формат BMP служит для отображения картинок, то просмотреть содержимое этих файлов можно при помощи просмотрщиков изображений и графических редакторов. Кроме того, с данной задачей могут справиться некоторые другие приложения, например браузеры и универсальные просмотрщики. Далее мы рассмотрим алгоритм открытия файлов BMP при помощи конкретного софта.
Способ 1: FastStone Image Viewer
Начнем рассмотрение с популярного просмотрщика картинок FastStone Viewer.
- Откройте программу FastStone. В меню кликните «Файл» и далее переходите по «Открыть».
- Запускается окошко открытия. Переместитесь в нем туда, где помещена картинка BMP. Выделите файл данного изображения и жмите «Открыть».
- Выбранное изображение будет открыто в области для предпросмотра в нижнем левом углу окна. В правой его части будет показано содержимое директории, в которой находится целевая картинка. Для полноэкранного просмотра щелкните по файлу, отображаемому через интерфейс программы в каталоге его расположения.
- Картинка BMP открыта в программе FastStone Viewer на полный экран.
Способ 2: IrfanView
Теперь рассмотрим процесс открытия BMP в другом популярном просмотрщике изображений IrfanView.
- Запустите IrfanView. Щелкайте «Файл» и выбирайте «Открыть».
- Запущено окно открытия. Переместитесь в нем в директорию размещения картинки. Выделите ее и нажимайте «Открыть».
- Рисунок открыт в программе IrfanView.
Способ 3: XnView
Следующим просмотрщиком изображений, действия в котором по открытию файла BMP будет рассмотрены, является XnView.
- Активируйте XnView. Щелкайте «Файл» и выберите «Открыть».
- Запускается инструмент открытия. Войдите в каталог нахождения картинки. Выделив элемент, нажимайте «Открыть».
- Изображение открыто в новой вкладке программы.
Способ 4: Adobe Photoshop
Теперь перейдем к описанию алгоритма действий по решению описываемой задачи в графических редакторах, начав с популярного приложения Photoshop.
- Запустите Фотошоп. Для запуска окна открытия применяйте привычный переход по пунктам меню «Файл» и «Открыть».
- Окно открытия будет запущено. Войдите в папку размещения BMP. Выделив его, применяйте «Открыть».
- Появится окошко, сообщающее об отсутствии внедренного цветового профиля. Можно вообще его проигнорировать, оставив радиокнопку в позиции «Оставить без изменений», и нажать «OK».
- Изображение BMP открыто в Adobe Photoshop.
Главный недостаток данного способа заключается в том, что приложение Фотошоп платное.
Способ 5: Gimp
Другим графическим редактором, который умеет отображать BMP, является программа Gimp.
- Запустите Гимп. Жмите «Файл», а далее «Открыть».
- Запускается окошко поиска объекта. С помощью его левого меню выберите диск, содержащий BMP. Затем переместитесь в нужную папку. Отметив рисунок, применяйте «Открыть».
- Картинка отображена в оболочке Гимп.
В сравнении с предыдущим способом, этот выигрывает в том, что приложение Gimp не требует оплаты за его использование.
Способ 6: OpenOffice
С поставленной задачей успешно справляется также графический редактор Draw, который входит в бесплатный пакет OpenOffice.
- Запустите OpenOffice. Жмите «Открыть» в основном окне программы.
- Окошко поиска появилось. Найдите в нем месторасположение BMP, выделите данный файл и жмите «Открыть».
- Графическое содержимое файла отобразится в оболочке Draw.
Способ 7: Google Chrome
Открывать BMP умеют не только графические редакторы и просмотрщики изображений, но и целый ряд браузеров, например Google Chrome.
- Запустите Гугл Хром. Так как у данного браузера отсутствуют элементы управления, с помощью которых можно запустить окно открытия, то будем действовать, используя «горячие» клавиши. Примените Ctrl+O.
- Окошко открытия появилось. Зайдите в папку, содержащую рисунок. Выделив его, применяйте «Открыть».
- Картинка отобразится в окне браузера.
Способ 8: Universal Viewer
Ещё одной группой программ, умеющих работать с BMP, являются универсальные просмотрщики, к таковым относится и приложение Universal Viewer.
- Запустите Юниверсал Вьювер. Как обычно, переходите по элементам управления программой «Файл» и «Открыть».
- Запускается окошко поиска файла. Зайдите в нем в месторасположение BMP. Выделив объект, применяйте «Открыть».
- Изображение отобразится в оболочке просмотрщика.
Способ 9: Paint
Выше были перечислены способы открытия BMP при помощи сторонних инсталлированных программ, но у Windows есть собственный графический редактор – Paint.
- Запустите Паинт. В большинстве версий Виндовс это можно сделать в папке «Стандартные» в разделе программ меню «Пуск».
- После запуска приложения щелкайте по пиктограмме в меню, расположенной слева от раздела «Главная».
- В появившемся списке выбирайте «Открыть».
- Окно поиска изображения запущено. Отыщите месторасположение картинки. Выделив её, применяйте «Открыть».
- Рисунок отобразится в оболочке встроенного графического редактора Виндовс.
Способ 10: Средство просмотра фотографий Windows
У Виндовс также есть встроенное средство только для просмотра изображений, с помощью которого можно запустить BMP. Рассмотрим, как это сделать на примере ОС Windows 7.
- Проблема состоит в том, что запустить окно данного приложения без открытия самого изображения невозможно. Поэтому алгоритм наших действий будет отличаться от тех манипуляций, которые были проведены с предыдущими программами. Откройте «Проводник» в папке, где находится BMP. Щелкните по объекту правой кнопкой мыши. В появившемся перечне выберите «Открыть с помощью». Далее переходите по пункту «Просмотр фотографий Windows».
- Изображение отобразится с помощью встроенного средства Виндовс.
Если у вас на компьютере не установлено никакого стороннего ПО для просмотра картинок, то запустить BMP с помощью встроенного средства для просмотра фотографий можно просто дважды кликнув левой кнопкой мышки по файлу рисунка в «Проводнике».
Конечно, средство для просмотра фотографий Windows уступает по функционалу другим просмотрщикам, но зато его не требуется дополнительно инсталлировать, а тех возможностей по просмотру, которые предоставляет данный инструмент, большинству пользователей хватает для того, чтобы посмотреть содержимое объекта BMP.
Как видим, существует довольно большой перечень программ, способных открывать изображения BMP. И это далеко не все из них, а только самые популярные. Выбор конкретного приложения зависит от личных предпочтений юзера, а также от поставленных целей. Если нужно просто посмотреть рисунок или фото, то лучше использовать просмотрщики картинок, а для редактирования применяйте редакторы изображений. Кроме того, как альтернативу можно использовать для просмотра даже браузеры. Если пользователь не желает устанавливать дополнительное ПО на компьютер для работы с BMP, то может воспользоваться встроенным программным обеспечением Виндовс для просмотра и редактирования изображений.
Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ
Расширение файла BMP. Чем открыть BMP?
Расширение BMP
Чем открыть файл BMP
В Windows: Adobe Photoshop CS6, Adobe Photoshop Elements 11, Adobe Fireworks, Adobe Illustrator CS6, Corel PaintShop Pro X5, CorelDRAW Graphics Suite X6, ACD Systems Canvas 14, ACDSee Photo Manager 14, Microsoft Windows Photos, Microsoft Windows Photo Viewer, Nuance PaperPort 14, Nuance OmniPage 18, Roxio Creator NXT Pro, Laughingbird The Logo Creator, Microsoft Expression Design, Paint.NET, PhotoOnWeb, IrfanView, FastPictureViewer Professional, FastStone Image Viewer, Windows Live Photo Gallery, Artweaver, Ability Photopaint, Easy-PhotoPrint EX, GIMP
В Mac OS: Apple Preview, ACDSee Pro для Mac, Adobe Fireworks для Mac, Adobe Photoshop CS6, Adobe Photoshop Elements 11, Adobe Illustrator CS6, Nuance OmniPage Pro X, Roxio Toast 11, Laughingbird The Logo Creator, любая другая программа для просмотра изображений, GIMP
В Linux: GIMP
Описание расширения BMP
Популярность:
Раздел: Растровая графика
Разработчик: Microsoft
Расширение BMP обычно используется для хранения растровых изображений. .BMP – это стандартный, не сжатый битовый графический формат, используемый в Windows. BMP файл хранить графику в формате, который называется аппаратно-независимый растр (DIB от англ. Device Independent Bitmap). Файл .BMP состоит из заголовка файла (растровый идентификатор, размер файла, ширина, высота, варианты цвета, и растровые данные начальной точки), заголовка изображения (может отсутствовать), палитры (может отсутствовать) и самого изображения.
Битмапы, которые также называются растровыми изображениями, используют сетку (битовую карту или растровую) малых квадратов, которые известны, как пиксели, для представления изображений. Для каждого пикселя отводится определенное место и значение цвета. Файлы BMP могут содержать различные уровни глубины цвета на пиксель, в зависимости от количества битов на пиксель, указанной в заголовке файла. Они также могут храниться с использованием оттенков серого цветов.
MIME тип: image/bmp, image/x-bmp, image/x-bitmap, image/x-xbitmap, image/x-win-bitmap, image/x-windows-bmp, image/ms-bmp, image/x-ms-bmp, application/bmp, application/x-bmp, application/x-win-bitmap, application/preview
HEX код: 42 4D
ASCII код: BM
Другие программы, связанные с расширением BMP
- Изображение Award от Phoenix Technologies LTD
Программа Award BIOS (AWBM BIOS Bitmap) имеет возможность отображать логотип загрузки в полный экран вместо обычного экрана POST. Сам логотип встроен в изображение BIOS и, хотя у имени файла расширение BMP, это не файл BMP. Упрощенно формат называют AWBM (от AWBM Tools). Относится к разделу Растровая графика.
HEX код: 41 57 42 4D
Популярность:
Чем открыть BMP файл
BMP – это один из самый популярных форматов изображений, не использующих сжатия данных. В статье мы узнаем, при помощи каких утилит можно открыть данный формат.
Чем открыть этот формат
Данный формат поддерживают множество приложений, как от сторонних разработчиков, так и от разработчиков Microsoft.
Вариант 1: FastStone Image Viewer
Это довольно известная утилита, позволяющая просматривать изображения.
- Открываем утилиту. Нажимаем на «Файл», а затем на «Открыть».
- Появляется новое окно, в котором необходимо выбрать нужный BMP-файл и щёлкнуть на «Открыть».
- В левом нижнем углу находится область предпросмотра, в которой располагается выбранное изображение. Содержимое директории можно отыскать в правой части экрана. Для того чтобы открыть изображение на полный экран нужно кликнуть по файлу в каталоге расположения. Готово!
Вариант 2: IrfanView
- Запускаем утилиту. Кликаем на «Файл», а затем на «Открыть».
- В появившемся окне открытия сначала нужно переместиться в директорию с нужной картинкой, а затем выбрать ее нажав на «Открыть». Готово!
Вариант 3: XnView
- Включаем программу и нажимаем на «Файл», а затем на «Открыть».
- В новом окне находим нужный файл с изображением и нажимаем на кнопку «Открыть».
- Изображение открылось в новом окошке самой утилиты. Готово!
Вариант 4: Adobe Photoshop
Рассмотрим, как открыть данный формат в растровом графическом редакторе Фотошоп.
- Заходим в Фотошоп и стандартно нажимаем «Файл» – «Открыть».
- Отобразилось окно открытия. Находим нужное BMP-изображение и щёлкаем на «Открыть».
- Появляется окно с информацией о том, что отсутствует внедренный цветовой профиль. Не обращаем на это внимание, ставим флажок на позицию «Оставить без изменений» и кликаем на кнопку «ОК». Готово! Изображение открылось.
Вариант 5: Gimp
- Заходим в программу и идем по следующему пути: «Файл» – «Открыть».
- Находим необходимый фал и нажимаем на «Открыть».
- Готово! Изображение открылось в самой программе.
Данный вариант намного проще предыдущего, так как Гимп, в отличии от Фотошопа, является бесплатным графическим редактором.
Вариант 6: OpenOffice
- Запускаем бесплатный пакет OpenOffice. В меню программы нажимаем на кнопку «Открыть…».
- На экране появилось специальное окно поиска. Находим через него нужный файл с изображением, выбираем его и кликаем на кнопку «Открыть».
- Готово! Изображение открыто.
Вариант 7: Google Chrome
BMP-формат, также открывается различными браузерами.
- Заходим в Google Chrome. Зажимаем сочетание клавиш Ctrl+O.
- Появляется окно открытия, через которое находим изображение и кликаем на «Открыть».
- Готово! Рисунок появился в окошке самого браузера.
Вариант 8: Universal Viewer
- Запускаем универсальный просмотрщик изображений, а затем стандартно идем по пути: «Файл» – «Открыть».
- Через окно поиска находим нужное изображение в данном формате и кликаем на кнопку «Открыть».
- Рисунок открылся.
Вариант 9: Paint
Стоит отметить, что изображение в формате BMP можно открыть и стандартными средствами операционной системы.
- Открываем «Пуск», переходим в «Стандартные», а затем заходим в Paint.
- Нажимаем на иконку, находящуюся левее кнопки «Главная».
- Кликаем на кнопку «Открыть».
- В новом окне находим файл с нужным изображением и кликаем на «Открыть».
- Картинка появилась в окне графического редактора. Готово!
Вариант 10: Средство просмотра фотографий Windows
- Заходим в папку с BMP-изображением и открываем «Проводник». Кликаем ПКМ по объекту и в появившемся меню выбираем «Открыть с помощью».
- Переходим на элемент «Просмотр фотографий Windows».
- Изображение появилось на экране. Готово!
Теперь Вы знаете огромное количество способов, при помощи которых можно открыть изображение BMP-формата.
Глава 5. — BMP-файлы
Глава 5. — BMP-файлы
BMP-файлы
Теперь мы знаем, как получить прямой доступ к поверхности и что делать с ее памятью, чтобы изменить значения отдельных пикселей. Давайте используем полученные знания на практике. В этой главе мы напишем приложение DirectDraw для просмотра графических файлов формата BMP. Но перед тем как браться за такую программу, необходимо научиться загружать BMP-файлы.
Формат BMP-файлов
BMP — стандартный формат графических файлов Windows. Подавляющее большинство BMP-файлов хранится без сжатия, что облегчает работу с ними. Даже в сжатых BMP-файлах нет ничего особенно сложного, но мы ограничимся файлами без сжатия.
BMP-файлы состоят из трех основных частей:
- заголовок;
- палитра;
- графические данные (значения пикселей).
Заголовок содержит информацию о файле и находящемся в нем графическом изображении. Здесь хранятся параметры изображения (ширина, высота, глубина пикселей), а также количество цветов в нем.
Палитра присутствует только в BMP-файлах, содержащих палитровые изображения (с глубиной пикселей 8 бит и менее). К 8-битным изображениям прикладывается палитра, состоящая из не более чем 256 элементов.
Графические данные — это и есть само изображение. Формат этих данных зависит от глубины пикселей. Хотя BMP-файлы делятся на несколько типов, мы ограничимся 8-битными и 24-битными изображениями. 8-битные BMP-файлы будут использоваться для работы с 8-битными поверхностями, а 24-битные — для беспалитровых поверхностей. Хотя, по слухам, в природе существуют 16-битные и 32-битные BMP-файлы, они встречаются очень редко — например, мне таковые ни разу не попадались. Впрочем, это не имеет особого значения, так как 24-битную графику можно легко преобразовать в 16- или 32-битный формат.
Структура заголовка
Данные заголовка BMP-файла хранятся в двух структурах: BITMAPFILEHEADER и BITMAPINFOHEADER. Структура BITMAPFILEHEADER присутствует в начале любого BMP-файла и содержит информацию о самом файле. Для нас в этой структуре представляет интерес лишь одно поле — bfType, сигнатура BMP-файла (информацию об остальных полях можно найти в справочной системе Visual C++). В BMP-файлах это поле содержит буквы BM (обе буквы — прописные). По содержимому этого поля мы будем убеждаться в том, что выбранные файлы действительно имеют формат BMP.
Структура BITMAPINFOHEADER содержит информацию об изображении, хранящемся в BMP-файле. Эта структура объявляется так:
typedef struct tagBITMAPINFOHEADER { DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
Первое поле, biSize, определяет размер структуры BITMAPINFOHEADER в байтах. Если ваша программа создает BMP-файл, это поле заполняется тривиально — достаточно определить размер структуры функцией sizeof. Однако при чтении BMP-файла по содержимому этого поля приходится рассчитывать позицию файла, на которой структура заголовка кончается. Эта мера обеспечивает обратную совместимость, благодаря ей Microsoft в будущем сможет увеличить размер структуры BITMAPINFOHEADER, не нарушая работы существующих приложений.
СОВЕТ | Лучше молчать и прослыть глупцом… Когда я только начал программировать для Windows, то не понимал, зачем в некоторые структуры включаются поля с их размерами. Забыв о мудром совете Авраама Линкольна, я высказался на эту тему в одной из ранних статей и был справедливо наказан. Впрочем, если бы все прислушались к совету Линкольна, никто бы не писал книг. |
Поля biWidth, biHeight и biBitCount определяют размеры изображения. Содержимое поля biCompression позволяет узнать, хранится ли изображение в сжатом виде. Поскольку мы не собираемся работать со сжатыми BMP-файлами, необходимо проверить, имеет ли это поле значение BI_RGB (а не BI_RLE8, свидетельствующее о сжатии файла).
В поле biSizeImage хранится размер графических данных (в пикселях). Однако учтите, что это поле часто оказывается незаполненным (содержит нулевое значение). В таких случаях нам придется самостоятельно вычислять размер графических данных.
Наконец, поле biClrUsed определят количество цветов в палитре (для палитровых изображений). Как и поле biSizeImage, оно часто может быть равно нулю. Это означает, что палитра содержит максимальное количество элементов (256 для 8-битных изображений). Остальные поля структуры BITMAPINFOHEADER не представляют для нас интереса, поэтому я не стану утомлять вас их обсуждением.
Палитра
Палитра в BMP-файлах хранится в виде списка структур RGBQUAD, где каждый элемент представляет отдельный цвет. Структура RGBQUAD объявляется так:
typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD;
В первых трех полях хранятся цветовые RGB-составляющие. На поле rgbReserved мы не будем обращать внимания (предполагается, что оно равно нулю). Как я упоминал выше, количество структур RGBQUAD в BMP-файле определяется полем biClrUsed. Тем не менее обычно 8-битные BMP-файлы содержат 256 структур RGBQUAD. В 24-битных RGB-файлах структуры RGBQUAD отсутствуют.
Графические данные
Графические данные в основном представляют собой список пикселей, из которых состоит изображение. Однако каждая горизонтальная строка пикселей должна занимать блок памяти, выровненный по границе параграфа. Следовательно, если количество байт, необходимых для хранения строки пикселей, не кратно четырем, в каждую строку включается от одного до трех дополняющих байт.
При этом для работы с графическими данными BMP-файлов используется концепция шага, упоминавшаяся выше в этой главе. Отличие состоит в том, что для графических данных BMP-файлов значение шага вам придется рассчитать самостоятельно. Впрочем, это не так уж сложно, потому что шаг всегда попадает на ближайшую границу параграфа за концом блока памяти, необходимого для хранения строки пикселей.
Изображения хранятся в BMP-файлах в перевернутом виде, так что первая строка пикселей файла на самом деле является нижней строкой настоящего изображения. Чтобы восстановить нормальное изображение, мы начнем чтение файла с последней строки пикселей и будем двигаться к началу.
Сайт управляется системой uCoz
BMP — формат файла изображения
Файлы с расширением .BMP представляют собой файлы растровых изображений, которые используются для хранения растровых цифровых изображений. Эти изображения не зависят от графического адаптера и также называются файловым форматом независимого от устройства растрового изображения (DIB). Эта независимость служит для открытия файла на нескольких платформах, таких как Microsoft Windows и Mac. Формат файла BMP может хранить данные в виде двумерных цифровых изображений как в монохромном, так и в цветном формате с различной глубиной цвета.
Спецификации формата файла BMP
Независимые от устройства растровые изображения служат для обмена растровыми изображениями между устройствами и приложениями. Из-за постоянного развития этого формата файла информация, содержащаяся в заголовках, может отличаться в зависимости от версии Bitmap. Один файл точечного рисунка состоит из структур фиксированного и переменного размера в определенной последовательности.
Структуры в файле Bitmap расположены в следующем порядке:
Структура | Необязательно | Размер | Назначение |
---|---|---|---|
Заголовок файла | Нет | 14 | Для хранения общей информации о файл растрового изображения |
Заголовок DIB | Нет | Фиксированный размер | Для хранения подробной информации о растровом изображении и определения формата пикселей |
Дополнительные битовые маски | Да | 12 или 16 байтов | Для определения формата пикселей |
Цветовая палитра | Полуобязательная | Переменный размер | Для определения цветов, используемых данными растрового изображения |
Gap1 | Да | Переменный размер | Выравнивание структуры |
Массив пикселей | Нет | Переменный размер | P Формат ixel определяется заголовком DIB или дополнительными битовыми масками. |
Gap2 | Да | Переменный размер | Выравнивание структуры |
Цветовой профиль ICC | Да | Переменный размер | Чтобы определить цветовой профиль для управления цветом |
Когда растровое изображение изображение загружается в память, оно становится структурой DIB, используемой Windows через свой GDI API. Заголовок файла не является частью этой структуры данных. Цвет также может состоять из 16-битных записей, которые представляют собой индексы к палитре, на которую в данный момент имеется ссылка, вместо явных определений цвета RGB.Давайте посмотрим на некоторые из них подробно, особенно на заголовки.
Заголовок файла растрового изображения
Заголовок файла растрового изображения аналогичен заголовкам других файлов, используемых для идентификации файла. Поскольку существуют различные варианты формата файла BMP, первые 2 байта формата файла BMP представляют собой символ «B», а затем символ «M» в кодировке ASCII. Все целочисленные значения хранятся в формате little-endian.
Смещение шестнадцатеричное | Смещение десятичное | Размер | Назначение |
---|---|---|---|
00 | 0 | 2 байта | Поле заголовка, используемое для идентификации файлов BMP и DIB, — 0x42 0x4D в шестнадцатеричном формате, то же, что BM в ASCII.Возможны следующие значения. * ** BM ** — Windows 3.1x, 95, NT, & mldr; и т. д. * ** BA ** — растровый массив структуры OS / 2 * ** CI ** — значок цвета структуры OS / 2 * ** CP ** — указатель цвета const OS / 2 * ** 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 бит на пиксель (1 бит на пиксель) поддерживает 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 может определять альфа, красный, зеленый и синий образцы пикселя.
Список литературы
.
Конвертировать BMP онлайн
В списке показано, какие форматы можно преобразовать в BMP и какие форматы можно преобразовать из BMP. Щелкните ссылку ниже, чтобы начать конкретное преобразование.
# | Преобразование | Должность | Тип |
---|---|---|---|
1 | BMP в PDF | конвертировать из BMP | преобразовать изображение в документ |
2 | BMP в PNG | конвертировать из BMP | преобразовать изображение в изображение |
3 | BMP в JPG | конвертировать из BMP | преобразовать изображение в изображение |
4 | BMP в DDS | конвертировать из BMP | преобразовать изображение в изображение |
5 | BMP в DIB | конвертировать из BMP | преобразовать изображение в изображение |
6 | BMP в DPX | конвертировать из BMP | преобразовать изображение в изображение |
7 | BMP в EPS | конвертировать из BMP | преобразовать изображение в изображение |
8 | BMP в GIF | конвертировать из BMP | преобразовать изображение в изображение |
9 | BMP в JP2 | конвертировать из BMP | преобразовать изображение в изображение |
10 | BMP в JXR | конвертировать из BMP | преобразовать изображение в изображение |
11 | BMP на PS | конвертировать из BMP | преобразовать изображение в изображение |
12 | BMP в PSD | конвертировать из BMP | преобразовать изображение в изображение |
13 | BMP в SVG | конвертировать из BMP | преобразовать изображение в изображение |
14 | BMP в TGA | конвертировать из BMP | преобразовать изображение в изображение |
15 | BMP в TIFF | конвертировать из BMP | преобразовать изображение в изображение |
16 | BMP в WEBP | конвертировать из BMP | преобразовать изображение в изображение |
17 | BMP в XWD | конвертировать из BMP | преобразовать изображение в изображение |
18 | BMP для ICO | конвертировать из BMP | преобразовать изображение в значок |
19 | PDF в BMP | конвертировать в BMP | преобразовать документ в изображение |
20 | HTML в BMP | конвертировать в BMP | преобразовать документ в изображение |
21 | DOC в BMP | конвертировать в BMP | преобразовать документ в изображение |
22 | DOCX в BMP | конвертировать в BMP | преобразовать документ в изображение |
23 | RTF в BMP | конвертировать в BMP | преобразовать документ в изображение |
24 | PPT в BMP | конвертировать в BMP | преобразовать документ в изображение |
25 | PPTX в BMP | конвертировать в BMP | преобразовать документ в изображение |
26 | XLS в BMP | конвертировать в BMP | преобразовать документ в изображение |
27 | XLSX в BMP | конвертировать в BMP | преобразовать документ в изображение |
28 | XPS в BMP | конвертировать в BMP | преобразовать документ в изображение |
29 | OXPS в BMP | конвертировать в BMP | преобразовать документ в изображение |
30 | ART в BMP | конвертировать в BMP | преобразовать изображение в изображение |
31 | PNG в BMP | конвертировать в BMP | преобразовать изображение в изображение |
32 | JPG в BMP | конвертировать в BMP | преобразовать изображение в изображение |
33 | RAW в BMP | конвертировать в BMP | преобразовать изображение в изображение |
34 | CR2 в BMP | конвертировать в BMP | преобразовать изображение в изображение |
35 | DDS в BMP | конвертировать в BMP | преобразовать изображение в изображение |
36 | DIB в BMP | конвертировать в BMP | преобразовать изображение в изображение |
37 | DNG в BMP | конвертировать в BMP | преобразовать изображение в изображение |
38 | DPX в BMP | конвертировать в BMP | преобразовать изображение в изображение |
39 | EMF в BMP | конвертировать в BMP | преобразовать изображение в изображение |
40 | EPS в BMP | конвертировать в BMP | преобразовать изображение в изображение |
41 | GIF в BMP | конвертировать в BMP | преобразовать изображение в изображение |
42 | JP2 в BMP | конвертировать в BMP | преобразовать изображение в изображение |
43 | JXR в BMP | конвертировать в BMP | преобразовать изображение в изображение |
44 | PS в BMP | конвертировать в BMP | преобразовать изображение в изображение |
45 | PSD в BMP | конвертировать в BMP | преобразовать изображение в изображение |
46 | SVG в BMP | конвертировать в BMP | преобразовать изображение в изображение |
47 | TGA в BMP | конвертировать в BMP | преобразовать изображение в изображение |
48 | TIFF в BMP | конвертировать в BMP | преобразовать изображение в изображение |
49 | TTF в BMP | конвертировать в BMP | преобразовать изображение в изображение |
50 | WEBP в BMP | конвертировать в BMP | преобразовать изображение в изображение |
51 | XWD в BMP | конвертировать в BMP | преобразовать изображение в изображение |
52 | DWG в BMP | конвертировать в BMP | преобразовать изображение в изображение |
53 | CDR в BMP | конвертировать в BMP | преобразовать изображение в изображение |
54 | AI в BMP | конвертировать в BMP | преобразовать изображение в изображение |
55 | DXF в BMP | конвертировать в BMP | преобразовать изображение в изображение |
56 | HEIF в BMP | конвертировать в BMP | преобразовать изображение в изображение |
57 | HEIC в BMP | конвертировать в BMP | преобразовать изображение в изображение |
58 | JFIF в BMP | конвертировать в BMP | преобразовать изображение в изображение |
59 | ICO в BMP | конвертировать в BMP | преобразовать иконку в изображение |
60 | CUR в BMP | конвертировать в BMP | преобразовать иконку в изображение |
Список поддерживаемых непопулярных преобразований:
Преобразование из BMP: BMP в AAI, BMP в AVS, BMP в CIN, BMP в CMYK, BMP в CMYKA, BMP в DCX, BMP в EPDF, BMP в EPI, BMP в EPS2, BMP в EPS3 и еще 50 преобразований.
Конвертировать в BMP: AAI в BMP, AVS в BMP, CALS в BMP, CGM в BMP, CIN в BMP, CMYK в BMP, CMYKA в BMP, CRW в BMP, CUT в BMP, DCM в BMP и еще 77 преобразований.
.