Разрешение bmp

Разрешение bmp Анемометр

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

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

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

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

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

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

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

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

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.

Многие пользователи компьютера (особенно те, кто начал свой нелегкий путь в его освоении в нулевых) слышали о такой штуке, как BMP-формат. И не только слышали, но и видели. “Старички” отлично знают, что это. Но начинающие юзеры даже понятия не имеют. Более того, они даже не представляют себе, какой программой можно открывать такую штуку. В этом материале мы подробно разберем этот формат, разъясним для чего он существует и расскажем о том, чем его открыть. Хоть этот формат уже и не особо популярен, но он еще используется. Поэтому есть смысл о нем рассказать. Конечно, рядовой пользователь с этим форматом уже сталкиваться не будет. А вот разные разработчики, веб-дизайнеры, мастера “Фотошопа” почти каждый день имеют с ним дело. Но и большая часть из них даже не догадывается о том, насколько был популярен этот формат в свое время. Однако мы отвлеклись. Пора переходить к сути вопроса.

Что такое BMP?

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

Разрешение bmp

Растровый формат BMP был популярен еще и из-за того, что в него можно было сохранить изображение с какой угодно глубиной цвета. Именно поэтому сей формат до сих пор используется в “БИОСах” многих производителей. Лого “БИОСа”, которое видно при старте компьютера выполнено как раз в этом формате. В некоторых играх сей формат тоже до сих пор используется, как основной. То есть, БМП до сих пор жив. А поэтому есть смысл подробнее разобрать его. Конечно, особо углубляться в теоретические дебри мы не будем, но основные особенности структуры разберем. Это совершенно необходимо.

(от англ. ) — формат хранения растровых изображений, разработанный компанией Microsoft.

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

Компания Microsoft так же разработала для своих нужд форматы ICO и CUR, которые имеют похожую на BMP структуру. Кроме этого, структуры из этого формата используются некоторыми WinAPI-функциями подсистемы GDI.

Глубина цвета в данном формате может быть 1, 4, 8, 16, 24, 32, 48 бит на пиксель. При этом для глубины цвета меньше 16 бит используется палитра с полноцветными компонентами глубиной 24 бита.

В формате BMP изображения могут храниться как есть или же с применением некоторых распространённых алгоритмов сжатия. В частности, формат BMP поддерживает RLE-сжатие без потери качества, а современные операционные системы и программное обеспечение позволяют использовать JPEG и PNG (эти форматы встраиваются в BMP как в контейнер).

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

BMP (файл растрового изображения, растровый формат файла, независимый от устройства, растровое изображение) – файлы растрового изображения, используемые для хранения цифровых растровых изображений отдельно от устройства отображения. Этот тип файлов ранее использовался в Microsoft Windows и OS/2. Термин “растровый” восходит к идее программистов о карте битов. Изображения BMP, как правило, не сжимаются или сжимаются без потерь (например, с помощью ZIP или RAR – благодаря наличию в файле избыточных данных). Сегодня JPG является более предпочтительным форматом изображений – в основном из-за большого размера файла BMP, что может вызвать проблемы или задержки при загрузке, отправке или выгрузке файлов.

Файлы BMP хранятся в виде 2D-изображений различных размеров, цветов и значений глубины цвета без сжатия данных, цветовых профилей или альфа-каналов. Изображения BMP сохраняются в форматах аппаратно-независимых растровых изображений (DIB), то есть для изображения указаны цвета, а не технические характеристики системы. Это объясняет, почему некоторые изображения BMP на разных компьютерах выглядят по-разному. Изображения BMP можно просматривать на любом устройстве, в том числе на компьютерных и телевизионных экранах. Отсутствие патентов превратило этот тип изображения в популярный формат для широкого спектра устройств.

Вот небольшой, но неполный список программ, которые могут открывать документы BMP:

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

/* Компилируется строкой: cc -o xtest xtest.c -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lm */

#include “bitmap.h” /* Здесь определения заголовков BMP как было описано выше в этой статье */

XImage CreateImageFromBufferDisplay

main argc argv

Display dis
Window win/* Наше окно */
XEvent event/* События */
GC gc/* Графический контекст */

XImage image
n width height fd size
data
BITMAPFILEHEADER bmp
BITMAPINFOHEADER inf
buf

argc
“use: xtest file.bmp”

fd openargv O_RDONLY
“Error open bitmap”

readfd bmp BITMAPFILEHEADER
readfd infBITMAPINFOHEADER

width inf.
height inf.

dis XOpenDisplay NULL
“Can’t connect X server: %s” errno

win XCreateSimpleWindowdis RootWindowdis DefaultScreendis width height
BlackPixeldis DefaultScreendis WhitePixeldis DefaultScreendis

XSetStandardPropertiesdis win argv argv None argv argc NULL
gc DefaultGCdis DefaultScreendis

/* Иногда в структуре это место не заполнено */
inf.
/* Вычислим размер */
size width width
size size height

