В чем разница между форматами jpeg, gif, png, raw, bmp, tiff?

Содержание:

Работаем с расширением на базе Windows

Если вы начинающий пользователь и не знаете чем открыть BMP формат для просмотра, конвертации и редактирования, то начните именно с этого списка.

Бесплатные

  • XnView
  • IrfanView
  • FastStone Image Viewer
  • Universal Viewer
  • JpegView

Платные

  • ACDSee
  • PhotoScape
  • Movavi пакетный фоторедактор
  • FastPictureViewer Pro

Какую из них выбрать лучше всего? Начните с IrfanView или XnView. Это бесплатные просмотрщики изображений, которые в принципе очень схожи, но тем не менее небольшая разница присутствует. Что теперь необходимо сделать?

  • Скачиваем программу;
  • Устанавливаем;
  • Делаем ассоциацию форматов.

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

Какие возможности доступны еще?

  • Убрать красные глаза;
  • Обрезка, поворот;
  • Изменение даты съемки;
  • Уменьшение и увеличение размера;
  • Добавление водяной печати и рамки;
  • Коррекция цветов;
  • Повышение резкости;
  • Наложение эффектов (пикселизация, размытие, тиснение и т.д.);
  • Работа с панорамными фото и т.п.

Доступна поддержка плагинов, которые выполняют широкий спектр задач:

  • Чтение файлов Djvu;
  • Воспроизведение видео и mp3;
  • Определение лиц;
  • Фильтры Photoshop;
  • Создание презентаций в .EXE или .SCR;
  • Захват экрана и т.д.

Block 1: File Type Data

This block is a BMP Header labeled as (the name comes from struct in Windows OS). This is the starting point of the BMP file and has 14 bytes width. This header contains a total of 5 fields of variable byte width. These are mentioned in the below table.

()

One thing to remember is that BMP uses the little-endian system to store a number (integer or float) when a number is larger than 1-byte.

For example, 312 decimal value in 2-bytes binary is and its hex byte representation is . Similarly, in 4-bytes, it is or .

But in the little-endian system (in modern computers), the least-significant byte (LSB) is stored first. Therefore, 312 decimal value in hex byte representation will be and BMP will construct binary value like .

Файлы BMP

В файлах BMP информация о цвете каждого пикселя кодируется 1, 4, 8,
16 или 24 бит (бит/пиксель). Числом бит/пиксель, называемым также глубиной
представления цвета, определяется максимальное число цветов в изображении.
Изображение при глубине 1 бит/пиксель может иметь всего два цвета, а при
глубине 24 бит/пиксель — более 16 млн. различных цветов.
 

Заголовок файла растровой графики (14 байт)
Сигнатура файла BMP (2 байт)
Размер файла (4 байт)
Не используется (2 байт)
Не используется (2 байт)
Местонахождение данных растрового массива (4 байт)
Информационный заголовок растрового массива
(40 байт)

Длина этого заголовка (4 байт)
Ширина изображения (4 байт)
Высота изображения (4 байт)
Число цветовых плоскостей (2 байт)
Бит/пиксель (2 байт)
Метод сжатия (4 байт)
Длина растрового массива (4 байт)
Горизонтальное разрешение (4 байт)
Вертикальное разрешение (4 байт)
Число цветов изображения (4 байт)
Число основных цветов (4 байт)
Таблица цветов (длина изменяется от 8 до 1024
байт)
Собственно данные растрового массива (длина
переменная)

На приведенной схеме показана структура типичного BMP-файла, содержащего
256-цветное изображение (с глубиной 8 бит/пиксель). Файл разбит на четыре
основные раздела: заголовок файла растровой графики, информационный заголовок
растрового массива, таблица цветов и собственно данные растрового массива.
Заголовок файла растровой графики содержит информацию о файле, в том числе
адрес, с которого начинается область данных растрового массива. В информационном
заголовке растрового массива содержатся сведения об изображении, хранящемся
в файле, например, его высоте и ширине в пикселях. В таблице цветов представлены
значения основных цветов RGB (красный, зеленый, синий) для используемых
в изображении цветов. Программы, считывающие и отображающие BMP-файлы,
в случае использования видеоадаптеров, которые не позволяют отображать
более 256 цветов, для точной цветопередачи могут программно устанавливать
такие значения RGB в цветовых палитрах адаптеров.

