Почему BMP такой тяжёлый: как устроен файл изнутри
Однотонный белый квадрат и сложная фотография одного размера весят в BMP абсолютно одинаково. Звучит странно? На самом деле в этом — вся суть формата. Разберём файл BMP по байтам, выведем простую формулу его веса и поймём, почему несжатый формат физически не может быть лёгким.
Корень проблемы: ноль сжатия
Чтобы понять вес BMP, нужно усвоить одну вещь: обычный BMP не сжимает изображение вообще. Большинство современных форматов ищут закономерности — повторяющиеся цвета, плавные переходы, одинаковые области — и записывают их компактно. BMP так не делает. Он берёт каждый пиксель и просто записывает его цвет в файл, один за другим, как длинную ленту чисел.
Из этого следует контринтуитивный вывод: вес BMP не зависит от того, что нарисовано на картинке. Пустой белый лист и детализированная фотография одного разрешения займут ровно столько же места. Для формата нет разницы между «простой» и «сложной» картинкой — он всё равно хранит байты каждого пикселя.
Главная мысль
В BMP размер файла определяется только разрешением и глубиной цвета. Содержимое не играет роли. Поэтому формат предсказуемо тяжёлый: чем больше пикселей, тем линейно больше байт.
Анатомия файла BMP
Файл BMP состоит из четырёх блоков, идущих строго по порядку. Первые три — служебные и крошечные, а весь вес сосредоточен в четвёртом.
Разберём подробнее:
- Заголовок файла (14 байт) — начинается с подписи
BM, хранит общий размер файла и смещение до начала пикселей. - DIB-заголовок (40 байт) — это
BITMAPINFOHEADER: ширина, высота, глубина цвета, разрешение и тип сжатия. - Палитра — нужна только картинкам с малым числом цветов (1, 4, 8 бит). В полноцветном 24-битном BMP её просто нет.
- Пиксельные данные — собственно картинка. Именно здесь живут десятки мегабайт.
Итого служебная часть полноцветного BMP — всего 54 байта. На фоне 36-мегабайтного файла это исчезающе мало. Весь вес создают пиксели.
Формула веса: считаем сами
Раз вес создают только пиксели, его легко посчитать заранее. Базовая формула для несжатого BMP:
Деление на 8 переводит биты в байты. Для самого частого случая — 24-битного truecolor — на каждый пиксель приходится 3 байта (по одному на синий, зелёный и красный). Значит, формула упрощается до Ширина × Высота × 3. Прибавьте 54 байта заголовков — и вы знаете размер файла ещё до того, как он сохранён.
Быстрая прикидка
Чтобы прикинуть вес 24-битного BMP в мегабайтах, умножьте число мегапикселей на 3. Камера на 12 Мп → ≈36 МБ. Экран 2 Мп (Full HD) → ≈6 МБ. Просто и всегда работает.
Примеры на реальных разрешениях
Подставим в формулу привычные размеры изображений (24-битный BMP):
| Разрешение | Пикселей | Размер BMP | Для сравнения JPG |
|---|---|---|---|
| 640×480 | 0,3 Мп | ~0,9 МБ | ~60 КБ |
| 1280×720 (HD) | 0,9 Мп | ~2,6 МБ | ~150 КБ |
| 1920×1080 (Full HD) | 2,1 Мп | ~6 МБ | ~400 КБ |
| 4000×3000 (12 Мп) | 12 Мп | ~36 МБ | ~3 МБ |
| 6000×4000 (24 Мп) | 24 Мп | ~72 МБ | ~6 МБ |
Закономерность очевидна: вес BMP растёт линейно с числом пикселей и в среднем в 10–15 раз превышает JPG. Удвоили разрешение по обеим сторонам — файл вырос вчетверо. Никакого сжатия, чтобы сгладить рост, у формата нет.
Выравнивание строк: скрытые байты
Есть у BMP и небольшой «скрытый налог» на вес. Формат требует, чтобы каждая строка пикселей занимала количество байт, кратное 4. Если строка не дотягивает до круглого числа, в конец добавляются нули-заполнители.
Зачем? Так процессору быстрее читать данные из памяти — он работает с блоками по 4 байта эффективнее. Это снова та же философия: пожертвовать местом ради скорости. На широких изображениях добавка ничтожна, но на узких полосках она может заметно раздуть файл относительно «чистого» содержимого.
Почему PNG и JPG легче
Теперь, зная природу BMP, легко понять, в чём фокус его соперников:
- PNG ищет повторы и плавные переходы и кодирует их компактно — без единой потери. Тот самый белый квадрат в PNG весит считанные килобайты, потому что формат понимает: «здесь всё одинаковое».
- JPG идёт дальше: он разбивает фото на блоки и выбрасывает мелкие детали, которые глаз почти не замечает. Это сжатие с потерями, зато вес падает в десятки раз.
BMP не делает ни того, ни другого. Он не «плохой» — он просто из эпохи, когда сжатие было дорогим, а простота ценилась выше компактности. Сегодня же приоритеты противоположны, поэтому BMP почти всегда выгодно конвертировать. Подробнее об их различиях — в статье BMP против PNG и JPG.
Как победить вес
Раз вес BMP заложен в самой его природе, единственный способ его уменьшить — перевести изображение в формат, который умеет сжимать. Это занимает пару секунд и не требует никаких программ.
Загрузите BMP
Перетащите тяжёлый .bmp в онлайн-конвертер.
Выберите PNG или JPG
PNG — без потерь для графики, JPG — минимальный вес для фото.
Скачайте лёгкий файл
Те же пиксели, но в разы меньше байт.
Превратите тяжёлый BMP в лёгкий файл
Бесплатный конвертер FormatZ сожмёт ваш BMP без потери качества прямо в браузере — без установки и регистрации.
Конвертировать BMP в PNGДля фотографий ещё выгоднее конвертация BMP в JPG. Хотите узнать, где несжатый формат всё-таки уместен? Прочитайте, где BMP используется сегодня, или начните с основ — что такое BMP. Все преобразования — на странице всех форматов.