size inf.

buf size
buf NULL

“size = %d байтов выделено” size

/* Сместимся на начало самого изображения */
lseekfd bmp. SEEK_SET

/* Читаем в буфер */
n readfd buf size
“size = %d байт прочитано” n

image CreateImageFromBufferdis buf width height

/* Удалим буфер – он нам больше не нужен */
buf

XMapWindowdis win
XSelectInputdis win ExposureMask KeyPressMask

XNextEventdis event
event.. win
event.
Expose
XPutImagedis win gc image imagewidth imageheight

KeyPress
XLookupKeysymevent. XK_q
XDestroyImageimage
XCloseDisplaydis
closefd
EXIT_SUCCESS

/* Создает Ximage из файла BMP, так как изображение BMP хранится первернутым
* и зеркальным-в цикле это исправляется */
XImage CreateImageFromBufferDisplay dis buf width height

depth screen
XImage img NULL
i j
numBmpBytes
numImgBytes
imgBuf
ind
line
temp
ih iw /* Номера строки и столбца для отражения */
new_ind /* Новый индекс */

screen DefaultScreendis
depth DefaultDepthdis screen
temp width
line temp width /* Длина строки с учетом выравнивания */
numImgBytes width height
imgBuf numImgBytes

/* Размер, отведенный на BMP в файле с учетом выравнивания */
numBmpBytes line height
i i numBmpBytes i
r g b

/* Пропускаем padding */
i temp i line temp

b bufi
i
g bufi
i
r bufi

/* Вычисляем новый индекс для отражения по вертикали */
iw ind width
ih ind width
new_ind iw height ih width

imgBufnew_ind r g b
ind

img XCreateImagedis CopyFromParent depth ZPixmap imgBuf width height
XInitImageimg

/* Порядок битов и байтов на PC должен быть таким */
imgbyte_order MSBFirst

imgbitmap_bit_order MSBFirst
img

Структура файла BMP

Графический формат BMP имеет свою структуру. Так, каждый файл состоит из битовой (или растровой) карты, которая выполнена в форме сетки. В этой сетке размещаются пиксели. Каждый из пикселей соответствует своему цвету. И так в несколько слоев. “БМП” может содержать различное количество пикселей с различной глубиной: от 1 бита для черно-белых изображений и до 64 бит для цветных. При такой структуре использовать сии файлы очень легко. Именно поэтому они до сих пор популярны среди многих разработчиков программ. С JPG, к примеру, все намного сложнее. Там есть различные степени сжатия, часто в одной ячейке сетки может находиться сразу несколько пикселей. JPG – сложные изображения и использовать их в качестве простого интерфейса программы не получится.

Разрешение bmp

Как перевести изображение в BMP?

Ответ на этот вопрос не может заключаться в одном предложении. Самый очевидный вариант, который приходит на ум – использовать “Фотошоп” от “Адобе”. Конечно, смешно. Это все равно, что стрелять из пушки по воробьям, но “Фотошоп” как раз может “правильно” перевести в формат BMP какую-либо картинку. Стоит только отметить, что размер этой самой картинки возрастет до немыслимых пределов. Также с задачей перевода изображения в сей интересный формат справится любая программа, предназначенная для просмотра графических файлов. Отлично справляются с этой задачей Faststone Viewer, ACDSee и другие приложения такого плана. Также с такой задачей справляется стандартны “Пэйнт” от “Майкрософт”. В общем, проблем с приложениями нет. Их целый вагон. Можно выбрать то, что по душе именно вам.

Разрешение bmp

Документы в формате BMP

Очень редко, но бывает, что некоторые товарищи умудряются сохранять документы (официальные, инструкции и так далее) в этом формате. Также часто конвертируют один формат в другой. К примеру, есть такая штука, как PDF в формате BMP. Просто документ был конвертирован в формат изображения. Однако такая конвертация совершенно неоправданна с точки зрения практичности. Как ни крути, но открывать “ПДФ” специализированными приложениями куда удобней, чем искать в ворохе файлов “БМП” нужную картинку. Однако некоторым такой квест нравится. С другой стороны, если нужна какая-то конкретная страница, то ее проще сохранить в “БМП”, чем потом искать по всему документу. Именно в этих целях может применяться конвертация. Документ в этом формате будет выглядеть так, как нужно, поскольку “БМП” поддерживает несколько информационных слоев.

Разрешение bmp

BMP File Format Specifications

Device Independent Bitmaps act as an aid to exchanging bitmaps between devices and applications. Due to the continuous evolution of this file format, the information contained in the headers can be different as per the version of Bitmap. A single bitmap file consists of fixed as well as variable-size structures in a specific sequence.

When a bitmap image is loaded into memory, it becomes a DIB structure, used by Windows via its GDI API. The File header is not part of this data structure. The color can also consist of 16-bit entries that constitute indexes to the curently referenced palette instead of explicit RGB color definitions. Lets have a look at some of these in detail, especially the headers.

