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