Формат BMP
BMP — это заголовок и следом сырые пиксели, почти всегда без всякого сжатия. Поэтому вес файла считается умножением: ширина на высоту на число байт в пикселе. Кадр 1920×1080 в 24 битах занимает 6 220 800 байт, то есть около 5,9 МиБ, независимо от того, что на нём изображено — фотография заката или белый прямоугольник. Формат родом из Windows, и за пределами Windows встречается редко.
Обновлено:
Коротко о цифрах
- Сжатие
- как правило отсутствует; RLE в спецификации есть, но применяется редко
- Формула веса
- 1920×1080×3 = 6 220 800 байт, около 5,9 МиБ
- Выравнивание строк
- каждая строка дополняется до кратности четырём байтам
- Порядок строк
- снизу вверх при положительной высоте в заголовке
- У нас
- принимается при сборке PDF и кладётся в документ как JPEG, с прозрачностью — как PNG
Две особенности, о которые спотыкаются
- Строки выровнены по четыре байта. Картинка шириной 101 пиксель в 24 битах даёт 303 байта данных на строку, а занимает 304 — один байт на строку уходит в никуда.
- Строки обычно записаны снизу вверх: положительная высота в заголовке означает, что первой в файле лежит нижняя строка изображения. Отрицательная высота переключает порядок на привычный.
- Прозрачность формально возможна в 32-битном варианте, но многие программы игнорируют четвёртый канал и рисуют картинку непрозрачной.
- Сжатие в спецификации есть (RLE для 4 и 8 бит), но на практике почти не используется — тем и ценен BMP как промежуточный формат: в нём нечему испортиться.
Что происходит при вставке в PDF
Фильтра для BMP в PDF нет, и наш конвертер поступает с ним так же, как с WebP или GIF: браузер декодирует файл, картинка рисуется на канвасе и кодируется заново — в JPEG с качеством 0,9, а если в BMP есть прозрачность, в PNG. Для веса это чистый выигрыш: BMP не сжат вовсе, и страница выйдет в разы легче исходного файла.
Цена — потери. Фотографии JPEG почти не вредит, а скриншот интерфейса, схема или чертёж получат ореолы вокруг линий и букв: JPEG рассчитан на плавные переходы, а не на резкие границы. Такие BMP сохраните в PNG до сборки инструментом «Конвертировать изображение» — PNG ляжет в документ без потерь.
Когда BMP оправдан
- Как промежуточный шаг между программами, которые иначе теряют качество на каждом сохранении.
- Как формат вывода старого оборудования — сканеров, промышленных камер, медицинских приборов.
- Внутри файлов Windows-иконок: там лежат те же самые несжатые пиксельные блоки, только без файлового заголовка.
- Для хранения и отправки BMP не годится: тот же кадр в PNG будет точным до пикселя и в разы легче.
Частые вопросы
Почему картинка в BMP весит несколько мегабайт, а в PNG — сто килобайт?
Потому что BMP записывает каждый пиксель отдельно и ничего не сжимает, а PNG кодирует повторы соседних пикселей. Изображение при этом остаётся точным до последней точки: потерь при переходе нет.
Можно ли собрать PDF прямо из BMP-файлов?
Да, наш конвертер изображений принимает BMP наравне с JPG и PNG. Внутрь документа картинка попадёт в виде JPEG с качеством 0,9, а при прозрачности — PNG, потому что фильтра для BMP в спецификации PDF не предусмотрено.
Есть ли в BMP прозрачность?
В 32-битном варианте четвёртый канал технически присутствует, но поддержка его неровная: многие программы читают только три канала и выводят изображение полностью непрозрачным.
Чем открыть BMP на телефоне?
Практически любой галереей или браузером: формат простой и декодируется везде. Проблема обычно не в открытии, а в объёме — несжатый файл долго передаётся по мобильной сети.