Конвертировать BMP в PNG
BMP хранит каждый пиксель как есть — PNG хранит те же пиксели без потерь и занимает в разы меньше. То же изображение, современный формат, ничего не сохраняется.
- Не сохраняется
- Без очереди и ожидания
- Без регистрации и водяных знаков
Как это работает
Добавьте файлы BMP
Перетащите на страницу сколько угодно файлов .bmp.
Конвертируйте
Каждый становится PNG со сжатием без потерь — те же пиксели, гораздо меньший файл.
Скачайте
Сохраните по одному или ZIP-архивом.
Те же пиксели, в разы меньше места
BMP обычно вообще не сжат. Каждый пиксель записан как есть, по три-четыре байта, а строки дополнены до границы в четыре байта — поэтому скриншот 1920×1080 весит около 8 MB, а двенадцатимегапиксельная фотография — почти 36 MB. PNG хранит ровно те же пиксели и сжимает их без потерь, так что картинка ничуть не меняется, а файл обычно уменьшается в пять–двадцать раз. Для скриншота или схемы с большими однотонными областями выигрыш ближе к верхней границе. Это редкая конвертация вообще без компромиссов.
Одну деталь в результате всё же стоит проверить: прозрачность в 32-битном BMP ненадёжна, и дело не в том, что делается здесь. Исходный заголовок растрового файла Windows не знал понятия альфа-канала, так что четвёртый байт каждого пикселя просто не использовался; более поздние заголовки определили его как положено, но многие программы до сих пор пишут старый вариант, а многие декодеры до сих пор игнорируют новый. Поэтому BMP, который выглядит прозрачным в создавшей его программе, может декодироваться как непрозрачный, если байт альфа-канала прочитан как заполнитель. Если это важно, посмотрите на PNG, прежде чем на него полагаться.
Вторая особенность — строки. BMP по традиции хранит строки снизу вверх — решение, унаследованное от того, как ранние видеоадаптеры адресовали память, — а файл с порядком сверху вниз обозначается отрицательной высотой. Декодеры понимают оба варианта, так что на практике это незаметно; просто поэтому недописанный или обрезанный BMP выглядит перевёрнутым, а не обрезанным.
Все распространённые варианты из Windows конвертируются. Редкие закоулки формата — 4- и 8-битные растры со сжатием RLE, заголовки OS/2 начала девяностых и редкая форма со встроенным JPEG — зависят от декодера, и если такой файл будет отклонён, вы увидите сообщение об этом, а не перемешанную картинку.
Если нужно другое
Чтобы ужать PNG ещё сильнее, oxipng -o 4 out.png или optipng часто снимают ещё десять–тридцать процентов, не меняя ни одного пикселя, а pngquant идёт гораздо дальше, сводя цвета к палитре, — это сжатие с потерями, но на скриншоте или схеме они обычно незаметны.
Для целой папки magick mogrify -format png *.bmp из ImageMagick конвертирует всё одной строкой, а libvips делает то же самое, расходуя лишь малую долю памяти на очень больших изображениях. Если BMP — это фотографии, а не графика, PNG вообще не тот формат: JPG будет в десять раз меньше при разнице в качестве, которую никто не увидит.
Частые вопросы
Теряется ли качество?
Нисколько — PNG сжимает без потерь. PNG декодируется ровно в те пиксели, что хранятся в BMP; исчезают только лишние байты.
Насколько меньше будет файл?
Обычно на 50–95% меньше в зависимости от содержимого — BMP, по сути, не сжаты, так что выигрыш будет почти всегда.
Откуда вообще сейчас берутся BMP?
Скриншоты Windows из старых программ, MS Paint, научные приборы, встраиваемые системы и устаревший софт. Формат появился ещё в Windows 3.0.
Мои файлы где-нибудь сохраняются?
Нет — при конвертации ничего не сохраняется.
Может ли PNG хранить всё, что умеет BMP?
Да, и больше — PNG добавляет настоящую прозрачность, которой в BMP на деле никогда не было.
Полезно знать: Экзотические разновидности BMP (со сжатием RLE, с заголовками OS/2) зависят от декодера вашего браузера; все распространённые BMP из Windows работают.
Разместите этот инструмент на своём сайте
Бесплатно для любого блога, страницы класса или справочной статьи. Вставьте один фрагмент кода — и посетители смогут пользоваться инструментом прямо на вашей странице.