Windows Bitmap (.bmp)

Microsoft Стандарт

Bitmap Image File (BMP) е основният растерен формат на Microsoft, независим от устройството. Той съхранява некомпресирани или компресирани с RLE растерни редове и е съвместим директно с хардуерни буфери на кадрите.

Конвертиране от BMP към PNG

Безплатен конвертор от BMP към PNG в браузъра. Конвертирайте файлове незабавно на вашето устройство.

Проверка и метаданни

Операционните системи и файловите анализатори идентифицират BMP файлове чрез проверка на началната двоична байтова последователност:

Изберете или пуснете файлове тук

Поверително - файловете никога не напускат устройството ви

или поставете Ctrl+V
Гаранция за поверителност с нулево мрежово предаване: 0 байта са качени на външни сървъри. Цялата обработка се извършва локално в пясъчниците на вашия браузър.

Байтов подпис на заглавката (сигнатурни байтове)

Операционните системи и файловите анализатори идентифицират BMP файлове чрез проверка на началната двоична байтова последователност:

HEX ПОДПИС (ОФСЕТ 0):

42 4D

ASCII ПРЕДСТАВЯНЕ: BM

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

Технически спецификации

Контейнерна архитектураBITMAPFILEHEADER, последван от BITMAPINFOHEADER (DIB) и масив от растерни пиксели
КомпресияНекомпресирани растерни редове или незадължително кодиране на серии 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 (Текущ)PNGTIFFJPG
Режим на компресияНекомпресиран / минимален RLEКомпресия Deflate без загуби; спестяването на място зависи от съдържанието на изображениетоНекомпресиран / LZW / ZipDCT със загуби (около 90% по-малък)
Скорост на декодиранеНезабавно копиране в паметтаИзисква декомпресиране с DeflateИзисква декомпресиране с LZW/ZIPИзисква изчисляване на IDCT
Подредба на растерните редовеОтдолу нагоре (инвертирана)Отгоре надолуОтгоре надолу / ИвициMCU блокове отгоре надолу
Пригодност за уебМного слаба (обемни файлове)Отлична за графикаСлаба (настолни издателски системи)Отлична за фотография

Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни

Изображението се извежда наклонено по диагонал или изкривено.

Първопричина: Неправилно изчисляване на допълването на редовете (не се допълва всеки ред до граница от 4 байта).

Възстановяване: Кодирайте изображението отново с Image Converter на File2File.app, за да се зададе правилна 32-битова стъпка на реда.

Анализ на сигурността и вектори на атака към парсера

При декодерите на BMP често има четене извън границите на буфера, когато паметта се заделя въз основа на недоверени размери от DIB заглавката.

Известни вектори на атака

  • Целочислено препълване при изчисляване на ширина x височина x bpp, което води до твърде малко заделена heap памет и запис извън границите.
  • Повредени управляващи последователности за дължина на серията RLE8/RLE4, които причиняват запис извън заделения буфер.
  • Отказ на услугата чрез заделяне на няколко гигабайта памет заради подправени размери в заглавката.

Най-добри практики за защита: Проверявайте стриктно границите за ширина, височина и битова дълбочина в DIB заглавката, преди да заделяте памет за изображението.

Исторически произход и етапи

1998Windows 98 въвежда BITMAPV5HEADER с поддръжка на ICC цветови профили и корекция на гамата.
1990Windows 3.0 стандартизира спецификацията BITMAPINFOHEADER DIB в операционната система.
1987Представен е с Windows 2.0 и OS/2 1.1 като вграден растерен формат за дисплея.

Основни предимства

  • Без загуба от компресия: пикселите се съхраняват точно побитово, без компресионни артефакти.
  • Windows разполага с вграден BMP кодек, а поддръжката в други операционни системи и приложения е различна.
  • Опростеното декодиране го прави подходящ за вградени микроконтролери и обучение по програмиране на графични приложения.

Технически ограничения и минуси

  • Много големи файлове заради липсата на съвременни методи за ентропийна компресия като DEFLATE или кодиране на Хафман.
  • Неефективен за уеб пренос и разпространение в мобилни мрежи.
  • Редовете се съхраняват отдолу нагоре, затова в съвременните графични конвейери отгоре надолу се налага вертикалното им обръщане.

Интересни технически факти

  • По подразбиране BMP съхранява растерните редове отдолу нагоре заради математическата декартова координатна система, използвана в OS/2.
  • Ако височината във BMP заглавката е отрицателна, изображението се декодира правилно ориентирано (отгоре надолу).
  • Всеки растерен ред във BMP файл трябва да се допълни с нулеви байтове до размер, кратен на 4 байта (подравняване на 32-битова граница).

Често задавани технически въпроси

Защо BMP файловете са толкова големи?

BMP файловете съхраняват необработани, некомпресирани цветови стойности за всеки пиксел, докато формати като PNG компресират данните без загуба на качество.

Може ли BMP да поддържа прозрачност?

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

Как мога да намаля размера на BMP файл?

Конвертирането на BMP в PNG може да намали размера на файла, като запази стойностите на пикселите, но резултатът зависи от съдържанието на изображението и кодирането на BMP файла.