Перейти к содержимому

Конвертировать BMP в PNG

BMP хранит каждый пиксель как есть — PNG хранит те же пиксели без потерь и занимает в разы меньше. То же изображение, современный формат, ничего не сохраняется.

  • Не сохраняется
  • Без очереди и ожидания
  • Без регистрации и водяных знаков

Как это работает

1

Добавьте файлы BMP

Перетащите на страницу сколько угодно файлов .bmp.

2

Конвертируйте

Каждый становится PNG со сжатием без потерь — те же пиксели, гораздо меньший файл.

3

Скачайте

Сохраните по одному или 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 работают.

Разместите этот инструмент на своём сайте

Бесплатно для любого блога, страницы класса или справочной статьи. Вставьте один фрагмент кода — и посетители смогут пользоваться инструментом прямо на вашей странице.