Как сделать изображение bmp

Формат и чтение BMP файла (BMP format)

Создайте в графическом редакторе PAINT растровое изображение размером 50*35 пикселов. Выберите максимальный масштаб изображения и включите сетку. Сохраните рисунок в формате BMP как монохромный (файл 50_35.bmp).

Как сделать изображение bmp

Откройте листинг файла 50_35.bmp в приложении Commander (TC, VC или WC) для просмотра (клавиша F3) в шестнадцатеричном (HEX) представлении.

Как сделать изображение bmp

Сопоставим картинку растрового изображения и HEX коды в листинге файла 50_35.bmp.

Коды с 19-го по 23-й (32 00 00 00) определяют размер растра (число пикселов) по горизонтали. Коды с 24-го по 27-й (23 00 00 00) определяют размер растра по вертикали. Чтобы убедиться в этом воспользуйтесь калькулятором. В рассматриваемом примере размер растра – 50 * 35. HEX коду 32 соответствует десятичное (DEC) число 50, HEX коду 23 – DEC число 35.

Как сделать изображение bmp

На размера растра отводится 4 байта (HEX кода). Одним байтом определяется размер от 0 до 255. При превышении 255 (код FF) будет задействован следующий байт. Например, DEC числу 256 соответствует HEX код 100. Размер растра 256 будет представлен в листинге файла (00 01 00 00).

Как сделать изображение bmp

Коды символов, начиная с 63-го и до конца файла, содержат последовательность данных о цвете точек растра – в порядке слева направо вдоль каждой ряда и снизу вверх по рядам. Один байт описывает 8 точек, белая точка в BIN коде описывается единицей, черная – нулем.

Как сделать изображение bmp

Сколько байт необходимо для описания 50 точек в одном ряду? Не менее 7 (7*8=56). Но используется 8 (8*8=64), соблюдается кратность 4 байтам (4*8=32). Обратите внимание в листинге файла на HEX коды в конце описания каждого ряда повторяются байты FF FF C0 00. Эти байты описывают последние 32 точки из 64-х. Из них 14 несуществующих точек (64-50=14) описаны нулями.

Как сделать изображение bmp

Точки какого ряда описаны кодом FC 1F? Отсчитываем ряды по (по 8 байт в каждом), можно также ориентироваться на код (C0 00) в конце каждого ряда. Получаем 11-й ряд. В нем находятся 5 точек. Проверяем результат с помощью калькулятора.

Как сделать изображение bmp

VLISP программа считывания данных из BMP-файла (монохромного)

Программа последовательно считывает из BMP-файла HEX-коды. По этим данным определяется порядковый номер каждой черной точки в ряду, начиная слева. Порядковые номера черных точек каждого ряда заносятся в список, который после окончании чтения ряда записывается в файл Result.txt.

Информация, записанная в файл Result.txt:

Описание программы

Из BMP-файла последовательно считываются байты с помощью функции read-char. Данные, которые будут использоваться в программе, запоминаются в переменных, остальные пропускаются.

Размер растра (xsize и ysize) определяется парой из 4-х байт. Как объединить эти 4 байта в одно число? Рассмотрим более простую задачу. Как из 4-х цифр «5» «8» «9» и «1» сформировать число 1985? Для этого каждую цифру сдвигаем влево на соответствующее количество разрядов (добавляем нули слева), а результат суммируем.

Как сделать изображение bmp

Аналогично решается задача формирования 4-х байтного числа. В пользовательской функции (r) из 4-х байтов сложением формируется одно число. Каждый байт перед сложением сдвигается на соответствующее количество разрядов (1, 2 и 3 байта). Сдвиг выполняется функцией Lsh, параметры сдвига указывается в битах (8, 16 и 24). Функция (r) возвращает число в 10-тичном представлении. Результат запоминается в переменных (xsize и ysize).

Далее считываются и обрабатываются точки, на предмет выявления их цвета. Используется внешний цикл по ysize и внутренний цикл по xsize.

Учитывая, что число байтов, которые описывают один ряд точек, кратно 4 объединим их по аналогии с предыдущей задачей. Только в этом случае из 4-х цифр «5» «8» «9» и «1» будем формировать число 5891:

Как сделать изображение bmp

Эту задачу в программе решает пользовательская функция (r). Она объединяет 4-х байта в 32 разрядное число, которое сохраняется в переменной n. В функции (r) также создается 32 разрядное число (сохраняется в переменной mask), первый бит которого – 1(единица), остальные – 0 (ноль). Начальное значение «маски» формируется путем побитового сдвига единицы влево на 31 разряд (lsh 1 31):

