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