Windows bitmap image что это

Обновлено: 02.07.2024

Растровое изображение Windows (BMP) или независимое от устройства растровое изображение (DIB) - это формат двухмерной растровой графики , который был разработан для операционных систем Microsoft Windows и OS / 2 и представлен в Microsoft Windows 3.0 , появившейся в 1990 году. Расширение файла - .bmp , реже .dib .

Оглавление

Особенности

БМП бывают трех разных версий. Большинство файлов BMP имеют версию 3; нет предыдущих версий. Более поздние версии 4 и 5 встречаются крайне редко.

Окна растровых изображений (версия 3) позволяют глубину цвета в 1, 4, 8, 16, 24 или 32 бита на пиксел (BPP = бит на пиксель, бит на пиксель), хотя не все биты на самом деле должны быть использованы с 16 и 32 бит на пиксел . Альфа-каналы , цветокоррекция и метаданные не поддерживаются. Растровые изображения Windows хранятся в несжатом виде или без потерь со сжатием RLE (кодирование длины серий ). Это довольно слабая процедура, поэтому файлы BMP намного больше, чем другие форматы, такие как PNG, и редко используются для Интернета . Формат BMP для этого имеет относительно простую структуру. BMP особенно широко распространены в среде Windows; Обычное графическое программное обеспечение поддерживает формат без каких-либо проблем (за исключением более экзотических значений глубины цвета 16 и 32 бит на пиксель ).

Теоретически максимальная ширина / высота изображения составляет 2 147 483 647 пикселей (2 31 - 1). На практике многие декодеры принимают только значительно более низкие значения.

Формат файла (версия 3)

Файлы BMP состоят из трех частей: заголовка файла, информационного блока и данных изображения (см. Диаграмму справа).

Далее WORD обозначает 16-разрядное целое число без знака , DWORD - 32-разрядное целое число без знака, а LONG - 32-разрядное целое число, закодированное с дополнением до двух . BMP использует соглашение с прямым порядком байтов .

Заголовок файла

Он не всегда имеет значение 54 (он получается из 14-байтового заголовка + 40-байтового информационного блока) и поэтому должен считываться динамически, потому что в противном случае изображение может отображаться неправильно.

Информационный блок

Свойства растрового изображения

Информационный блок начинается со следующей структуры, которая содержит свойства растрового изображения

  • Если значение положительное, растровое изображение является так называемым растровым изображением «снизу вверх» (данные изображения начинаются с самой низкой и заканчиваются самой верхней строкой изображения). Это самый распространенный вариант.
  • Если значение отрицательное, то битовая карта является битовой картой «сверху вниз» (данные изображения начинаются с самой верхней и заканчиваются самой нижней строкой изображения).
  • 0 ( BI_RGB ): данные изображения не сжаты .
  • 1 ( BI_RLE8 ): данные изображения кодируются по длине серии 8 бит на пиксель . Разрешено, только если biBitCount = 8 и biHeight положительный.
  • 2 ( BI_RLE4 ): данные изображения кодируются по длине серии 4 бит на пиксель . Разрешено, только если biBitCount = 4 и biHeight положительный.
  • 3 ( BI_BITFIELDS ): данные изображения не сжимаются и кодируются определенным пользователем способом (с использованием цветных масок). Разрешено, только если biBitCount = 16 или 32.
  • Если biCompression = BI_RGB : либо 0, либо размер данных изображения в байтах.
  • В противном случае: размер данных изображения в байтах.
  • Если biBitCount = 1: 0.
  • Если biBitCount = 4 или 8: количество записей в таблице цветов; 0 означает максимальное число (2, 16 или 256).
  • В противном случае: количество записей в таблице цветов (0 = нет таблицы цветов). Даже если в этом случае в этом нет необходимости, можно указать таблицу цветов, рекомендованную для квантования цветов .
  • Если biBitCount = 1, 4 или 8: количество всех цветов, используемых в изображении; 0 означает все цвета в таблице цветов.
  • Иначе:
    • Если есть таблица цветов и она содержит все цвета, использованные в изображении: их количество.
    • В противном случае: 0.

    Цветные маски

    Если biCompression = BI_BITFIELDS , то следуют 3 DWORD секунды, которые содержат битовые маски для красного, зеленого и синего значений. Установленные биты означают, что в данных пикселя этот бит используется для соответствующего цветового канала. Должны быть соблюдены следующие условия:

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

    Таблица цветов

    • Если biClrUsed = 0:
      • Если biBitCount = 1, 4 или 8: следует таблица цветов с 2 записями biBitCount .
      • В противном случае: таблицы цветов нет.

      Каждая запись в таблице цветов имеет размер 4 байта и содержит по одному байту для синего, зеленого и красного компонентов, а также байт, установленный в 0 (в этом порядке!).

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

      Данные изображения начинаются со смещения bfOffBits. Размер данных изображения составляет приблизительно (применяется только к ширине изображения, которая может быть разделена на 4) biWidth × biHeight × biBitCount / 8, если biCompression = BI_RGB , в противном случае biSizeImage.

      Данные изображения сохраняются построчно. Если biHeight положительно, данные изображения начинаются с последней и заканчиваются первой строкой изображения, в противном случае все наоборот. При использовании BI_BITFIELDS и BI_RGB длина каждой строки кратна 4 байтам и при необходимости дополняется нулевыми байтами.

      Дальнейший формат данных изображения зависит от значения поля biCompression:

      • BI_BITFIELDS
      • BI_RGB
      • BI_RLE8 и BI_RLE4

      Плюсы и минусы

      Преимущества растровых изображений:

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

      К недостаткам растровых изображений можно отнести:

      • Большой размер файла по сравнению со сжатыми форматами.
      • Если выбрано обычное расположение строк, изображение будет перевернутым по сравнению с последовательностью строк на обычном экране.

      Версии 4 и 5

      В Windows 95 и Windows 98 Microsoft представила новые версии 4 и 5 формата BMP, которые включают альфа-каналы и цветокоррекцию и могут использоваться в качестве формата контейнера для файлов PNG и JFIF . Однако эти новые форматы редко встречаются в виде отдельных файлов и редко поддерживаются приложениями; они с большей вероятностью будут использоваться в качестве внутреннего формата в программах Windows.

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

      Предоставляет специальный объект BitmapSource, оптимизированный для загрузки изображений с помощью языка XAML.

      Примеры

      В следующих примерах кода показано, как использовать BitmapImage в XAML (XAML) и коде.

      Комментарии

      BitmapImage в основном существует для поддержки синтаксиса XAML (XAML) и предоставляет дополнительные свойства для загрузки битовой карты, которые не определяются BitmapSource .

      BitmapImage реализует ISupportInitialize интерфейс для оптимизации инициализации нескольких свойств. Изменения свойств происходят только во время инициализации объекта. Вызовите метод BeginInit , чтобы сообщить, что инициализация началась, и EndInit сообщить о завершении инициализации. После инициализации изменения свойств не учитываются.

      BitmapImage объекты, созданные с помощью BitmapImage конструктора, автоматически инициализируются, а изменения свойств игнорируются.

      Конструкторы

      Инициализирует новый экземпляр класса BitmapImage.

      Инициализирует новый экземпляр BitmapImage, используя предоставленный Uri.

      Инициализирует новый экземпляр BitmapImage с изображением, источником коего является Uri, и кэшируемого в соответствии с предоставленным RequestCachePolicy.

      Идентифицирует свойство зависимостей CacheOption.

      Идентифицирует свойство зависимостей CreateOptions.

      Идентифицирует свойство зависимостей DecodePixelHeight.

      Идентифицирует свойство зависимостей DecodePixelWidth.

      Идентифицирует свойство зависимостей Rotation.

      Идентифицирует свойство зависимостей SourceRect.

      Идентифицирует свойство зависимостей StreamSource.

      Идентифицирует свойство зависимостей UriCachePolicy.

      Идентифицирует свойство зависимостей UriSource.

      Свойства

      Получает или задает значение, представляющее базовый Uri текущего контекста BitmapImage.

      Получает или задает BitmapCacheOption для использования данным экземпляром BitmapImage.

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

      Возвращает или задает высоту декодированного изображения в пикселях.

      Возвращает или задает ширину декодированного изображения в пикселях.

      Возвращает объект DependencyObjectType , который заключает в оболочку тип CLR данного экземпляра.

      Возвращает объект Dispatcher, с которым связан этот объект DispatcherObject.

      Возвращает горизонтальные точки на дюйм изображения (DPI).

      Получает вертикальные точки на дюйм изображения (DPI).

      Возвращает исходный формат PixelFormat данных растрового изображения.

      Возвращает значение, которое указывает, сопоставлены ли один или несколько объектов AnimationClock любому из свойств зависимостей этого объекта.

      Возвращает высоту исходного растрового изображения в единицах, не зависящих от устройства (1/1/96 дюйма на единицу).

      Получает значение, указывающее, производит ли BitmapImage в данный момент загрузку содержимого.

      Получает значение, указывающее, доступен ли объект для изменения в настоящее время.

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

      Не поддерживается. BitmapImage не поддерживает свойство Metadata и создает исключение NotSupportedException.

      Получает цветовую палитру растрового изображения, если она задана.

      Получает высоту растрового изображения в пикселях.

      Получает ширину растрового изображения в пикселях.

      Получает или задает угол для поворота BitmapImage.

      Получает или задает прямоугольник, который используется в качестве источника для BitmapImage.

      Получает или задает исходный поток BitmapImage.

      Получает или задает источник Uri для BitmapImage.

      Возвращает ширину точечного рисунка в единицах, независимых от устройства (1/1/96 дюйма на единицу).

      Методы

      Применяет AnimationClock к заданному DependencyProperty. Если свойство уже анимировано, используется эстафетное поведение SnapshotAndReplace.

      Применяет AnimationClock к заданному DependencyProperty. Если свойство уже является анимированным, используется указанное поведение HandoffBehavior.

      Применяет анимацию к указанному DependencyProperty. Анимация начинается при отрисовке следующего кадра. Если указанное свойство уже анимировано, используется поведение перемещения SnapshotAndReplace.

      Применяет анимацию к указанному DependencyProperty. Анимация начинается при отрисовке следующего кадра. Если указанное свойство уже является анимированным, используется указанное поведение HandoffBehavior.

      Сигнализирует о начале инициализации объекта BitmapImage.

      Определяет, имеет ли вызывающий поток доступ к этому DispatcherObject.

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

      Очищает локальное значение свойства. Очищаемое свойство задается идентификатором DependencyProperty.

      Очищает локальное значение доступного только для чтения свойства. Очищаемое свойство задается ключом DependencyPropertyKey.

      Создает изменяемый клон данного объекта BitmapImage, делая глубокие копии значений этого объекта.

      Делает этот экземпляр глубокой копией указанного объекта BitmapSource. При копировании свойств зависимостей этот метод копирует ссылки на ресурсы и привязки данных (которые могут уже не быть разрешимыми), но не копирует анимации и их текущие значения.

      Создает модифицируемый клон данного объекта BitmapImage, делая глубокие копии текущих значений этого объекта. Ссылки на ресурсы, привязки данных и анимации не копируются, но копируются их текущие значения.

      Делает этот экземпляр изменяемой глубокой копией указанной коллекции BitmapSource с использованием текущих значений свойств. Ссылки на ресурсы, привязки данных и анимации не копируются, но копируются их текущие значения.

      Приводит значение указанного свойства зависимостей. Это осуществляется путем вызова какой-либо функции CoerceValueCallback, указанной в метаданных свойства зависимостей, которое существует в вызывающем объекте DependencyObject.

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

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

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

      Инициализирует новый экземпляр класса Freezable.

      Если реализуется в производном классе, создает новый экземпляр производного класса Freezable.

      Сигнализирует о завершении инициализации объекта BitmapImage.

      Определяет, является ли указанный DependencyObject эквивалентом текущего DependencyObject.

      Делает текущий объект неизменяемым и присваивает его свойству IsFrozen значение true .

      Делает экземпляр BitmapSource или производный класс постоянным.

      Возвращает не анимированное значение указанного объекта DependencyProperty.

      Создает фиксированную копию объекта Freezable, используя базовые (не анимационные) значения свойств. Так как копия является фиксированной, копируются только ссылки на фиксированные вложенные объекты.

      Делает этот экземпляр клоном указанного объекта BitmapSource.

      Создает фиксированную копию объекта Freezable с использованием текущих значений свойств. Так как копия является фиксированной, копируются только ссылки на фиксированные вложенные объекты.

      Делает этот экземпляр зафиксированным клоном указанного объекта BitmapSource. Ссылки на ресурсы, привязки данных и анимации не копируются, но копируются их текущие значения.

      Возвращает хэш-код для данного объекта DependencyObject.

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

      Возвращает объект Type для текущего экземпляра.

      Возвращает текущее действующее значение свойства зависимостей в этом экземпляре DependencyObject.

      Повторно вычисляет действующее значение для указанного свойства зависимостей.

      Создает неполную копию текущего объекта Object.

      Вызывается при изменении текущего объекта Freezable.

      Обеспечивает создание соответствующих указателей контекста для элемента данных типа DependencyObjectType, который был только что задан.

      этот элемент поддерживает инфраструктуру Windows Presentation Foundation (WPF) и не предназначен для непосредственного использования из кода.

      Переопределяет реализацию DependencyObject для OnPropertyChanged(DependencyPropertyChangedEventArgs), чтобы также вызвать любой обработчик Changed в ответ на изменение свойства зависимостей типа Freezable.

      Возвращает локальное значение свойства зависимостей, если таковое существует.

      Обеспечивает доступ к Freezable из допустимого потока. Наследники объекта Freezable должны вызывать данный метод в начале любого API, который считывает элементы данных, не являющиеся свойствами зависимостей.

      Задает значение свойства зависимостей, не меняя источник значения.

      Задает локальное значение свойства зависимостей, указанного идентификатором этого свойства.

      Задает локальное значение свойства зависимости только для чтения, определяемое идентификатором DependencyPropertyKey свойства зависимостей.

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

      Создает строковое представление данного объекта на базе языка и региональных параметров.

      Создает строковое представление данного объекта на основе переданного объекта IFormatProvider. Если значение поставщика равно null , используется CurrentCulture.

      Обеспечивает наличие у вызывающего потока доступ к этому DispatcherObject.

      Вызывает событие Changed для объекта Freezable и вызывает его метод OnChanged(). Классы, производные от Freezable, должны вызывать этот метод в конце любого API, который изменяет члены класса, не сохраненные в виде свойств зависимостей.

      Проверяет, что объект Freezable не заморожен и доступ к нему осуществляется из допустимого контекста потока. Наследники объекта Freezable должны вызывать данный метод в начале любого API, который выполняет запись в элементах данных, не являющихся свойствами зависимостей.

      События

      Происходит, когда изменяется класс Freezable или объект, который входит в его состав.

      Происходит при неудаче загрузки изображения вследствие повреждения его заголовка.

      Происходит при полном завершении загрузки содержимого точечного рисунка.

      Происходит при невозможности загрузки содержимого точечного рисунка.

      Происходит при изменении состояния хода загрузки содержимого точечного рисунка.

      BMP тип изображений

      Bitmap – один из первых растровых форматов изображений, который используется до сегодняшнего дня. Этот термин происходит от терминологии компьютерного программирования. Битовая карта означает карту битов или массив битов. Существует также еще один термин, называемый pixmap, который относится к карте пикселей. Каждый пиксель может хранить несколько цветов. Термин растровое изображение используется для обозначения одного бита на пиксель, а термин растровое изображение используется для нескольких бит на пиксель. Проще говоря, битовая карта - это пространство отображения и цвет каждого бита или пикселя.

      Преимущества и недостатки BMP

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

      Преимущества формата BMP

      Положительные характеристики формата BMP для WEB-дизайна заключаются в следующем:

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

      Однако BMP-файлы имеют и недостатки

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

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

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

      Формат bmp что это такое, описание формата

      формат bmp что это такое

      Здравствуйте, друзья! Во время продвижения ресурсов в Интернете, пользователи используют картинки с разными форматами. Это могут быть Jpeg, Png, Gif и другие форматы файлов, которые являются популярными, и часто используемыми.

      Но иногда приходится применять на практике другой формат картинок, который называется bmp. Он не на столько популярен среди пользователей Интернета, как предыдущие форматы изображений. В статье мы восполним пробел и рассмотрим вопрос, формат bmp что это такое? Разберем суть работы с этим форматом.

      Итак, bmp – это старый формат картинок, с помощью которого сохраняются только растровые изображения, а векторные нет. С английского языка слово переводится, как «Bitmap Picture» или BMP, что значит формат для хранения растровых изображений. Данный формат для файлов разработала компания Майкрософт (Скрин 1).

      что такое бмп формат

      Также он включает в себя ряд других расширений формата, например, bmp, dib и.rle. Этот формат картинок до сих пор работает со многими программами, в том числе он используется в операционных системах Windows и macOS.

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

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

      Формат bmp можно открыть в Windows стандартными программами и утилитами:

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

      Как открыть bmp формат

      Думаю понятен ответ на вопрос, формат bmp что это такое.

      Далее, рассмотрим на практике, как открывается этот формат картинок на компьютере с использованием двух программ:

      Если у вас установлена программа Фотошоп на компьютере, нажимаете по bmp картинке правой кнопкой мыши, далее выбираете из меню «Открыть с помощью» и например, «Adobe Photoshop cs6» (Скрин 2).

      чем открыть картинку в бмп формате

      После этого картинка в bmp формате будет открыта в данной программе (Скрин 3).

      bmp формат чем открыть

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

      как открыть bmp картинки

      Далее картинка в bmp формате, будет открыта к просмотру на компьютере.

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

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

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

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

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

      Размер формата bmp

      Размеры формата bmp могут быть разными, в зависимости от качества изображения картинок. К примеру, если картинка в формате bmp будет иметь разрешение 1380 на 820 пикселей, то ее размер может быть объемным, например, 250 мегабайт.

      С низким качеством изображения и размером, например, 300 на 200 пикселей, bmp картинки будут весить 1-5 мегабайт.

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

      Где используется данный формат

      Несмотря на то, что пользователи считают БМП формат устаревшим форматом, его используют во многих сферах деятельности.

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

      Также он может использоваться в Фотошопе, при редактировании картинки. Люди загружают подобные изображения в социальные сети, на свои сайты в Интернете.

      Компания Майкрософт создала данный формат, который использует его во время разработок своих продуктов.

      Заключение

      В статье мы ответили на вопрос, формат bmp что это такое? Рассмотрели специальные программы, с помощью которых можно открывать и просматривать bmp картинки и не только.

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

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