Формат собственно данных растрового массива в файле BMP зависит от числа
бит, используемых для кодирования данных о цвете каждого пикселя. При 256-цветном
изображении каждый пиксель в той части файла, где содержатся собственно
данные растрового массива, описывается одним байтом (8 бит). Это описание
пикселя не представляет значений цветов RGB, а служит указателем для входа
в таблицу цветов файла. Таким образом, если в качестве первого значения
цвета RGB в таблице цветов файла BMP хранится R/G/B=255/0/0, то значению
пикселя 0 в растровом массиве будет поставлен в соответствие ярко-красный
цвет. Значения пикселей хранятся в порядке их расположения слева направо,
начиная (как правило) с нижней строки изображения. Таким образом, в 256-цветном
BMP-файле первый байт данных растрового массива представляет собой индекс
для цвета пикселя, находящегося в нижнем левом углу изображения; второй
байт представляет индекс для цвета соседнего справа пикселя и т. д. Если
число байт в каждой строке нечетно, то к каждой строке добавляется дополнительный
байт, чтобы выровнять данные растрового массива по 16-бит границам.

Не все файлы BMP имеют структуру, подобную показанной на схеме. Например,
файлы BMP с глубиной 16 и 24 бит/пиксель не имеют таблиц цветов; в этих
файлах значения пикселей растрового массива непосредственно характеризуют
значения цветов RGB. Также могут различаться внутренние форматы хранения
отдельных разделов файла. Например, информация растрового массива в некоторых
16 и 256-цветных BMP-файлах может сжиматься посредством алгоритма RLE,
который заменяет последовательности идентичных пикселей изображения на
лексемы, определяющие число пикселей в последовательности и их цвет. В
Windows допускается работа с BMP-файлами стиля OS/2, в которых используются
различные форматы информационного заголовка растрового массива и таблицы
цветов.

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

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

Немного о формате

Представленный ниже код несколько отличается от итогового. Сделано это для того, чтобы читателю было проще понять алгоритм работы программы.

Шапка

В первых 14 байтах располагается «шапка» файла. Перед любыми действиями, следует сверить формат открытого файла с необходимым нам, для этого нужно прочитать первые 2 байта и сравнить их с 0x4D42. Больше информация из «шапки» нам не понадобится.

Заголовок

После «шапки» идёт заголовок с информацией о bitmap файле. В первых 2 байтах находятся данные о длине этого заголовка, эту информацию также можно использовать для определения версии формата. Также нам понадобится информация о высоте и ширине изображения, количестве бит на один пиксель и цветовые маски.

Чтение файла

Читать файл нужно последовательно и побайтово. Для удобного осуществления этого подойдёт следующая шаблонная функция:

template <typename Type>
void read(std::ifstream &fp, Type &result, std::size_t size) {
    fp.read(reinterpret_cast<char*>(&result), size);
}
Отступ

Одной из особенностей bmp формата является то, что количество байт в строке обязательно должно быть кратно 4, недостающие пиксели добавляются в конец каждого пиксельного ряда. То есть, если наше изображение имеет 24 бита на пиксель и ширину 2 пикселя, то, так как 24 * 2 бита — это 6 байт (48 / 8 бит = 6 байт), полученный отступ будет равняться 2 байтам. Определить размер отступа можно следующим образом:

int padding = ((4 - (width * (bitCount  8)) % 4) & 3;
Цветовая маска

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

int colorsCount = bitCount >> 3;
if (colorsCount < 3) {
    colorsCount = 3;
}
 
int bitsOnColor = bitCount  colorsCount;
int maskValue = (1 << bitsOnColor) - 1;
 
if (redMask ==  || greenMask ==  || blueMask == ) {
    redMask = maskValue << (bitsOnColor * 2);
    greenMask = maskValue << bitsOnColor;
    blueMask = maskValue;
}

Чтобы извлечь цвет по маске, нужно использовать логическое И (конъюнкция) и, после этого, сместить полученный результат вправо на количество бит равных количеству нулей справа от маски.

Функция извлечения битов будет выглядеть таким образом:

unsigned char bitextract(const unsigned int byte, const unsigned int mask) {
    if (mask == ) {
        return ;
    }
 
    // определение количества нулевых бит справа от маски
    int
        maskBufer = mask,
        maskPadding = ;
 
    while (!(maskBufer & 1)) {
        maskBufer >>= 1;
        maskPadding++;
    }
 
    // применение маски и смещение
    return (byte & mask) >> maskPadding;
}

Код записи будет выглядеть таким образом:

unsigned int bufer;
read(fileStream, bufer, bitCount  8);
 
rgbRed = bitextract(bufer, biRedMask);
rgbGreen = bitextract(bufer, biGreenMask);
rgbBlue = bitextract(bufer, biBlueMask);
rgbReserved = bitextract(bufer, biAlphaMask);

Как преобразовать bmp формат в другие форматы

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

  • co/ru/bmp-jpg/;
  • com/ru/convert-format/bmp-to-pdf/;
  • online-convert.com/ru/convert-to-ico.

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

Итак, чтобы преобразовать в них bmp формат, загружаете туда картинку в данном формате. Далее выбираете на сервисе нужный формат для конвертации. После чего нажимаете кнопку «Начать конвертирование» или «Конвертация».

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

Устранение неполадок при открытии файлов BMP

Распространенные проблемы открытия BMP

Adobe Illustrator CC нет

При попытке загрузить BMP-файл появляется сообщение, например «Не удается открыть BMP-файлы». Как правило, это происходит в %%os%%, поскольку Adobe Illustrator CC не установлен на вашем компьютере. ОС не будет знать, что делать с вашим BMP-файлом, поэтому двойной щелчок для загрузки файла не работает.

Наконечник: Если у вас не установлен Adobe Illustrator CC, и вы знаете другую программу, чтобы открыть файл BMP, вы можете попробовать открыть его, выбрав из программ, перечисленных в разделе «Показать приложения».

Adobe Illustrator CC требует обновления

В некоторых случаях может быть более новая (или более старая) версия файла Bitmap Image File, которая не поддерживается установленной версией приложения. Загрузите последнюю версию Adobe Illustrator CC с веб-сайта Adobe Systems Incorporated, чтобы убедиться, что у вас установлена правильная версия. Эта проблема в основном связана с наличием версии файла Bitmap Image File, которая была создана более новой версией Adobe Illustrator CC, чем то, что вы установили на вашем компьютере.

Совет . Исследуйте BMP-файл, щелкнув правой кнопкой мыши и выбрав «Свойства», чтобы найти подсказки о том, какая версия вам нужна.

Сводка. Наличие правильной версии Adobe Illustrator CC на компьютере может вызвать проблемы с открытием BMP-файлов.

Предполагая, что у вас установлена правильная версия Adobe Illustrator CC, другие проблемы могут помешать вам открывать BMP-файлы. Если у вас по-прежнему возникают проблемы с открытием BMP-файлов, могут возникнуть другие проблемы, препятствующие открытию этих файлов. К числу этих вопросов относятся:

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

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

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

История

Эта история изначально не являлась крипи и имеет вполне реальное происхождение. Однако многие её события были утрачены за давностью лет, оставляя место только легенде, красивой и страшной…

Всё началось в теперь уже далёком 1992 году в одном небольшом американском городке. Там проживал человек, который долгие годы интересовался загадкой Атлантиды. Всю свою жизнь он собирал литературу, фотографии и фильмы, посвящённые этому вопросу. Не будучи образованным историком или археологом (по некоторым данным он работал автослесарем), он тем не менее знал об этой загадке чуть ли не больше, чем учёные мужи.

Все свои свободные средства этот любитель-исследователь тратил на артефакты (описание или фото), касающиеся исчезнувшего континента. И однажды ему в руки попала фотография некой каменной стелы с необычным узором. В течении долгих лет он изучал этот узор, пока в 1998 году не пришёл к выводу, что на стеле изображён «календарь атлантов». При помощи знакомого программиста он сделал программу, воспроизводящую алгоритм календаря и воссоздал благодаря компьютерной графики этот самый «календарь». В итоге получился небольшой графический файл Atla.bmp.

Это небольшое рельефное изображение некой мозаики, состоящей из чёрточек разной толщины и структуры, расположенных под прямым углом друг к другу. По утверждению автора — эти чёрточки, графический код математического закона, к которому может быть сведено любое событие нашего мира. То есть — при помощи этого «календаря» возможно предсказать любое событие…

Странно, но это тот самый редкий случай, когда информацию, которой поделился этот человек не осмеяли, а заинтересовались видные математики и учёные. Результат их изысканий так и остался неизвестным, но в 1999 году исследователь Атлантиды выложил графическое изображение «календаря» в сеть.

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

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

История получила продолжение в 2004 году, когда некий молодой математик из Европы стал утверждать в сети, что расшифровал код «календаря» и знает или может узнать ход любого события в нашем мире. Через две недели после его первого сообщения, где предсказал точное число банкротства сети известных магазинов одежды, он должен был дать интервью местному каналу телевидения. Но за пару дней до этого был убит выстрелом в голову при выходе из своего дома. Примечательно, что его жильё было взломано и перевёрнуто вверх дном. А все материалы, касающиеся исследования «календаря», исчезли. Убийство не раскрыто и по сей день.

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

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

Fast Image Viewer

  • доступно для скачивания в Google Play;
  • разработчик: 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 и другие).