Как сделать изображение bmp

Отметим, что любое число независимо от его представления (HEX, DEC, BIN) остается одним и тем же. А функции обрабатывают его по-разному. Например, функция read-char работает с байтами, а Lsh с битами.

Как сделать изображение bmp

Тестирование каждой точки, которая описывается в переменной n, анализируется путем применения побитового умножения c значением переменной mask(if (= (logand n mask) 0) (setq lst (cons x lst))):

Как сделать изображение bmp

В верхнем примере проверялась крайняя 6-я точка сформированного числа, в нижнем примере – 19-я точка. Если результат побитового умножения ноль, то проверяемая точка – черная. Порядковый номер точки в ряду сохраняется в переменой x. Каждая черная точка заносится в начало списка (setq lst (cons x lst)). По окончании анализа ряда список записывается наоборот в файле результата result.txt (princ (reverse lst) fo).

Маска и число обновляются после 32 сдвигов (if (= mask 0) (m)), а также, в случае, если заканчивается внутренний цикл (repeat xsize…). При этом, лишние пиксели, которые находятся за пределами растра (64-50=14), автоматически отсекаются, поскольку в начале очередного цикла по Y (repeat ysize (m) …) значения переменных n и mask обновляются.

Формат BMP (24-bit Bitmap)

На рисунке приведен пример простого изображения (размер 34 *10 точек) из 3-х красных точек в левом нижнем углу, остальные точки белые.

Как сделать изображение bmp

Раскрываем листинг файла и, сопоставляя с изображением, определяем, как описываются данные в нем:

Как сделать изображение bmp

Файл начинается с символов “BM”, указывающих на формат файла.

С 19 позиции 4 байта (22 00 00 00) указывают размер файла по X (количество точек в строке 34), с 23-й позиции – 4 байта (0A 00 00 00) указывают размер файла по Y (количество рядов 10).

Начиная с 55-го байта и до конца файла содержатся данные о цвете точек растра – в порядке слева направо вдоль каждого ряда и снизу вверх по рядам. Одна точка описывается тремя байтами, каждый из которых представляет синюю (Blue), зеленую (Green) и красную (Red) составляющие цвета. В рассматриваемом примере первая точка (красного цвета) описана байтами (00 00 FF) вторая (белого цвета) – (FF FF FF).

Каждый ряд точек описывается количеством байт, кратным 4. Ряд из 34 точек должен описываться 34*3 + 2 =104 байтами. Два байта (00 00) добавляется в конце описания каждого ряда для обеспечения кратности 4. Если бы ряд состоял из 33 точек, то в конце каждого ряда добавилось по 1 байту для обеспечения кратности 4 (33*3 + 1 =100).

Загрузка и чтение BMP (24-bit Bitmap) на VB.NET

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

Как сделать изображение bmp

С++ программа считывания данных из BMP (24-bit Bitmap)

Ниже приводится модуль программы, который используется в приложении 3D-реконструкция по 2-м изображениям. Модуль обеспечивает загрузку данных из BMP файлов в динамически выделяемую оперативную память.

Как сделать изображение bmp

Формат Bmp (256-цветной)

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

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

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

Как сделать изображение bmp

На рисунке выделены по 4 байта цветов палитры, которые используются для указания цвета точек. Белый цвет имеет последний номер в таблице цветов – 255 (FF). Синий цвет указан под номером 252 (FC), зеленый – 250 (FA), красный – 249 (F9). Длина каждой строки дополняется 2-я байтами (00 00) для кратности 4 (10+2=12).

Источник

ITGuides.ru

Вопросы и ответы в сфере it технологий и настройке ПК

Чем лучше открыть файл формата BMP для просмотра и редактирования

Файлы формата bmp обычно хранят растровые изображения. Этот формат не является сжатым и используется в Windows.

Более подробно о файлах BMP

Как сделать изображение bmp

Структура файла BMP состоит из четырех блоков

Данный формат графики называется «аппаратно независимый растр». Сам файл состоит таких частей: заголовка файла (здесь хранятся данные о ширине и высоте файла, цветовых характеристиках начальной точки, растровом идентификаторе), заголовка изображения (его может не быть), палитры (может не быть) и самой картинки.

Информация в растровых изображениях представлена в пикселях. При этом для каждого пикселя задано определенное положение и значение цвета. В файлах BMP может быть задана разная глубина цвета на один пиксель, что зависит от числа битов на пиксель (это указывается в заголовке файла). Кроме того файл bmp может содержать изображение в оттенках серого.

Чем просматривать файлы BMP