A Bitmap File Header is similar to other file headers used to identify the file. Since there are different variants to BMP file format, the first 2 bytes of the BMP file format are character “B” and then character “M” in ASCII encoding. All integer values are stored in little-endian format.

Color Palette

Bitmap pixels are stored as bits packed in rows where  the size of each row is rounded up to a multiple of 4 bytes (a 32-bit DWORD) by padding. The total amount of bytes required to store the pixels of an image can not be directly calculated by just counting the bits. Since there is padding involved, the effect of round up the size of each row to a multiple of 4 bytes is required. Padding bytes (not necessarily 0) are to be appended to the end of the rows in order to bring up the length of the rows to a multiple of four bytes. When the pixel array is loaded into memory, each row must begin at a memory address that is a multiple of 4.

The image is actually described by the 32-bit DWORDs representation of the pixel array. Usually pixels are stored “bottom-up”, starting in the lower left corner, going from left to right, and then row by row from the bottom to the top of the image. Pixel formats and their implications are as listed below:

What is a BMP file?

Files having extension .BMP represent Bitmap Image files that are used to store bitmap digital images. These images are independent of graphics adapter and are also called device independent bitmap (DIB) file format. This independency serves the purpose of opening the file on multiple platforms such as Microsoft Windows and Mac. The BMP file format can store data as two-dimensional digital images  in both monochrome as well as color format with various colour depths.

Чем открыть BMP?

Этот формат довольно экзотичен в наше время. Поэтому у неподготовленного пользователя возникает вопрос о том, какой программой можно открыть BMP-формат. Стоит сразу отметить, что приложений очень много. Почти все современные вьюверы поддерживают изображения в этом формате. Такие утилиты, как Faststone, ACDSee, Picasa и прочие того же рода запросто справятся с этой задачей. Также прекрасно с этим делом справится Фотошоп от “Адобе”. Вообще же, “БМП” – универсальный формат. Изображения можно открыть практически чем угодно. Было бы желание и время. Для открытия формата сначала нужно установить соответствующее приложение. Но это не обязательно. Стандартный просмотрщик “Виндовс” тоже умеет читать “БМП”. Но сторонние программы намного удобнее и более функциональны. Лучше использовать их.

Разрешение bmp

DIB и DDB

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

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

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

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

Количество бит на пиксель. Может принимать следующие значения:

Размер изображения в байтах. Может содержать ноль для BI_RGB-изображений. Win98/Me/2000/XP: если biCompression содержит BI_JPEG или BI_PNG, biSizeImage указывает размер BI_JPEG или BI_PNG буфера изображения.

Горизонтальное разрешение в пикселях на метр для целевого устройства. Приложение может использовать это значение для выбора из группы ресурсов изображения, наиболее подходящего для текущего устройства. Для DPI 96, которое принято в Microsoft для мониторов, оно будет равно 3780 (если считать по формуле (96 / 25,4) * 1000).

Вертикальное разрешение в пикселях на метр для целевого устройства.

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

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

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

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

pColor LPSTRpBitmapInfo WORDpBitmapInfobmiHeader.

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

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

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.

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

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.

Популярность BMP в наши дни

Этот формат уже лет десять, как вышел из употребления в большинстве отраслей. Он морально устарел. По мнению пользователей, недостатков у “БМП” много. И все они так или иначе дискредитируют в глазах обычных юзеров формат файла BMP. PNG, к примеру, намного функциональнее и современнее. Набор недостатков “БМП” выглядит так:

Разрешение bmp

Все вышеописанные недостатки делают его крайне неудобным в повседневном использовании. Поэтому лучше использовать изображения в таких форматах, как RAW, JPG и PNG. Они отвечают современным требованиям и могут обеспечить высочайшее качество изображения при довольно компактных размерах.

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

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

Заключение

Итак, мы рассмотрели BMP-формат. Он был популярен тогда, когда компьютеры только входили в массовый сегмент. Многие использовали его только потому, что альтернатив не было. Хотя уже тогда он далеко не всех устраивал. “БМП” безнадежно устарел. Он уже не выдерживает конкуренции с такими популярными форматами, как JPG или PNG. Тем не менее, его еще используют в некоторых сферах. И именно потому, что его структура неоднородна. Для нужд разработчиков иногда требуется формат изображения, который может поддерживать сразу несколько слоев информации. Альтернативой является PSD (стандартный формат “Фотошопа”), но он слишком уж тяжелый. Долго открывается в обычном “вьювере”. Теперь только профессионалы используют “БМП”. И хорошо. Ему уже нет места на обычном домашнем компьютере. Есть форматы намного интереснее.

Про анемометры:  Газовый котел VAILLANT TURBOTEC PLUS VUW INT 242/5-5 (24 кВт) – характеристики, отзывы, плюсы-минусы, конкуренты и все цены в обзоре
Оцените статью
Анемометры
Добавить комментарий