Что находится внутри файла BMP
BMP (от англ. bitmap — «битовая карта») — формат изображений, который Windows использует с самых ранних версий. Он предельно прост: короткое описание картинки, а за ним — цвет каждого пикселя, один за другим.
Заголовок, палитра, пиксели
BMP начинается с 14-байтового заголовка файла и информационного заголовка, где записаны ширина, высота и глубина цвета. У изображений с 256 цветами и меньше затем идёт палитра со списком цветов. После неё следуют пиксели, строка за строкой, обычно начиная с нижней строки картинки и снизу вверх.
Глубина цвета
Глубина цвета определяет, сколько цветов помещается в пиксель. 1-битные BMP — чёрно-белые, 4-битные содержат 16 цветов, 8-битные — 256, а 24-битные — 16,7 миллиона. 32-битный BMP добавляет четвёртый байт: одни программы используют его для прозрачности, другие оставляют пустым заполнением.
Почему BMP до сих пор встречается
Благодаря простоте BMP легко записать любой программе или устройству. Старые игры, утилиты Windows, редакторы спрайтов и встроенные дисплеи до сих пор его создают, поэтому задача «BMP в PNG» по-прежнему возникает очень часто.
Почему файлы BMP такие большие
Большинство BMP вообще не сжаты. Размер файла — это просто ширина × высота × байты на пиксель плюс немного выравнивания.
Простая арифметика
Скриншот в Full HD — это 1920 × 1080 пикселей. При 24 битах на пиксель это 3 байта, то есть около 6,2 МБ, и неважно, был ли на экране пёстрый снимок или пустая белая страница. Тот же скриншот в PNG часто весит несколько сотен килобайт.
Выравнивание строк
Каждая строка пикселей дополняется до числа байтов, кратного 4. На больших изображениях это почти незаметно, но хорошо показывает, насколько буквально BMP хранит картинку: байт в байт, без всякой попытки сэкономить место.
Сжатые BMP бывают, но редко
Формат допускает простое сжатие длин серий (RLE) для 4- и 8-битных изображений, которое помогает на больших однотонных участках. Большинство программ его не используют, а 24-битным BMP оно недоступно вовсе.
Если конвертировать BMP в PNG, эти лишние байты исчезают, а ни один пиксель не меняется, — поэтому PNG часто на 80–95% меньше. В списке результатов видна точная экономия для каждого файла.
Как конвертировать BMP в PNG за 3 шага
Перетащите файлы BMP
Перетащите один или несколько файлов .bmp в область с пунктирной рамкой или нажмите, чтобы выбрать их. Каждый файл читается в браузере; ничего не загружается.
Оставьте PNG
PNG выбран по умолчанию и работает без потерь. Если ваши BMP — спрайты на чистом пурпурном фоне, отметьте «Сделать пурпурный (#FF00FF) прозрачным».
Скачайте PNG-файлы
Нажмите «Скачать» рядом с файлом или «Скачать всё в ZIP». У каждого результата указаны глубина цвета BMP и то, насколько меньше получился PNG.
Перетащите один или несколько файлов BMP.
Оставьте PNG; для спрайтов включите опцию пурпурного цвета.
Скачайте каждый PNG по отдельности или все сразу в ZIP.
BMP в PNG — без потерь, и вот почему
PNG сжимает, ничего не выбрасывая. Он ищет повторения — например, ряд одинаковых пикселей или повторяющийся узор — и сохраняет их один раз.
Те же пиксели, меньший файл
BMP, сконвертированный в PNG, декодируется ровно в те же пиксели, что и исходный файл. Цвета, края и текст остаются идентичными, а это важно для скриншотов, макетов интерфейсов и пиксель-арта, где заметен даже один изменённый пиксель.
Палитровые BMP остаются палитровыми
1-, 4- и 8-битные BMP используют палитру максимум из 256 цветов. Этот конвертер сохраняет их тоже как PNG с палитрой — один байт на пиксель, — а не разворачивает в полноцветные. Так PNG получается минимально возможного размера.
А как же 32-битные BMP?
Если 32-битный BMP объявляет канал прозрачности и ваш браузер его читает, PNG сохранит прозрачность. Однако многие программы записывают четвёртый байт просто как заполнение, и тогда изображение попросту непрозрачное.
Пурпурный фон: как превратить #FF00FF в настоящую прозрачность
BMP-файлы из игр, эмуляторов и старых панелей инструментов Windows часто показывают кричаще-розовый фон. Это сделано намеренно: пока форматы с прозрачностью не стали привычными, разработчики закрашивали «прозрачную» область чистым пурпурным — цветом, который почти не встречается в рисунках, — и указывали программе его пропускать.
Прозрачный PNG в один клик
Отметьте «Сделать пурпурный (#FF00FF) прозрачным», и каждый пиксель именно этого цвета станет прозрачным в PNG. В списке результатов указано, сколько пикселей изменилось, так что сразу видно, что всё сработало.
Только точное совпадение
Заменяется только чистый #FF00FF. Почти пурпурные оттенки, например сглаженные края, остаются как есть, поэтому опция никогда не «съедает» сам рисунок.
Некоторые игры использовали другой ключевой цвет, например чистый зелёный или чёрный. Эта опция работает с пурпурным — безусловно самым распространённым вариантом; другие ключевые цвета лучше удалять в графическом редакторе.
BMP и PNG: краткое сравнение
| BMP | PNG | |
|---|---|---|
| Сжатие | Обычно нет | Без потерь (Deflate) |
| Типичный размер скриншота | Несколько мегабайт | Несколько сотен килобайт |
| Прозрачность | Редко, поддержка непоследовательная | Полноценный альфа-канал |
| Открывается в браузерах и программах | В основном да, но сайты принимают редко | Везде |
| Лучше всего для | Простых программ и устройств | Скриншотов, иконок, графики, веба |
Когда BMP в PNG — правильный выбор
PNG — естественная замена BMP всякий раз, когда на изображении есть резкие края, однотонные цвета или текст.
Идеально для PNG
- Скриншоты и окна программ из старых утилит Windows.
- Иконки, курсоры и пиксель-арт.
- Схемы, графики и логотипы.
- Спрайт-листы и игровые текстуры — при необходимости с опцией пурпурного.
Когда лучше JPG
Фотографии и отсканированные изображения содержат мелкий шум, который сжатие без потерь почти не уменьшает. Для них BMP в JPG даёт файл во много раз меньше без видимой разницы.
Когда BMP стоит оставить
Некоторые устройства, загрузочные экраны и дисплеи микроконтроллеров принимают только BMP. Для них сохраните оригинал, а везде в остальных случаях используйте PNG.
После того как вы конвертировали BMP в PNG
Чтобы ещё уменьшить PNG, пропустите его через сжатие PNG. Для сайтов PNG в WebP даёт ещё меньший файл с сохранённой прозрачностью, а изменение размера фото задаёт точные размеры.
Для фотографий используйте BMP в JPG. Все остальные пары форматов собраны в конвертере изображений.