Bmp Формат Фото
- Конвертируйте ваши изображения в формат BMP с помощью бесплатного он-лайн конвертера. Вы можете конвертировать исходные файлы более чем 120 форматов.
- Формат bmp поддерживает. (формат Объединенной группы экспертов в области фотографии).
BfType определяет тип файла. Здесь он должен быть BM. Если Вы откроете любой файл BMP в текстовом (а лучше в 16-ричном редакторе), то увидите, что первые два символа - это BM (от слова BitMap, как вы уже, наверное, догадались). BfSize - это размер самого файла в байтах. Строго говоря вы должны его высчитывать (что рекомендуется), но я ставил размер файла неправильно (правда, не нарочно:)) и никаких проблем не было (ACDSee читало без проблем, моя программа работала), но я вам не рекомендую писать его заведомо неправильно, вдруг появится добросовестная программа, которая сверит этот размер с настоящим и решит, что это не bmp, а что-нибудь другое. В идеале все программы для того, чтобы убедиться, что перед ними действительно bmp, а не подделка, должны, во-первых, проверить, что bfType содержит 'BM' (без кавычек), а, во-вторых, что bfSize равен размеру файла.
BfReserved1 и bfReserved2 зарезервированы и должны быть нулями. Это один из самых важных полей в этой структуре. Он показывает, где начинается сам битовый массив относительно начала файла (или, как написано в MSDN, 'от начала структуры BITMAPFILEHEADER'), который и описывает картинку.
Файл с расширением bmp – как и чем открыть, описание формата. Ссылки на программы.
То есть, чтобы гарантированно попадать на начало массива вы должны писать. BiSize - это размер самой структуры. Ее нужно инициализировать следующим образом: bih.biSize = sizeof (BITMAPINFOHEADER); Снова здесь и дальше будем считать, что bih объявлена следующим образом: BITMAPINFOHEADER bih; biWidth и biHeight задают соответственно ширину и высоту картинки в пикселях.
BiPlanes задает количество плоскостей. Пока оно всегда устанавливается в 1.
BiBitCount - Количество бит на один пиксель. Подробнее про это поговорим ниже. BiCompression обозначает тип сжатия. Не удивляйтесь и не пугайтесь, что в bmp и вдруг сжатие.
Я лично не видел не одной сжатой bmp (но я не говорю, что таких не существует). Если сжатия нет, то этот флаг надо устанавливать в BIRGB. В этой статье мы говорим про несжатый формат, поэтому другие флаги я даже не буду перечислять. Похоже, что эта же структура используется и в файлах JPEG и PNG, потому что, начиная с Windows 98 тут появились варианты BIJPEG, которая показывает, что эта картинка - JPEG и BIPNG, что это PNG (про формат Jpeg я ничего не знаю, я только сделал эти выводы исходя из того, что написано в MSDN). BiSizeImage обозначает размер картинки в байтах. Если изображение несжато (то есть предыдущее поле установлено в BIRGB), то здесь должен быть записан ноль.
BiXPelsPerMeter и biYPelsPerMeter обозначают соответственно горизонтальное и вертикальное разрешение (в пикселях на метр) конечного устройства, на которое будет выводиться битовый массив (растр). Приложение может использовать это значение для того, чтобы выбирать из группы ресурсов наиболее подходящий битовый массив для нужного устройства.
Дело в том, что формат bmp - это по сути аппаратно-независимый растр, то есть когда внешний вид того, что получается не зависит от того, на что этот растр проецируется (если можно так выразится). Например, картинка будет выглядеть одинаково вне зависимости от того, рисуется она на экране монитора или печатается на принтере. Но вот разрешение у устройств разное, и именно для того, чтобы выбрать наиболее подходящую картинку из имеющихся и используют эти параметры. BiClrUsed определяет количество используемых цветов из таблицы. Если это значение равно нулю, то в растре используется максимально возможное количество цветов, которые разрешены значением biBitCount. Это актуально только для сжатых картинок.
Если biClrUsed не нуль и biBitCount меньше 16, то biClrUsed определяет текущее число цветов графического движка или доступного драйвера устройства. Если biBitCount больше или равно 16, то biClrUsed определяет размер таблицы цветов, используемой для оптимизации текущей системной палитры.
BiClrImportant - это количество важных цветов. Определяет число цветов, которые необходимы для того, чтобы изобразить рисунок. Если это значение равно 0 (как это обычно и бывает), то все цвета считаются важными. Виды формата BMP Все разновидности формата bmp условно можно разделить на два типа: палитровые и беспалитровые.
То есть используется в данном с формате палитра или нет. Заметьте, что палитра может быть даже в беспалитровых форматах, только там она не используется. В беспалитровых bmp цвет высчитывается прямо из тех битов, которые идут в файле, начиная с некоторого места. А в палитровых каждый байт описывает один или несколько пикселей, причем значения байта (или битов) - это индекс цвета в палитре. Для начала приведу таблицу, которая сравнивает возможные варианты. Вид картинки (палитровая или беспалитровая) зависит от того, сколько бит отдается на один пиксель, то есть от значения biBitCount структуры BITMAPINFOHEADER. BiBitCount Палитровый или беспалитровый формат Максимально возможное количество цветов Примечания 1 Палитровый 2 Двуцветная, заметьте, не обязательно черно-белая, палитровая картинка.
Если бит растра (что это такое чуть ниже) сброшен (равен 0), то это значит, что на этом месте должен быть первый цвет из палитры, а если установлен (равен 1), то второй. 4 Палитровый 16 Каждый байт описывает 2 пикселя. Вот пример из.Если первый байт в картинке 0x1F, то он соответствует двум пикселям, цвет первого - второй цвет из палитры (потому что отсчет идет от нуля), а второй пиксель - 16-й цвет палитры. 8 Палитровый 256 Один из самых распространенных вариантов. Но в то же время и самых простых. Палитра занимает один килобайт (но на это лучше не рассчитывать).
Один байт - это один цвет. Причем его значение - это номер цвета в палитре. 16 Беспалитровый 2^16 или 2^15 Это самый запутанный вариант. Начнем с того, что он беспалитровый, то есть каждые два байта (одно слово WORD) в растре однозначно определяют один пиксель.
Но вот что получается: битов-то 16, а компонентов цветов - 3 (Красный, Зеленый, Синий). А 16 никак на 3 делиться не хочет. Поэтому здесь есть два варианта. Первый - использовать не 16, а 15 битов, тогда на каждую компоненту цвета выходит по 5 бит. Таким образом мы можем использовать максимум 2^15 = 32768 цветов и получается тройка R-G-B = 5-5-5.
Но тогда за зря теряется целый бит из 16. Но так уж случилось, что наши глаза среди всех цветов лучше воспринимают зеленый цвет, поэтому и решили этот один бит отдавать на зеленую компоненту, то есть тогда получается тройка R-G-B = 5-6-5, и теперь мы может использовать 2^16 = 65536 цветов. Но что самое неприятное, что используют оба варианта. В MSDN предлагают для того, чтобы различать сколько же цветов используется, заполнять этим значением поле biClrUsed из структуры BITMAPINFOHEADER. Чтобы выделить каждую компоненту надо использовать следующие маски. Для формата 5-5-5: 0x001F для синей компоненты, 0x03E0 для зеленой и 0x7C00 для красной.
Для формата 5-6-5: 0x001F - синяя, 0x07E0 - зеленая и 0xF800 красная компоненты соответственно. 24 Беспалитровый 2^24 А это самый простой формат. Здесь 3 байта определяют 3 компоненты цвета. То есть по компоненте на байт.
Просто читаем по структуре RGBTRIPLE и используем его поля rgbtBlue, rgbtGreen, rgbtRed. Они идут именно в таком порядке. 32 Беспалитровый 2^32 Здесь 4 байта определяют 3 компоненты. Но, правда, один байт не используется.
Его можно отдать, например, для альфа-канала (прозрачности). Читать растр в данном случае удобно структурами RGBQUAD, которая описана так. Хранение данных в формате bmp Ну вот и подошли к самому интересному. После структур BITMAPFILEHEADER и BITMAPINFOHEADER идет палитра. Причем, если формат беспалитровый, то ее может и не быть, однако, на это рассчитывать не надо.
Дело в том, что, когда я только начинал разбираться с форматом bmp, в одной книжке я вычитал, что, якобы, если формат беспалитровый, то у нее вообще нет палитры. Там даже были две картинки - схемы формата: одна с палитрой, другая. А я в это время писал программу, которая усердно оперирует с bmp-шками.
И мне надо было преобразовывать входящие картинки из 256 цветов в 24-битные (если таковые имелись) во временные файлы. И я в 24-битных палитру просто не создавал (bfOffBits из структуры BITMAPFILEHEADER у меня был равен сумме sizeof(BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER), а входящие 24-разрядные оставлял без изменений. С 256-цветными растрами все работало как надо, пока мне не попалась 24-разрядная картинка, у которой внизу вместо нужной части отображался мусор.
Я не сразу понял в чем дело. Пока не сравнил размер исходного файла с теоретическим, который должен был быть, не будь палитры. Разница оказалась ровно 1 Kб (ровно 1024 байта). Там была палитра.
Поэтому никогда не рассчитывайте на то, есть ли палитра и не надейтесь на ее размер (хотя все картинки, которые мне попадались имели размер палитры 256 цветов, или 1Кб), всегда перемещайтесь по файлу на начало растра, используя bfOffBits. Палитра представляет из себя массив структур RGBQUAD идущих друг за другом. Даже если в палитре используются не все цвета (а только, например, 16), то часто все равно под палитру отводят 256 полей. А 256. 4 = 1024, где 4 - размер структуры RGBQUAD, то есть и получается тот самый один килобайт.
Сразу за палитрой идет сам растр. Тут уже более запутано. Во-первых, пиксели тут описываются так, как написано в таблице выше в зависимости от формата. И могут сами содержать значение компонентов цвета (для беспалитровых), а могут быть индексами массива-палитры. Сама картинка записывается построчно.
Во-вторых, картинка идет как бы перевернутая вверх ногами. То есть сначала записана нижняя строка, потом предпоследняя и так далее до самого верха. И, в-третьих, как написано в 1, если размер строки растра не кратен 4, то она дополняется от 1 до 3 пустыми (нулевыми) байтами, чтобы длина строки оказалась кратна параграфу. Вот это и есть самое неприятное. Дело в том, что для каждого формата приходится подстраивать это число пустых байтов (правда, я люблю туда записывать часть палитры, просто мне не хочется заводить лишние 'нулевые' переменные, если все-равно эти байты пропускают и никому они не нужны).
Я привожу таблицу с формулами, которые показывают для какого формата сколько байт надо дописывать в конец строки. Там под переменной Width, как можно догадаться, подразумевается ширина картинки.
Все эти формулы были установлены экспериментально. Я приведу пример только для наиболее используемых форматов.
Для остальных вы можете написать сами. Всем доброе время суток. Образец заполнения заявления на госслужбу. Хочу сказать автору спасибо, все изложено очень наглядно и понятно. Есть только один вопрос. Он касается примера 1-го, а именно подсчет размера конечного файла.
Bfh.bfSize = bfh.bfOffBits + sizeof(color). Width.
Height + Вопрос к этой формуле. Height.
((sizeof(color). Width)% 4 это так называемая проверка на кратность. Bfh.bfOffBits - размер в байт sizeof(color) - размер в байт Width. Height - а тут размер в битах Нету ли здесь ошибки в подсчете??? Предположим есть bmp картинка 256x256пик.
С глубиной цвета 24бит. По факту ее размер 196662 байта или 1572864 бит. Проверяем: bfh.bfOffBits = 14 + 40 = 54 байт + sizeof(color) = 3 бита(24 байт). Width. Height = 256.
Расширение Bmp
256 = 65636 бит Сложим по формуле: 1.(54 байт + (24бита + 65636 бит)) 2.(54 байт + 1572864 бит) пот и сам вопрос как? 3.(= 1572918 бит 8 = 196614,75 байт) а должны получить (196662 байта) 4.Я так понимаю 54 байта нужно + к (1572864 бит / 8 = 196608 бита) = 196662 байта. Компилировал на GCC, язык C.
Во-первых, нужно заменить названия типов данных: WORD - unsigned short DWORD - unsigned int LONG - int или long Во-вторых, размер структуры в памяти зависит от настроек компилятора и от директив. Поля структуры выравниваются кратно своему размеру: 1-байтовые поля не выравниваются, 2-байтовые — выравниваются на чётные позиции, 4-байтовые — на позиции кратные четырём и т.д. Таким образом, в памяти остаются пустые места между полями структуры, при этом, соответственно, она запишется в файл вместе с ними.
Чтобы поля размещались без пропусков, следует указывать следующие директивы:. pragma pack(push, 1) // Объявление структур. pragma pack(pop) Структуры должны иметь следующие размеры: BITMAPFILEHEADER - 14 байтов BITMAPINFOHEADER - 40 байтов. Я сохранила рисунок, который я очень долго и старательно рисовала в графическом редакторе-Paint. Так вот, этот рисунок имеет очень хорошую чёткость в Painte, но когда я его сохраняла, получается, что картинка не имеет такой же четкости, когда была рисунком.
А совершила я ошибку в том, что сохранила рисунок в '256-цветный рисунок (.bmp.did)' и сейчас он поменял цвета, а изначально он был у меня в формате.png. Это очень плохо для меня. Прошу, помогите пожалуйста мне вернуть обратно цвет рисунку, который был раньше, и сделать так, чтобы при сохранении рисунка, картинка получалась такой же четкой, как и рисунок, если это возможно.
Давайте обсудим различные форматы изображений. Jpg, bmp, gif, png, tiff, ico, вам знакомы эти? При таком количестве разновидностей легко запутаться и хранить свои изображения в неоптимальном виде. Чем это опасно? Например, тем, что используя 'сжатие с потерями' вы пожете потерять качество изображений; кроме того, необработанные, 'сырые' изображения могут занимать очень много места на диске. Еще существенней эта проблема для вебмастеров.
Как сделать так, чтобы изображения на сайте выглядели красиво, но при этом не занимали много места и быстро скачивались? Я сам лишь недавно заинтересовался этим вопросом, поэтому в моих старых статьях вы наверняка найдете неоптимизированные изображения (я собираюсь ими заняться, но пока не успел). Тем не менее, выбор типа изображения - это задача, которую необходимо решить прежде чем выкладывать его в интернет. В этой статье мы обсудим преимущества и недостатки различных типов изображений, а также научимся их конвертировать стредствами, встроенными в Windows. В процессе поиска информации про различные форматы, я наткнулся на странно звучавшие слова как. Сходите по ссылке, почитайте. Оказывается в интернете имеются своеобразные хранилища, где очень дешево, а иногда и бесплатно можно получить интереснейшие фотографии.
Самый простой формат изображений. Позволяет хранить многоцветные изображения (сейчас нужно сделать отступление о том, как хранится цвет точки в изображении. Как хорошо известно, любой цвет можно разложить на три составляющие - красный, синий и зеленый. Поэтому чтобы описать цвет нужно лишь описать интенсивность этих трех составляющих. Вопрос лишь в том, что это за интенсивность. Понятно, что это - какое-то число, но какое, насколько оно может быть большим?
Однозначного ответа на этот вопрос нет, в зависимости от типа и параметров изображения оно может меняться. Так или иначе, обычно говорят про глубину цвета изображения - количество бит, отвечающих за цвет одного пикселя. Например, если это число - 8, то мы можем хранить 2^8=256 различных цветов). Так вот bmp позволяет использовать до 48 бит на пиксель (веб-стандартом является 24). У bmp присутсвует механизм сжатия без потери качества, но он очень слабый.
Вообще говоря, я не вижу никаких преимуществ у этого формата. Смотрим дальше Формат GIF Очень интересный формат. Глубиной цвета он не радует (8 бит), но для каких-нибудь таблиц этого вполне достаточно. Но у этого формата появляется понятие прозрачности. Один из 256 цветов можно указать как прозрачный, и при отображении рисунка, например, на веб-странице, вместо этого цвета будет виден фон. Далее, у gif опять-таки есть сжатие без потерь, и уровень этого сжатия существенно лучше, чем у bmp.
Bmp Формат Фото
Но это еще не все - у изображений формата gif есть поддержка анимации. Можно создать серию изображений, которые будут сменять друг друга циклично, и при этом они все будут храниться в одном gif файле. Поэтому формат gif идеален для аватарок и небольших анимированных изображений - вам не нужно делать для того чтобы воспроизводить анимацию.
Формат PNG Формат png не поддерживает анимацию, но превосходит bmp с другой стороны, и даже не с одной. При поддержке все того же количества цветов на точку (48 бит максимум), у этого формата присутсвтует очень хорошее сжатие без потери качества. Поэтому картинки формата png ничего не потеряют по сравнению с bmp, но могут быть существенно меньше. Еще одно преимущество png - так называемый альфа-канал.
Bmp Скачать
Помимо указания интенсивности синего, красного и зеленого, у каждой точки можно указать уровень прозрачности. Таким образом, мы получаем не только безусловную прозрачность (есть - нет) как в gif, а возможность варьировать прозрачность разных частей изображения. Это свойство позволяет делать плавные переходы - четкое изображение посередине, постепенно переходящее в фон.
К сожалению, не все правильно отрабатывают альфа-прозрачность. Формат JPG Переходим к самому известному формату с потерей качества, jpg. Потеря качества означает, что применяется необратимое сжатие - из jpg невозможно восстановить изначальное изображение.
То есть, вообще говоря, получается рисунок не идентичный изначальному. Но если установить слабый уровень сжатия, то эти отличия будут малосущественны, а объем уже может сильно понизиться. Чем выше уровень сжатия, тем меньше объем и тем больше искажается рисунок. Формат jpg хорошо подходит для хранения фотографий. В фотографиях содержится такое количество различных цветов, что они очень плохо поддаются сжатию png. В то же время, их часто можно существенно уменьшить, созранив в jpg, но при этом практически не потерять качества. Максимальное количество бит на пиксель - 24.
Формат TIFF Формат всех форматов, контейнер, позволяет использовать другие форматы, сжатие с потерей и без потерь, 192 бита на пиксель. Недостатки - сложность работы с форматом и практически отсутствие поддержки у браузеров. Gta 4 распакованная торрент.
Если вы не профессиональный дизайнер, не используйте tiff. Формат ICO Почти что и не формат.
ПО структуре больше всего напоминает bmp, но поддерживает прозрачность (как gif). У этого формата разрешены лишь маленькие размеры рисунков, вроде 16 на 16 пикселей. Используется лишь в местах, где нужны маленькие картинки фиксированного размера, например, ярлыки на рабочем столе или так называемые favicon - картинки в браузере рядом с названием сайта. Конвертация форматов Подведем итоги сравнения форматов изображений. Сначала небольшая таблица: Макс. Бит/пиксель Прозрачность Анимация Веб-поддержка Большие габариты Сжатие bmp 48 -+ + без потери, плохое gif 8 булевая + + + без потери, хорошее png 48 альфа-канал - + + без потери, хорошее jpg 24 -+ + с потерей качества tiff 192 альфа-канал -+ разное ico 24 альфа-канал - + - без потери, плохое Таким образом, для маленьких картинок специального назначения можно использовать ico, если вам нужна анимация, то ваш выбор - gif, для фотографий хорошо использовать jpg, а для диаграмм и изображений с малым количеством цветов - png. Формат bmp я использовать вообще не рекомендую, а tiff оставим для профессионалов.
Конвертировать же форматы изображений очень просто. Кликните правой кнопкой мыши по картинке, выберите 'открыть с помощью - Paint'. Открывается рисунок, и в меню 'файл' есть опция 'сохранить как', где вы можете выбрать формат изображения. Если же вы хотите работать с рисунками на более продвинутом уровне, то вам понадобится хорошая программа для работы с изображениями.
Лично я рекомендую gimp - бесплатный аналог фотошопа. Но об этом - в другой раз. Следите за обновлениями! Дата: 16 декабря 2009 г., категория:.