Большинство популярных программ-просмотрщиков графики без проблем смогут открыть и отобразить содержимое, хранящееся в файле BMP, поэтому проблем возникнуть не должно. Под ОС Windows можно воспользоваться встроенной утилитой «Средство просмотра фотографий Windows».

Помимо стандартных средств, открыть BMP в режиме просмотра поможет любая из следующих программ:

Какими программами открыть BMP для редактирования

Файл bmp в Windows можно открыть с помощью стандартного редактора графики. Однако подойдет почти любой графический редактор, среди них – много бесплатных. Наиболее популярны следующие:

Если на вашем ПК стоит Mac OS, то воспользуйтесь такими приложениями:

Под операционной системой Linux bmp также открывает приложение GIMP.

Как конвертировать BMP в другие форматы

С конвертацией BMP в иные популярные графические форматы проблем не будет ввиду его широкой поддержки графическими редакторами. Чтобы сохранить BMP файл в PNG или JPEG, достаточно открыть такой файл любым графическим редактором из списка выше, и воспользоваться функциями экспорта или сохранения («Сохранить как…»). В списке форматов, в который будет сохранено содержимое, выбрать нужный. Ну и, конечно, указать путь для сохранения.

Итак, формат bmp популярен, поэтому редакторов, которые его «понимают», просто множество. Стоит испробовать несколько программ, чтобы выбрать наилучшую для себя.

Отблагодари меня, поделись ссылкой с друзьями в социальных сетях:

Читайте также

Как сделать изображение bmp

Как открыть документы в формате DOC онлайн

Как сделать изображение bmp

Онлайн просмотр файлов с расширением DWG

Как сделать изображение bmp

Как открыть файлы CDR онлайн

Как сделать изображение bmp

Формат AVI

Как сделать изображение bmp

Как сделать изображение bmp

Как и чем открывать, создавать и редактировать файлы формата HTML

Как сделать изображение bmp

Файл формата VOB: какие программы для открытия использовать и как сжать

Как сделать изображение bmp

Для чего используются файлы FDB, как и какими программами их открыть?

Оставить комментарий ВКонтакте

3 Комментариев

Элементарными функциями редактирования файлов BMP обладает отличный, бесплатный просмотровщик FastStone Image Viewer. По сравнению с ним, Paint.NET гораздо более продвинут, а тем кому нужен мощный, надежный и бесплатный редактор графики, можно смело рекомендовать GIMP

Статья полезная. Из вышеперечисленных программ использую уже больше 3 лет ACD See, но платную версию. Она и фотошоп заменит, и как листалка картинок сойдёт. Её смело могу советовать.

Источник

Как создать файл bmp c прозрачным фоном

Marina_

Пользователь сайта
Guest
Guest

monter

Знаток

Marina_

Пользователь сайта
Guest
Guest

>Хотя бы просто скажите это возможно или нет

Нет. Формат bmp не поддерживает прозрачность.

Если бы ты была программистом, то тогда могла бы в своей программе назначить один из цветов прозрачным, но это уже из другой оперы.

Guest

Запрещено декретом ВКПб?

Guest

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

Это можно сделать или с помощью плагина, или вручную.

Сначала загрузите селекцию с собственной прозрачности слоя и сохраните ее как альфа-канал. Снимите селекцию.

После этого заливаете фон серым цветом и Flatten Image. Теперь сохраняете в bmp 32 bit и готово.

Guest
Guest

А, читаем? А делать кто будет, Аниськин?

Или это все равно невожможно потому что в спецификации той реализации так написано. Да?

А вот товарищ Влад советует gif, так вот как раз gif и не поддерживает альфа-канала. Процитировать из спецификации?

Guest

Кому нужен твой альфа канал, который виден в PS?!
Ты вопрос и пояснение читал?

>Использовать файлы будут для работы с комплексом (на экране датчики-файлы bmp, которые в зависимости от ситуевины будут показывать, что пожар или нет).

Как она в сторонней программе сможет использовать этот альфа канал? Ее bmp файлы будут не прозрачны!

Guest

monter

Знаток

Игорь, а кто сказал что она в сторонней программе это будет делать? может у них это курсовой/дипломный проект и люди по неопытности выбрали bmp формат? Автор то молчит о задаче.

А если это готовая сторонняя программа и там используется этот bmp формат, тогда затаскиваем в PS эти родные рисунки м смотрим какой цвет использовали программеры под прозрачный. и стряпаем свои рисунки с учетом этого.

Для примера шахматы KChess Elite http://kniazeu.by.ru/chess/kchess.html

