Растрове зображення Windows (.bmp)
Microsoft СтандартBitmap Image File (BMP): це базовий незалежний від пристрою формат растрової графіки від Microsoft, який зберігає нестиснені рядки розгортки або рядки, стиснуті за допомогою RLE, із прямою сумісністю з апаратним буфером кадру.
Конвертувати з BMP у PNG
Безкоштовний конвертер з BMP у PNG у браузері. Миттєво конвертуйте файли на своєму пристрої.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли BMP, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (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) |
| Колірні простори | 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 (Поточний) | PNG | TIFF | JPG |
|---|---|---|---|---|
| Режим стиснення | Незжатий / Мінімальний RLE | Без втрат Deflate (менший на ~70%) | Незжатий / LZW / Zip | З втратами DCT (~на 90% менше) |
| Швидкість декодування | Миттєве копіювання пам'яті | Вимагає декомпресії Deflate | Вимагає декомпресії LZW/ZIP | Вимагає обчислення IDCT |
| Порядок рядків розгортки | Знизу вгору (інвертований) | Зверху вниз | Зверху вниз / смуги | Блоки MCU зверху вниз |
| Придатність для веб | Дуже погана (надмірний обсяг файлів) | Чудово підходить для графіки | Погана (настільні видавничі системи) | Чудово підходить для фотографій |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Зображення відображається скошеним по діагоналі або під кутом.
Першопричина: Неправильний розрахунок доповнення рядка (невдале доповнення кожного рядка розгортки до 4-байтової межі).
Відновлення: Перекодуйте за допомогою конвертера зображень File2File.app для забезпечення правильного 32-бітного кроку рядка розгортки.
Аналіз безпеки та векторів атак на парсери
У декодерах BMP часто трапляється читання за межами буфера під час виділення пам’яті за неперевіреними розмірами заголовка DIB.
Відомі вектори атак
- Переповнення цілого числа під час обчислення width * height * bpp призводить до виділення замалої області динамічної пам’яті та запису за межі буфера.
- Пошкоджені послідовності виходу довжини серій RLE8/RLE4, що викликають запис у пам'ять за межами виділеного буфера.
- Відмова в обслуговуванні за допомогою виділення багатогігабайтної пам'яті, викликаної спеціально створеними розмірами заголовка.
Рекомендації щодо захисту: Перед виділенням пам’яті для вихідного зображення ретельно перевіряйте граничні значення ширини, висоти й бітової глибини із заголовка DIB.
Історичне походження та віхи
Основні переваги
- Нульове погіршення від стиснення: 100% точне збереження пікселів на рівні бітів без артефактів стиснення.
- BMP має вбудований кодек у Windows, а підтримка в інших операційних системах і програмах різниться.
- Надзвичайно простий алгоритм декодування робить його ідеальним для вбудованих мікроконтролерів і навчання програмуванню графіки.
Технічні обмеження та недоліки
- Величезний розмір файлів через відсутність сучасного ентропійного стиснення на кшталт DEFLATE або кодування Хаффмана.
- Неефективність для передавання через веб або розповсюдження в мобільних мережах.
- Порядок рядків розгортки знизу вгору вимагає вертикального перевертання рядків у сучасних конвеєрах графіки зверху вниз.
Цікаві технічні факти
- BMP за замовчуванням зберігає рядки розгортки зображення догори дном (знизу вгору) через математичну декартову систему координат, яка використовувалася в OS/2.
- Якщо значення висоти в заголовку BMP встановлено від'ємним, зображення декодується нормально (зверху вниз).
- Кожен рядок розгортки у файлі BMP повинен бути доповнений нулями до кратності 4 байтам (вирівнювання за 32-бітною межею).
Поширені технічні запитання
Чому файли BMP такі великі?
Файли BMP зберігають необроблені, незжаті значення кольорів для кожного окремого пікселя, тоді як такі формати, як PNG, стискають ці дані без втрати якості.
Чи може BMP підтримувати прозорість?
Так. 32-бітні файли BMP (з використанням BITMAPV3HEADER або новіших) можуть зберігати 8-бітний альфа-канал, хоча підтримка відрізняється в старому програмному забезпеченні.
Як я можу зменшити розмір файлу BMP?
Перетворення BMP на PNG може зменшити розмір файлу, зберігши значення пікселів, але результат залежить від вмісту зображення та кодування BMP.
Пов'язані пари конвертації BMP
Перетворення нестиснутих файлів Windows Bitmap у PNG забезпечує стиснення без втрат, яке зменшує розмір файлів без зниження якості зображення.
Перетворення Portable Network Graphics у Windows Bitmap перетворює стиснені растрові дані на нестиснуту піксельну сітку для застарілих операційних систем та апаратних конвеєрів.
Розмістіть підтримуваний знімок екрана BMP на одній сторінці PDF для заявки чи звіту. Цей спосіб підтримує нестиснені 24-бітні або 32-бітні пікселі, але не стиснені варіанти BMP.