Приложение Image Viewer заменяет галерею и имеет расширенный функционал

Photo Viewer

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

Photo Viewer — это приложение для удобного просмотра изображений на смартфоне. Программа имеет очень простой и интуитивный интерфейс, который поймёт каждый. Поддержка основных форматов: JPG, BMP, GIF, TIFF, PNG. Для работы приложение потребляет минимум энергии, что также является плюсом.

Приложение Photo Viewer — удобный инструмент просмотра изображений на Android

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

Чем открыть этот формат

Данный формат поддерживают множество приложений, как от сторонних разработчиков, так и от разработчиков Microsoft.

Вариант 1: FastStone Image Viewer

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

  1. Открываем утилиту. Нажимаем на «Файл», а затем на «Открыть».

  2. Появляется новое окно, в котором необходимо выбрать нужный BMP-файл и щёлкнуть на «Открыть».

  3. В левом нижнем углу находится область предпросмотра, в которой располагается выбранное изображение. Содержимое директории можно отыскать в правой части экрана. Для того чтобы открыть изображение на полный экран нужно кликнуть по файлу в каталоге расположения. Готово!

Вариант 2: IrfanView

  1. Запускаем утилиту. Кликаем на «Файл», а затем на «Открыть».

  2. В появившемся окне открытия сначала нужно переместиться в директорию с нужной картинкой, а затем выбрать ее нажав на «Открыть». Готово!

Вариант 3: XnView

  1. Включаем программу и нажимаем на «Файл», а затем на «Открыть».

  2. В новом окне находим нужный файл с изображением и нажимаем на кнопку «Открыть».

  3. Изображение открылось в новом окошке самой утилиты. Готово!

Вариант 4: Adobe Photoshop

Рассмотрим, как открыть данный формат в растровом графическом редакторе Фотошоп.

Заходим в Фотошоп и стандартно нажимаем «Файл» – «Открыть».

Отобразилось окно открытия. Находим нужное BMP-изображение и щёлкаем на «Открыть».

Появляется окно с информацией о том, что отсутствует внедренный цветовой профиль

Не обращаем на это внимание, ставим флажок на позицию «Оставить без изменений» и кликаем на кнопку «ОК». Готово! Изображение открылось.

Вариант 5: Gimp

  1. Заходим в программу и идем по следующему пути: «Файл»«Открыть».

  2. Находим необходимый фал и нажимаем на «Открыть».

  3. Готово! Изображение открылось в самой программе.

Данный вариант намного проще предыдущего, так как Гимп, в отличии от Фотошопа, является бесплатным графическим редактором.

Вариант 6: OpenOffice

  1. Запускаем бесплатный пакет OpenOffice. В меню программы нажимаем на кнопку «Открыть…».

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

  3. Готово! Изображение открыто.

Вариант 7: Google Chrome

BMP-формат, также открывается различными браузерами.

  1. Заходим в Google Chrome. Зажимаем сочетание клавиш Ctrl+O.
  2. Появляется окно открытия, через которое находим изображение и кликаем на «Открыть».
  3. Готово! Рисунок появился в окошке самого браузера.

Вариант 8: Universal Viewer

  1. Запускаем универсальный просмотрщик изображений, а затем стандартно идем по пути: «Файл»«Открыть».

  2. Через окно поиска находим нужное изображение в данном формате и кликаем на кнопку «Открыть».

  3. Рисунок открылся.

Вариант 9: Paint

Стоит отметить, что изображение в и стандартными средствами операционной системы.

  1. Открываем «Пуск», переходим в «Стандартные», а затем заходим в Paint.

  2. Нажимаем на иконку, находящуюся левее кнопки «Главная».

  3. Кликаем на кнопку «Открыть».

  4. В новом окне находим файл с нужным изображением и кликаем на «Открыть».

  5. Картинка появилась в окне графического редактора. Готово!

Вариант 10: Средство просмотра фотографий Windows

  1. Заходим в папку с BMP-изображением и открываем «Проводник». Кликаем ПКМ по объекту и в появившемся меню выбираем «Открыть с помощью».
  2. Переходим на элемент «Просмотр фотографий Windows».

  3. Изображение появилось на экране. Готово!

Теперь Вы знаете огромное количество способов, при помощи которых можно открыть изображение BMP-формата.

Пять шагов для открытия файлов BMP

Если у вас есть файлы BMP, которые нужно открыть, но вы не знаете, как это сделать, выполните следующие действия.

Установить необязательные продукты — File Magic (Solvusoft) | EULA | Privacy Policy | Terms | Uninstall

Шаг 1: Дважды щелкните файл.

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

Шаг 2: Ищите другую программу.

Если файл BMP не открывается при двойном щелчке по нему, у вас, вероятно, нет нужной программы на вашем компьютере. Существует несколько популярных программ, которые можно использовать для открытия файла BMP. Попробуйте использовать одну из трех наиболее распространенных программ: Infinity Game Engine Palette Information, Award AWBM BIOS Bitmap или Windows OS/2 Bitmap Graphics.

Шаг 3: Проверьте тип файла.

Если ни одна из вышеперечисленных программ не откроет ваш файл BMP, проверьте тип файла, чтобы убедиться, что у вас есть программа, которая может открыть этот тип файла. Большинство файлов BMP составляют Raster Image Files, но есть шанс, что это может быть другой тип.

Вы можете найти эту информацию в свойствах файла. На компьютере с Windows просто щелкните файл правой кнопкой мыши и щелкните свойства и найдите тип файла в разделе «Тип файла». На компьютере Mac щелкните правой кнопкой мыши файл и нажмите «Дополнительная информация» и найдите тип файла в разделе «Вид».

Шаг 4: Получите помощь от разработчика.

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

Название программы Имя разработчика
Infinity Game Engine Palette Information BioWare Corp.
Award AWBM BIOS Bitmap Phoenix Technologies LTD
Windows OS/2 Bitmap Graphics PC Software Company

Шаг 5: Найти универсальный просмотрщик файлов.

Самый простой способ открыть файл BMP или любой файл — использовать универсальный просмотрщик файлов, например File Magic (Download). Вы можете использовать его, чтобы открыть много разных форматов файлов. Если он несовместим, файл будет просто открыт в двоичном формате.

Рекомендуем

Установить необязательные продукты — File Magic (Solvusoft) | EULA | Privacy Policy | Terms | Uninstall

Открывает все ваши файлы, какМАГИЯ! 1

Установить необязательные продукты — File Magic (Solvusoft)EULA | Privacy Policy | Terms | Uninstall

1 Типы файлов, которые не поддерживаются, могут быть открыты в двоичном формате.

Чтение bmp в C++

Опубликовано 13.12.2012 в 15:03

UPDATED: Здесь более правильный вариант программы!

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

Решение этой задачи покажется очень простым, если знать спецификацию bmp формата. Байты с цветами каждого пиксела начинаются с 54-го байта и при считывании заголовков bmp формата, указатель сместился на нужную нам позицию. Считать байт можно функцией getc(FILE *stream). Цвета каждого пиксела находятся в формате BGR(не привычный нам RGB). Остается прочитать по порядку каждый байт и записать все значения в двумерный массив.

Файл main.h

#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
 
 
typedef struct
{
    unsigned int    bfType;
    unsigned long   bfSize;
    unsigned int    bfReserved1;
    unsigned int    bfReserved2;
    unsigned long   bfOffBits;
} BITMAPFILEHEADER;
 
typedef struct
{
    unsigned int    biSize;
    int             biWidth;
    int             biHeight;
    unsigned short  biPlanes;
    unsigned short  biBitCount;
    unsigned int    biCompression;
    unsigned int    biSizeImage;
    int             biXPelsPerMeter;
    int             biYPelsPerMeter;
    unsigned int    biClrUsed;
    unsigned int    biClrImportant;
} BITMAPINFOHEADER;
 
typedef struct
{
    int   rgbBlue;
    int   rgbGreen;
    int   rgbRed;
    int   rgbReserved;
} RGBQUAD;
 
 
static unsigned short read_u16(FILE *fp);
static unsigned int   read_u32(FILE *fp);
static int            read_s32(FILE *fp);
 
#endif // MAIN_H_INCLUDEDs

Файл main.cpp

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "main.h"
 
int main()
{
    FILE * pFile = fopen("file.bmp", "rb");
 
    // считываем заголовок файла
    BITMAPFILEHEADER header __attribute__((unused));
 
    header.bfType      = read_u16(pFile);
    header.bfSize      = read_u32(pFile);
    header.bfReserved1 = read_u16(pFile);
    header.bfReserved2 = read_u16(pFile);
    header.bfOffBits   = read_u32(pFile);
 
    // считываем заголовок изображения
    BITMAPINFOHEADER bmiHeader;
 
    bmiHeader.biSize          = read_u32(pFile);
    bmiHeader.biWidth         = read_s32(pFile);
    bmiHeader.biHeight        = read_s32(pFile);
    bmiHeader.biPlanes        = read_u16(pFile);
    bmiHeader.biBitCount      = read_u16(pFile);
    bmiHeader.biCompression   = read_u32(pFile);
    bmiHeader.biSizeImage     = read_u32(pFile);
    bmiHeader.biXPelsPerMeter = read_s32(pFile);
    bmiHeader.biYPelsPerMeter = read_s32(pFile);
    bmiHeader.biClrUsed       = read_u32(pFile);
    bmiHeader.biClrImportant  = read_u32(pFile);
 
 
    RGBQUAD **rgb = new RGBQUAD*bmiHeader.biWidth;
    for (int i = ; i < bmiHeader.biWidth; i++) {
        rgbi = new RGBQUADbmiHeader.biHeight;
    }
 
    for (int i = ; i < bmiHeader.biWidth; i++) {
        for (int j = ; j < bmiHeader.biHeight; j++) {
            rgbij.rgbBlue = getc(pFile);
            rgbij.rgbGreen = getc(pFile);
            rgbij.rgbRed = getc(pFile);
        }
 
        // пропускаем последний байт в строке
        getc(pFile);
    }
 
    // выводим результат
    for (int i = ; i < bmiHeader.biWidth; i++) {
        for (int j = ; j < bmiHeader.biHeight; j++) {
            printf("%d %d %d\n", rgbij.rgbRed, rgbij.rgbGreen, rgbij.rgbBlue);
        }
        printf("\n");
    }
 
    fclose(pFile);
    return ;
}
 
 
static unsigned short read_u16(FILE *fp)
{
    unsigned char b0, b1;
 
    b0 = getc(fp);
    b1 = getc(fp);
 
    return ((b1 << 8) | b0);
}
 
 
static unsigned int read_u32(FILE *fp)
{
    unsigned char b0, b1, b2, b3;
 
    b0 = getc(fp);
    b1 = getc(fp);
    b2 = getc(fp);
    b3 = getc(fp);
 
    return ((((((b3 << 8) | b2) << 8) | b1) << 8) | b0);
}
 
 
static int read_s32(FILE *fp)
{
    unsigned char b0, b1, b2, b3;
 
    b0 = getc(fp);
    b1 = getc(fp);
    b2 = getc(fp);
    b3 = getc(fp);
 
    return ((int)(((((b3 << 8) | b2) << 8) | b1) << 8) | b0);
}
Добавить комментарий

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

Adblock
detector