| Новости | |||||
|---|---|---|---|---|---|
|
| Техника | |
|---|---|
|
| Программирование | |||
|---|---|---|---|
|
| Дополнительно | ||
|---|---|---|
|
| Опросы |
|---|
| Реклама |
|---|
|
|
| Партнеры |
|---|
| Формат BMP ( Часть 3 ) |
| Автор Albinos_X | ||
| 12.05.2007 г. | ||
Эта статья про то, что собой представляет графический формат BMP. Хоть это и один из простых форматов, но из-за того, что существует много вариаций этого формата, то не все моменты очевидны.bV4RedMask, bV4GreenMask, bV4BlueMask, bV4AlphaMask – Маски заменяющие палитру при сжатии bV4Compression (аналог biCompression) установленном в BI_BITFIELDS – были описаны выше. bV4AlphaMask – дополнительная маска используемая при bV4BitCount равном 32 и служит для описания альфа состовляющей цвета. bV4CSType – Определяет цветовое пространство DIB. Цветовое пространство это некоторое логическое описание цвета в виде вектора в 3-х или 4-х мерном пространстве, где каждое измерение - интенсивность одного из цветов или альфа-канала. Допустимые значения – LCS_CALIBRATED_RGB = #0#0#0#0; LCS_sRGB = 'sRGB'; LCS_WINDOWS_COLOR_SPACE = 'Win '; PROFILE_LINKED = 'LINK'; PROFILE_EMBEDDED = 'MBED'; - последние 2 варианта доступны только в пятой версии заголовка. LCS_CALIBRATED_RGB - указывает, что координаты конца вектора цвета и гамма составляющая идут в смежных полях. О гамма составляющей см. ниже. LCS_sRGB – указывает на то, что будет использоваться цветовое пространство sRGB. LCS_WINDOWS_COLOR_SPACE – указывается, что используется стандартное для Windows цветовое пространство, обычно соответствует LCS_sRGB. PROFILE_LINKED – говорит о том, что данные специальной профильной области не содержатся в изображении, хранятся в дополнительном файле имя которого хранится в bV5ProfileData. Профиль должен соответствовать ICC для интерфейса ICM 2.0. Профили были введены начиная с Windows 98, для обеспечения более точной цветопередачи. В этом режиме вектор цвета и гамма игнорируются. PROFILE_EMBEDDED - говорит о том, что данные специальной профильной области расположены в памяти указатель на которую находится в поле bV5ProfileData. Значение bV5ProfileData – обычно не определено до загрузки изображения в память. В этом режиме вектор цвета и гамма игнорируются. bV4Endpoints – структура типа TCIEXYZTriple определяющая x, y, z – координаты соответствующие трем цветам - красному, зеленому и синему для логического цветового пространства битмапа, определенного константой LCS_CALIBRATED_RGB. bV4GammaRed, bV4GammaGreen, bV4GammaBlue – параметр, характеризующий кривую отклика оттенка цвета (красного, зеленого и синего соответственно). Используется только при bV4CSType установленном в LCS_CALIBRATED_RGB. bV5Intent – тип тонирования (intent) изображения. Возможные варианты: LCS_GM_ABS_COLORIMETRIC = $00000008; LCS_GM_BUSINESS = $00000001; LCS_GM_GRAPHICS = $00000002; LCS_GM_IMAGES = $00000004; Данные параметры определяют каким образом цветовое пространство будет конвертироваться в палитру цветов. Более подробно см. Image Color Management Version 2.0 в MSDN bV5ProfileData – смещение в битмапе. Для bV5CSType установленном в PROFILE_LINKED указывает на нультерминатную строку хранящую имя файла цветового профиля. Строка может содержать полный путь к файлу профиля включая также сетевой путь. Для bV5CSType установленном в PROFILE_EMBEDDED это смещение собственно на цветовой профиль. Смещение отсчитывается от конца структуры TBitmapV5Header (данные растра не следуют сразу за таблицей цветов). Значение bV5ProfileData имеет смыл только для загруженного в память битмапа и должно быть установлено только после загрузки. Использование таких цветовых профилей допустимо только для файлов, у которых размер структуры (поле bV5Size) TBitmapInfoHeader, равно значению SizeOf(TBitmapV5Header) т.е. 124 байтам. После структуры TBitmapInfoHeader следует массив из структур TRGBQuad хранящий таблицу цветов. Такой массив может и отсутствовать в зависимости от битности данных. Каждый элемент характеризует один из используемых цветов. Четвертое поле должно быть установлено всегда в нуль. Рекомендуется записывать цвета в порядке их важности см. biClrImportant. Как уже упоминалось для 5-й версии заголовка, в памяти цветовая палитра может идти не сразу за структурой TBitmapInfoHeader а с некоторым смещением. Растр – представляет собой блок данных каждый байт, которого интерпретируется согласно формату сжатия и битности данных. Для biCompression BI_JPEG, BI_PNG структура блока не тривиальна (определяется форматом). Для BI_RLE8, BI_RLE4 этот блок разбивается на множество чередующихся подблоков различного размера, в каждом из которых хранится либо последовательность цветов с неповторяющимися значениями, либо число повторений некоторого цвета, либо маркеры конца строки или блока данных. Для BI_RGB и BI_BITFIELD это строки изображения, записанные в порядке снизу вверх (если значение высоты битмапа отрицательное, то наоборот). Каждая строка выравнивается на границу двойного слова (4 байта). Лишние младшие биты могут принимать произвольные значения, но обычно устанавливаются в нуль. Размер растра в байтах можно вычислить следующим образом: ( (biWidth + 3) div 4) * 4 * abs(biHeight) * biBitCount div 8 , где 8 число бит в байте. Автор: Alexeis (С) ( http://forum.vingrad.ru/index.php?showuser=777&nickname=Alexeis )
Функция доступна только зарегистрированным пользователям. Powered by AkoComment 2.0! |
||

Эта статья про то, что собой представляет графический формат BMP. Хоть это и один из простых форматов, но из-за того, что существует много вариаций этого формата, то не все моменты очевидны.