картинки все в bmp, однако на экране мы видим с прозрачностью.
так что всЕ зависит от задачи!

Как сделать изображение bmp

Guest

>(на экране датчики-файлы bmp, которые в зависимости от ситуевины будут показывать, что пожар или нет).

Вопрос задававшей представляется мне таким:
программа работает на компьютере и получает сигналы от внешних устройств. В зависимости от сигнала показывается та или иная картинка bmp на подложке. Других данных нет и нет данных как эти файлы будут добавляться в программу.

>тогда затаскиваем в PS эти родные рисунки м смотрим какой цвет использовали программеры под прозрачный. и стряпаем свои рисунки с учетом этого.

Марина пишет о том, что эти файлы она будет создавать сама.
При интеграции рисунка bmp в программу в момент ее разработки, в этом рисунке становиться прозрачным тот цвет, который находиться в крайнем левом нижнем пикселе. Таким образом убирается канва. Но Марина не пишет программу, ей надо предоставить разные готовые рисунки с прозрачностью в формате bmp и совсем не обязательно на однородном фоне в дальнейшем они будут находиться. Возможно, что они будут добовлятся в программу простым открытием файла через диалог. Ну и где тут будут прозрачность?

Guest

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

Или там роялти надо Адобе платить за это расширение?

Вот если бы они там psd-файлы хотели бы использовать, то, может быть им и потребовался ФШ. Хотя если скачать SDK там можно узнать все нужное об этом формате чтобы открывать его в *своей собственной* программе не хуже, чем он открывается в ФШ.

Или вы полагаете что написать такую программу невозможно?

Влад, это вас, ламера надо забанить чтобы вы тут не зловонили безответственно.

Источник

games maker Все о создании игр и не только

3 февраля 2010 в 21:12

Формат данных BMP (bitmap)

Как сделать изображение bmp

В сегодняшнем уроке мы рассмотрим первый на нашем пути файловый формат. Различные форматы файлов предназначены для хранения разной информации. Каждый формат задаёт способ организации данных в файле.

Информация о файле BMP (bmp file header)

У каждого файла bitmap есть заголовок из 14 байт. Поля этого заголовка:

Давайте создадим изображение 100×100 пикселей. Каждый пиксель занимает 32 бита. Файловый заголовок будет выглядеть вот так:

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

Последнее поле: непосредственно изображение начинается сразу после файлового заголовка (14 байт) и заголовка изображения (40 байт).

Информация об изображении BMP (заголовок изображения)

Существует несколько версий BMP. Определить версию можно по размеру заголовка изображения. Мы будем пользоваться версией Windows V3, которая занимает 40 байт. Другие версии занимают 12, 64, 108, 124 байта.

В WinAPI для хранения bmp версии Windows V3 используется структура BITMAPINFOHEADER.

Поля заголовка Windows V3:

Теперь посмотрим как будет выглядить заголовок изображения в нашем случае:

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

Данные изображения BMP

Изображение состоит из пикселей. Формат пикселей задаётся глубиной цвета (смотрите выше). В нашем примере мы использовали 32 бита на пиксель. 32-ух битный цвет обычно состоит из четырёх каналов: альфа (прозрачность), красный, зелёный, синий: ARGB (Alpha, Red, Green, Blue). Иногда альфа-канал не используется, в этом случае изображение всё равно может занимать 32 бита, просто при вычислениях не обращают внимания на значения одного канала. В этом случае названия каналов записываются так: XRGB.

Каждый канал занимает 8 бит (1 байт) и может принимать 256 значений: от нуля до 255 (от 0x00 до 0xff).

В bmp изображение хранится построчно снизу вверх, т.е. первыми записываются нижние строки, затем верхние. Удостоверьтесь в этом: загрузите одно из изображений из первого упражнения и сохраните только половину строк этого изображения в другой файл.

При 32-ухбитной глубине цвета каналы в bmp записываются так: BGRA. Именно в таком порядке: синий, зелёный, красный, альфа.

Размер строки данных в изображении bmp должнен быть кратен четырём (в байтах). Если это не так, то строка дополняется нулями. Это происходит если используется 1,2,4,8,16,24 бита на канал. Например, у нас есть изображение шириной в 3 пикселя и мы используем 16-битный цвет. Ширина строки: 16*3 = 48 (6 байт). Но длина строки должна быть кратной четырём, поэтому добавляются ещё два байта и длина строки в данном примере будет равна восьми байтам. Хотя в последних двух байтах каждой строки и не будет хранится полезной информации. Нужно учитывать условие кратности размера строки четырём при работе с не 32-ух битными изображениями.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *