Растрове зображення Windows (.bmp)

Microsoft Стандарт

Bitmap Image File (BMP) - це базовий незалежний від пристрою формат растрової графіки від Microsoft, який зберігає незжаті або за допомогою RLE рядки розгортки з прямою сумісністю з апаратним буфером кадру.

Конвертувати з BMP у PNG

Безкоштовний конвертер з BMP у PNG у браузері. Миттєво конвертуйте файли на своєму пристрої.

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли BMP, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

100% приватна конвертація у браузері - файли ніколи не покидають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності з нульовою передачею мережею: 0 байт завантажено на зовнішні сервери. Уся обробка виконується локально в пісочниці вашого браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли BMP, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

42 4D

ASCII-УЯВЛЕННЯ: BM

Стандартизація: Microsoft Windows Device-Independent Bitmap (DIB) Architecture

Технічні характеристики

Архітектура контейнераBITMAPFILEHEADER з наступними BITMAPINFOHEADER (DIB) та растровим масивом пікселів
СтисненняНезжаті необроблені рядки розгортки або додаткове RLE-кодування довжини серій BI_RLE8 / BI_RLE4
Порядок байтів (Endianness)Little-Endian (порядок байтів Intel x86)
Колірні просториDevice Dependent RGB, sRGB (вбудований у BITMAPV5HEADER)
Канали та структура1-бітний монохромний, 4-бітний / 8-бітний палітровий, 16-бітний, 24-бітний RGB або 32-бітний RGBA
Максимальні розміри2 147 483 647 x 2 147 483 647 пікселів (знакове 32-бітне ціле число)
Прозорість32-бітний альфа-маска BGRA підтримується в сучасних форматах BITMAPV3HEADER та V5HEADER
Потокове та прогресивне завантаженняНе підтримує потокове передавання; рядки розгортки зберігаються догори дном (знизу вгору), якщо висота не від'ємна

Технічна матриця порівняння: BMP проти конкурентів

Технічний атрибутBMP (Поточний)PNGTIFFJPG
Режим стисненняНезжатий / Мінімальний RLEБез втрат Deflate (~на 70% менше)Незжатий / LZW / ZipЗ втратами DCT (~на 90% менше)
Швидкість декодуванняМиттєве копіювання пам'ятіВимагає декомпресії DeflateВимагає декомпресії LZW/ZIPВимагає обчислення IDCT
Порядок рядків розгорткиЗнизу вгору (інвертований)Зверху внизЗверху вниз / смугиБлоки MCU зверху вниз
Придатність для вебДуже погана (роздутий об'єм)Чудово підходить для графікиПогана (настільні видавничі системи)Чудово підходить для фотографій

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Зображення відображається скошеним по діагоналі або під кутом.

Першопричина: Неправильний розрахунок доповнення рядка (невдале доповнення кожного рядка розгортки до 4-батної границі).

Відновлення: Перекодуйте за допомогою конвертера зображень File2File для забезпечення правильного 32-бітного кроку рядка розгортки.

Аналіз безпеки та векторів атак на парсери

Декодери BMP часто страждають від надмірного читання буфера під час виділення пам'яті на основі неперевірених розмірів заголовка DIB.

Відомі вектори атак

  • Цілочисельне переповнення в обчисленнях width * height * bpp, що призводить до виділення малої купи та запису за межами буфера.
  • Пошкоджені послідовності виходу довжини серій RLE8/RLE4, що викликають запис у пам'ять за межами виділеного буфера.
  • Відмова в обслуговуванні за допомогою виділення багаtogілобабайтної пам'яті, викликаної спеціально створеними розмірами заголовка.

Захисні найкращі практики: Суворо перевіряйте межі ширини, висоти та глибини бітів заголовка DIB перед виділенням пам'яті призначення.

Історичне походження та віхи

1998Windows 98 представляє BITMAPV5HEADER, додаючи керування колірними профілями ICC та корекцію гами.
1990Windows 3.0 стандартизує специфікацію DIB BITMAPINFOHEADER в межах всієї операційної системи.
1987Представлено разом з Windows 2.0 та OS/2 1.1 як рідний растровий формат відображення.

Головні переваги та плюси

  • Нульове погіршення від стиснення: 100% точне збереження пікселів на рівні бітів без артефактів стиснення.
  • Універсальна вбудована підтримка операційною системою у всіх версіях Windows, Linux та macOS.
  • Проста складність декорування робить його ідеальним для вбудованих мікроконтролерів та навчання програмуванню графіки.

Технічні обмеження та мінуси

  • Величезний розмір файлів через відсутність сучасного ентропійного стиснення на кшталт DEFLATE або кодування Хаффмана.
  • Неефективність для передавання через веб або розповсюдження в мобільних мережах.
  • Порядок рядків розгортки знизу вгору вимагає вертикального перевертання рядків у сучасних конвеєрах графіки зверху вниз.

Цікаві технічні факти

  • BMP за замовчуванням зберігає рядки розгортки зображення догори дном (знизу вгору) через математичну декартову систему координат, яка використовувалася в OS/2.
  • Якщо значення висоти в заголовку BMP встановлено від'ємним, зображення декодується нормально (зверху вниз).
  • Кожен рядок розгортки у файлі BMP повинен бути доповнений нулями до кратності 4 байтам (вирівнювання за 32-бітною межею).

Поширені технічні запитання

Чому файли BMP такі великі?

Файли BMP зберігають необроблені, незжаті значення кольорів для кожного окремого пікселя, тоді як такі формати, як PNG, стискають ці дані без втрати якості.

Чи може BMP підтримувати прозорість?

Так. 32-бітні файли BMP (з використанням BITMAPV3HEADER або новіших) можуть зберігати 8-бітний альфа-канал, хоча підтримка відрізняється в старому програмному забезпеченні.

Як я можу зменшити розмір файлу BMP?

Конвертування файлу BMP у PNG за допомогою File2File.app зазвичай зменшує розмір файлу на 60% - 85% без будь-яких втрат у візуальній якості.