Меню
Бесплатно
Главная  /  Wi-fi настройка  /  Расширение файла BMP. Программы открывающие файлы в форматах bmp Bmp файл

Расширение файла BMP. Программы открывающие файлы в форматах bmp Bmp файл

17.01.2014 Frenk 6 комментариев

Формат файла bmp относиться к растровым изображением и пользуется немалой популярностью. Его хорошо «понимает» любая операционная система виндовс.

Открытие файла с расширением bmp на компьютере, должно происходить автоматически – достаточно кликнуть по нему дважды левой кнопкой мыши.

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

Для этого нажмите на ваш файл bmp правой мышью, подведите курсор к строке «открыть с помощью» и выберите любую программу (если таковы установлены) по своему усмотрению, например паинт.

Какой программой открыть расширение bmp

Самый простой способ открыть формат bmp – это программа фотоальбом виндовс. Скачивать ее не нужно – идет вместе с операционкой, то есть должна быть у всех.

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

Третья программа «PhotoScape». Ее придется скачать. Она бесплатна, на русском и при ее помощи кроме просмотра можно картинки bmp обрабатывать.

Четвертое приложение Paint.NET. Она также бесплатная имеет русский интерфейс, удобная и очень проста в использовании, с множеством инструментов для корректировки и редактирования изображений и фото – это как бы заменитель стандартного «Paint»

Пятая программа «GIMP». Ее приравнивают к фотошопу. Это бесплатный графический редактор для профессионального использования, обладающий всеми необходимыми функциями и отличающийся простотой.

Предоставленные выше программы, открывающие файлы в этом формате – далеко не все. Их десятки, но этих обычному пользователю компьютера вполне достаточно. Успехов.

