Как конвертировать WebP в Base64
- Перетащите файл
.webpв поле или выберите его через диалог. - Чтобы сменить формат, выберите PNG или JPEG в списке Конвертировать в. При Сохранить формат заданная Макс. ширина перекодирует картинку в WebP с тем значением, что выбрано в поле Качество.
- Выберите Формат вывода. По умолчанию – data URI.
- Нажмите Скопировать результат. Индикатор сравнивает размер на входе и на выходе.
Почему WebP хорошо подходит для data URI
Base64 добавляет примерно треть к тому, что кодирует, поэтому чем меньше исходник, тем лучше. WebP с потерями обычно меньше JPEG сопоставимого качества, а WebP без потерь часто меньше PNG и при этом сохраняет прозрачность. Для иконок, превью товаров и заглушек, которые нужно встроить в страницу, WebP обычно даёт строку короче, чем PNG или JPEG.
Анимированные WebP кодируются как есть. Как и в случае GIF, параметры перекодирования рисуют только первый кадр, так что для движущейся картинки их лучше не трогать.
Если получатель не принимает WebP
Многие программы до сих пор ждут PNG или JPEG: часть API, принимающих картинки в Base64, старые десктопные приложения, генераторы документов и многие почтовые клиенты. Вместо того чтобы сначала конвертировать файл где-то ещё, выберите здесь Конвертировать в PNG или JPEG и сразу закодируйте результат:
- PNG сохраняет прозрачность и каждый пиксель, но весит больше.
- JPEG меньше для фотографий, но заливает прозрачные области белым.
Имя файла в выводах HTML <a download> и JSON меняется под новый формат: например, banner.webp становится banner.png.
Перекодирование в WebP в браузере
Большинство браузеров умеют записывать WebP из canvas, поэтому после изменения размера или качества WebP остаётся WebP. Safari так не умеет: там инструмент переходит на PNG и пишет об этом под превью. Учтите, что PNG фотографии может весить в разы больше исходного WebP. Если нужен WebP на выходе, используйте Chrome, Edge или Firefox либо оставьте исходный файл.
Как узнать WebP в Base64
WebP использует контейнер RIFF, тот же, что у аудио WAV и видео AVI:
UklGRlAAAABXRUJQVlA4IEQAAAD...
└─┬─┘└─┬──┘│└─┬┘
RIFF size W EBP
По UklGR видно только, что это RIFF. Метка формата WEBP лежит в байтах с 8 по 11 и видна как XRUJQ на позициях с 12 по 16, а за ней идёт VlA4 – чанк VP8. Если определяете формат в коде, проверяйте обе части. Другие сигнатуры собраны в статье частые префиксы Base64, а Base64 в WebP декодирует строку обратно в файл.
Вопросы и ответы
Все ли браузеры показывают WebP в data URI?
Все современные – да. Safari поддерживает WebP начиная с версии 14 на macOS 11 Big Sur и новее, а на iOS – с версии 14. Старые системы Apple покажут битую картинку.
Как отличить Base64 файла WebP от WAV?
Оба – файлы RIFF и начинаются с UklGR. В WebP на позициях с 12 по 16 стоит XRUJQ (от WEBP), в WAV – XQVZF (от WAVE).
Почему я получил PNG, хотя просил WebP?
Ваш браузер не умеет кодировать WebP из canvas; главный такой случай – Safari. Инструмент сообщает о замене и выдаёт PNG: он без потерь, но обычно больше.