6 рассуждений о “Программы открывающие файлы в форматах bmp”

    в Paint НЕ ОТКРЫВАЕ

    Ответить

    Paint файлы в формате bmp — открывает.

    Ответить

    нет, не открывает

    Ответить

    Да вот только что специально открыл паинтом файл в формате bmp.

    Была рассмотрена небольшая программа, перемещающая спрайт по экрану, но, к сожалению, он при этом выглядел не так, как хотелось бы. В этой статье мы попробуем «привести» спрайт в порядок.

    Изображение спрайта мы получили из Bmp-файла, из таких же файлов можно брать изображение фона, курсора мыши и элементов интерфейса. Однако на экране мы видим не совсем то, что ожидали: изображение оказалось перевернутым и к тому же с иными, нежели требовалось, цветами. Итак, научимся правильно считывать Bmp-файлы и перевернем картинку «с головы на ноги».

    По решению разработчиков формат Bmp-файла не привязан к конкретной аппаратной платформе. Этот файл состоит из четырех частей: заголовка, информационного заголовка, таблицы цветов (палитры) и данных изображения. Если в файле хранится изображение с глубиной цвета 24 бита (16 млн. цветов), то таблица цветов может отсутствовать, однако в нашем, 256-цветном случае она есть. Структура каждой из частей файла, хранящего 256-цветное изображение, дана в , а соответствующие типы записей приведены в .

    Заголовок файла начинается с сигнатуры «BM», а затем идет длина файла, выраженная в байтах. Следующие 4 байта зарезервированы для дальнейших расширений формата, а заканчивается этот заголовок смещением от начала файла до записанных в нем данных изображения. При 256 цветах это смещение составляет 1078 - именно столько и пришлось пропустить в нашей прошлой программе, чтобы добраться до данных.

    Информационный заголовок начинается с собственной длины (она может изменяться, но для 256-цветного файла составляет 40 байт) и содержит размеры изображения, разрешение, характеристики представления цвета и другие параметры.

    Ширина и высота изображения задаются в точках растра и пояснений, пожалуй, не требуют.

    Количество плоскостей могло применяться в файлах, имеющих небольшую глубину цвета. При числе цветов 256 и больше оно всегда равно 1, поэтому сейчас это поле уже можно считать устаревшим, но для совместимости оно сохраняется.

    Глубина цвета считается важнейшей характеристикой способа представления цвета в файле и измеряется в битах на точку. В данном случае она равна 8.

    Компрессия. В Bmp-файлах обычно не используется, но поле в заголовке для нее предусмотрено. Обычно она равна 0, и это означает, что изображение не сжато. В дальнейшем будем использовать только такие файлы.

    Размер изображения - количество байт памяти, требующихся для хранения этого изображения, не считая данных палитры.

    Горизонтальное и вертикальное разрешения измеряются в точках растра на метр. Они особенно важны для сохранения масштаба отсканированных картинок. Изображения, созданные с помощью графических редакторов, как правило, имеют в этих полях нули.

    Число цветов позволяет сократить размер таблицы палитры, если в изображении реально присутствует меньше цветов, чем это допускает выбранная глубина цвета. Однако на практике такие файлы почти не встречаются. Если число цветов принимает значение, максимально допустимое глубиной цвета, например 256 цветов при 8 битах, поле обнуляют.

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

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

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

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

    Модуль для чтения 256-цветных Bmp-файлов имеет всего две процедуры. Как видно из листинга, в процедуру чтения файла ReadBMP необходимо передать размеры изображения. Это удобно, если картинку нужно считывать не полностью. Когда заранее известны размеры, это не вызывает проблем, однако было бы хорошо, если бы с помощью нашего модуля можно было читать любые изображения, в том числе и такие, размер которых заранее неизвестен. Для этого предусмотрена процедура ReadBMPheader, считывающая только заголовок файла. Вызвав ее, можно проверить, записано ли изображение в выбранном 256-цветном формате, узнать его размеры и только потом выделять для него память и помещать в отведенный буфер.

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

    P: arrayof byte;

    Процедура CreateSprite, вызывающая операцию чтения файла из нового модуля, упростилась (см. ).

    Структура Bmp-файла

    Имя Длина Смещение Описание
    Заголовок файла (BitMapFileHeader)
    Type 2 0 Сигнатура "BM"
    Size 4 2 Размер файла
    Reserved 1 2 6 Зарезервировано
    Reserved 2 2 8 Зарезервировано
    OffsetBits 4 10 Смещение изображения от начала файла
    Информационный заголовок (BitMapInfoHeader)
    Size 4 14 Длина заголовка
    Width 4 18 Ширина изображения, точки
    Height 4 22 Высота изображения, точки
    Planes 2 26 Число плоскостей
    BitCount 2 28 Глубина цвета, бит на точку
    Compression 4 30 Тип компрессии (0 - несжатое изображение)
    SizeImage 4 34 Размер изображения, байт
    XpelsPerMeter 4 38 Горизонтальное разрешение, точки на метр
    YpelsPerMeter 4 42 Вертикальное разрешение, точки на метр
    ColorsUsed 4 46 Число используемых цветов (0 - максимально возможное для данной глубины цвета)
    ColorsImportant 4 50 Число основных цветов
    Таблица цветов (палитра) (ColorTable)
    ColorTable 1024 54 256 элементов по 4 байта
    Данные изображения (BitMap Array)
    Image Size 1078 Изображение, записанное по строкам слева направо и снизу вверх

    Листинг 1

    unit bmpread; {процедуры для работы с Bmp} interface type artype = arrayof byte; arptr = ^artype; bmFileHeader = record {заголовок файла} Typf: word; {сигнатура } Size: longint; {длина файла в байтах} Res1: word; {зарезервировано} Res2: word; {зарезервировано} OfBm: longint; {смещение изображения в байтах (1078)} end; bmInfoHeader = record {информационный заголовок} Size: longint; {длина заголовка в байтах (40)} Widt: longint; {ширина изображения (в точках)} Heig: longint; {высота изображения (в точках)} Plan: word; {число плоскостей (1)} BitC: word; {глубина цвета (бит на точку) (8)} Comp: longint; {тип компрессии (0 - нет)} SizI: longint; {размер изображения в байтах} XppM: longint; {горизонтальное разрешение} {(точек на метр - обычно 0)} YppM: longint; {вертикальное разрешение} {(точек на метр - обычно 0)} NCoL: longint; {число цветов} {(если максимально допустимое - 0)} NCoI: longint; {число основных цветов} end; bmHeader = record {полный заголовок файла} f: bmFileHeader; {заголовок файла} i: bmInfoHeader; {информационный заголовок} p: arrayof byte; {таблица палитры} end; bmhptr = ^bmHeader; {чтение изображения из Bmp-файла} procedure ReadBMP(image:arptr; {массив с изображением} xim,yim:word; {размеры} pal:arptr; {палитра} filename:string); {имя файла} {чтение заголовка Bmp-файла} procedure ReadBMPheader(header:bmhptr;filename:string); implementation {$R-} {чтение изображения из Bmp-файла} procedure ReadBMP(image:arptr; xim,yim:word; pal:arptr; filename:string); var h: bmHeader; i: integer; bmpfile: file; s: longint; begin assign(bmpfile,filename); reset(bmpfile,1); blockread(bmpfile,h,sizeof(h)); {чтение заголовка} for i:= 0 to yim-1 do begin {построчное чтение} blockread(bmpfile,image^[(yim-i-1)*xim],xim); if (xim mod 4) <> 0 then blockread(bmpfile,s,4 - (xim mod 4)); end; close(bmpfile); for i ^= 0 to 255 do begin {преобразование палитры} pal^ := h.p shr 2; {синий} pal^ := h.p shr 2; {зеленый} pal^ := h.p shr 2; {красный} end; end; {чтение заголовка Bmp-файла} procedure ReadBMPheader(header:bmhptr;filename:string); var bmpfile:file; begin assign(bmpfile,filename); reset(bmpfile,1); blockread(bmpfile,header^,sizeof(header^)); close(bmpfile); end; end.

    Листинг 2

    { спрайта} procedure CreateSprite(s:string; x,y,dx,dy:integer); var f: file; {файл с изображением спрайта} begin getmem(Sprt.Img,sizeof(SpriteArrayType)); {выделяем память для спрайта} getmem(Sprt.Back,sizeof(SpriteArrayType)); {выделяем память для буфера} Readbmp(@(Sprt.Img^),Xsize,Ysize,@p,s); Sprt.x:= x; Sprt.y:= y; {задаем начальные значения} Sprt.dx:= dx; {координат и приращений} Sprt.dy:= dy; end;

    Операционная система Android, которая устанавливается на большинстве смартфонов и планшетов, имеет ряд преимуществ перед аналогами. Но в то же время из-за своей простоты «операционка» от Google имеет недостатки, а именно: в ней отсутствует довольно много API-функций, которые отвечают за взаимодействие с файлами, например, работу с изображениями в форме BMP. Ситуацию помогают исправить дополнительные приложения: с их помощью можно полноценно использовать ОС Андроид.

    Что такое формат BMP

    BMP (от англ. BitMap Picture) - это формат изображения, который разработан корпорацией Microsoft. Фактически это расширение файла представляет собой изображение, информация о котором содержится побитно. Минус этого формата состоит в том, что в нём отсутствует сжатие. Потому размер картинок, сохранённых в стандартном формате (jpeg, png и другие), может быть в десятки раз меньше, чем размер такой же картинки, но с расширением bmp. Кроме того, отличительной характеристикой BMP файла является считывание данных: картинка прогружается снизу вверх, а не сверху вниз, как у остальных форматов.

    Формат BMP разработан корпорацией Microsoft

    Чем открыть BMP на Андроиде

    К сожалению, стандартные инструменты Android не позволяют работать с форматом BMP, и даже открывать картинки для просмотра невозможно. Потому единственно правильным решением проблемы будет установка дополнительного программного обеспечения. Существуют специальные приложения, которые имеют в своём арсенале необходимые API-функции для работы с теми или иными форматами файлов.

    Fast Image Viewer

    • разработчик: TDF Software;
    • лицензия: бесплатная, есть платная версия с расширенными возможностями.

    Fast Image Viewer - это простая программа для просмотра всех форматов изображений (от BMP до TIFF). Для удобства пользования имеет собственный файловый менеджер, что упрощает навигацию по памяти устройства. Упор в функционале программы сделан на скорость работы. В приложение добавлены полезные мелочи: работа с картинками из MMC, а также обработка PDF файлов.

    Приложение Fast Image Viewer читает все форматы изображений и имеет ряд полезных функций

    Видео: как работать в приложении Fast Image Viewer

    Perfect Viewer

    • доступно для скачивания в Google Play;
    • разработчик: Rookie001;
    • лицензия: бесплатная.

    Программа Perfect Viewer - это отличный инструмент для просмотра разного рода изображений. В приложения вшита возможность просмотра всех популярных форматов, а также добавлен инструмент для более удобного чтения комиксов и книг. Существует возможность работы с файлами Google Drive, Dropbox, OneDrive.

    Приложение Perfect Viewer - это качественный и удобный инструмент для просмотра изображений

    Видео: как работать с приложением Perfect Viewer

    JPG Image Size Reducer

    • доступно для скачивания в Google Play;
    • разработчик: GamesGreh;
    • лицензия: бесплатная.

    Приложение JPG Image Size Reducer является конвертером и оптимизатором изображений. Основная особенность программы - уменьшение размера картинок, без потери качества. А это может существенно экономить место на вашем девайсе при хранении на нём больших массивов фотографий и документов. Приложение может работать со всеми видами картинок, конвертировать изображение из одного формата в другой.

    Приложение JPG Image Size Reducer позволяет просматривать, конвертировать и изменять размеры картинок

    File Viewer for Android

    • доступно для скачивания в Google Play;
    • разработчик: Sharpened Productions;
    • лицензия: бесплатная.

    File Viewer for Android - это файловый менеджер с огромным потенциалом для просмотра информации. В программу вшиты большинство функций для открытия практических всех возможных файлов: документы, изображения, архивы, медиафайлы и многое другое (всего считывается больше 100 форматов). К сожалению, приложению недостаёт качественного русского перевода, а также функций по сохранению изменений, которые вносят пользователи.

    Приложение File Viewer for Android - это мощный менеджер просмотра файлов

    Image Viewer

    • доступно для скачивания в Google Play;
    • разработчик: Byte Mobile;
    • лицензия: бесплатная.

    Программа Perfect Viewer создана для замены стандартного инструмента «Галерея». Приложение умеет искать и просматривать все изображения на девайсе, а также в интернете. Устанавливать картинки в качестве рабочего стола, настраивать яркость и контрастность. Работает со всеми основными форматами изображений (PNG, JPG, GIF, BMP, TGA и другие).

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

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

    BMP - bitmap - битовое отображение. Понятие "отображение" взято из математики. В математике отображение стоит очень близко к понятию функции. Для простоты считайте, что слово bitmap - это картинка (хотя это и не так).

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

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

    2 байта. Строка BM (в Windows).
    4 байта. Размер файла в байтах.

    2 байта. Зарезервированное поле. Нужно инициализировать нулём.
    4 байта. Адрес с которого начинается собственно изображение. Или по другому - смещение к началу изображения.

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

    BM
    14+40+100*100*4
    0
    0
    14+40

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

    Разберёмся со вторым полем. 14 - размер файлового заголовка. 40 - размер заголовка изображения (о нём ниже), 100*100 - количество пикселей. И кроме того, так как мы договорились, что каждый пиксель будет занимать 32 бита (4 байта), то нужно количество пикселей умножить на четыре.

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

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

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

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

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

    4 байта. Размер заголовка. Всегда задаётся 40 байт.
    4 байта. Ширина изображения в пикселях.
    4 байта. Высота изображения в пикселях.
    2 байта. Данное поле всегда содержит единицу.
    2 байта. Глубина цвета - количество битов в пикселе.
    4 байта. Метод сжатия.
    4 байта. Размер изображения. Здесь указывается размер непосредственно изображения - без учёта размера заголовков.
    4 байта. Горизонтальное разрешение в пикселях на метр (количество пикселей в одном метре).
    4 байта. Вертикальное разрешение в пикселях на метр (количество пикселей в одном метре).
    4 байта. Количество цветов в палитре.
    4 байта. Количество важных цветов в палитре.

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

    40
    100
    100
    1
    32
    0
    100*100*4
    2795
    2795
    0
    0

    Для метода сжатия мы выбрали 0 - без сжатия. Возможны другие значения. Из интересных: BI_JPEG (значение - 4) - сжатие используемое в jpeg-изображениях и BI_PNG (значение - 5) - сжатие используемое в png-изображениях.

    Горизонтальное и вертикальное разрешение мы задали равным 2795. В большинстве графических редакторов при создании изображения задаётся разрешение 71 пиксель на дюйм (ppi - pixel per inch)). Так вот, 71ppi это и есть 2795 пикселя на метр. Разрешение используется для придания изображению физической длины (для вывода на принтер например).

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

    Данные изображения 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-ух битными изображениями.

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

    Std::ofstream os("temp.bmp", std::ios::binary); unsigned char signature = { "B", "M" }; unsigned int fileSize = 14 + 40 + 100*100*4; unsigned int reserved = 0; unsigned int offset = 14 + 40; unsigned int headerSize = 40; unsigned int dimensions = { 100, 100 }; unsigned short colorPlanes = 1; unsigned short bpp = 32; unsigned int compression = 0; unsigned int imgSize = 100*100*4; unsigned int resolution = { 2795, 2795 }; unsigned int pltColors = 0; unsigned int impColors = 0; os.write(reinterpret_cast(signature), sizeof(signature)); os.write(reinterpret_cast(&fileSize), sizeof(fileSize)); os.write(reinterpret_cast(&reserved), sizeof(reserved)); os.write(reinterpret_cast(&offset), sizeof(offset)); os.write(reinterpret_cast(&headerSize), sizeof(headerSize)); os.write(reinterpret_cast(dimensions), sizeof(dimensions)); os.write(reinterpret_cast(&colorPlanes), sizeof(colorPlanes)); os.write(reinterpret_cast(&bpp), sizeof(bpp)); os.write(reinterpret_cast(&compression), sizeof(compression)); os.write(reinterpret_cast(&imgSize), sizeof(imgSize)); os.write(reinterpret_cast(resolution), sizeof(resolution)); os.write(reinterpret_cast(&pltColors), sizeof(pltColors)); os.write(reinterpret_cast(&impColors), sizeof(impColors)); unsigned char x,r,g,b; for (int i=0; i < dimensions; ++i) { for (int j=0; j < dimensions; ++j) { x = 0; r = rand() % 256; g = rand() % 256; b = rand() % 256; os.write(reinterpret_cast(&b),sizeof(b)); os.write(reinterpret_cast(&g),sizeof(g)); os.write(reinterpret_cast(&r),sizeof(r)); os.write(reinterpret_cast(&x),sizeof(x)); } } os.close();

    В результате выполнения данного кода в папке с вашим проектом (если вы запускали программу через отладчик (F5)) или в папке Debug решения (если вы запускали исполняемый файл.exe) будет создан файл temp.bmp, который можно открыть в любом простмотрщике картинок. Изображение состоит из цветных точек.