WebP
WebP — графический формат файлов, разработанный компанией Google в 2010 году для эффективного сжатия изображений в Интернете. Формат поддерживает как сжатие с потерями, так и без потерь, обеспечивая меньший размер файлов по сравнению с JPEG и PNG при сохранении сопоставимого качества изображения.
Алгоритм
Формат WebP использует комбинацию различных алгоритмов для достижения эффективного сжатия изображений. Основные методы включают предсказательное кодирование, энтропийное кодирование[1] и преобразование цветового пространства.
Алгоритмы сжатия с потерями: WebP применяет блочное предсказание для сжатия с потерями. Изображение разделяется на макроблоки размером 16x16 пикселей, каждый из которых может быть дополнительно разбит на подблоки 4x4. Для каждого блока выбирается один из 14 режимов предсказания, включая методы внутрикадрового предсказания, аналогичные используемым в видеокодеке VP8.
Дискретное косинусное преобразование (DCT) применяется к разнице между предсказанными и фактическими значениями пикселей. Результаты DCT квантуются для уменьшения объёма данных, причём степень квантования определяет уровень сжатия и качества изображения.
Алгоритмы сжатия без потерь: для сжатия без потерь WebP использует метод ARGB-предсказания. Каждый пиксель предсказывается на основе значений соседних пикселей, после чего вычисляется разница между предсказанным и фактическим значением.
Полученные разностные значения кодируются с помощью энтропийного кодирования. WebP использует адаптивное арифметическое кодирование, которое эффективно сжимает данные, особенно для изображений с большими областями однородного цвета.
Особенности реализации: WebP поддерживает смешанное сжатие, позволяя применять сжатие без потерь к определённым областям изображения, требующим высокой детализации, в то время как остальная часть изображения может быть сжата с потерями.
Формат также включает поддержку альфа-канала (прозрачности) с возможностью его отдельного сжатия. Это особенно полезно для веб-графики, где часто требуется прозрачность.
WebP использует YUV цветовое пространство для хроматической субдискретизации, что позволяет уменьшить объём данных цветности без значительного ухудшения визуального качества для человеческого глаза.
Оптимизация декодирования: Алгоритмы WebP оптимизированы для быстрого декодирования, что важно для веб-браузеров. Формат поддерживает многопоточное декодирование, позволяя эффективно использовать современные многоядерные процессоры.
Поддержка
Google Chrome первым внедрил поддержку формата WebP в версии 9, выпущенной в 2012 году. Opera начала поддерживать WebP с версии 11.10, выпущенной в том же году.
Mozilla Firefox долгое время не поддерживал WebP, но внедрил его в версии 65, выпущенной в январе 2019 года. Apple Safari добавил поддержку WebP значительно позже других основных браузеров — в версии 14, выпущенной в сентябре 2020 года.
Microsoft Edge на основе Chromium унаследовал поддержку WebP с момента своего выпуска в 2020 году. Предыдущая версия Edge, основанная на движке EdgeHTML, не поддерживала этот формат.
Среди мобильных браузеров Android Browser поддерживает WebP с версии 4.0. Chrome для Android и iOS также поддерживает этот формат. Safari на iOS получил поддержку WebP одновременно с десктопной версией в iOS 14.
Специализированные браузеры, такие как Brave и Vivaldi[2], основанные на движке Chromium, поддерживают WebP с момента их создания.
Internet Explorer не поддерживал WebP ни в одной из своих версий до прекращения поддержки браузера в июне 2022 года.
На апрель 2024 года все основные современные браузеры поддерживают формат WebP, включая анимированные WebP-изображения. Однако некоторые устаревшие версии браузеров, всё ещё используемые на старых устройствах, могут не поддерживать этот формат.
Yandex Browser, популярный в России, поддерживает WebP с 2012 года благодаря использованию движка Chromium.
Недостатки
WebP имеет ряд ограничений, которые могут затруднить его использование в некоторых сценариях. Формат не поддерживает цветовые пространства[3] CMYK и LAB, что ограничивает его применение в полиграфии и профессиональной фотографии.
Ограниченная поддержка метаданных в WebP может создавать проблемы при работе с изображениями, требующими сохранения расширенной информации, такой как данные о геолокации или сведения об авторских правах. Это особенно актуально для фотографов и агентств, работающих с большими объёмами визуального контента.
WebP не поддерживает прогрессивное отображение, что может негативно сказаться на пользовательском опыте при загрузке больших изображений на медленных соединениях. В отличие от JPEG, который может показывать предварительное изображение низкого качества во время загрузки, WebP требует полной загрузки файла перед отображением.
Несмотря на широкую поддержку в современных браузерах, WebP всё ещё может вызывать проблемы совместимости с некоторыми устаревшими системами и программами. Это особенно заметно в корпоративной среде, где обновление программного обеспечения может происходить медленно.
При высоких степенях сжатия WebP может проявлять артефакты компрессии, особенно заметные на градиентных переходах и в областях с мелкими деталями. Это может ограничивать использование формата в случаях, когда требуется максимальное качество изображения при минимальном размере файла.
Отсутствие поддержки WebP в некоторых популярных графических редакторах и инструментах обработки изображений может усложнять рабочий процесс для дизайнеров и веб-разработчиков. Это часто требует дополнительных шагов по конвертации файлов, что может увеличивать время разработки.
Анимированные WebP-файлы могут потреблять больше ресурсов процессора при воспроизведении по сравнению с GIF, особенно на мобильных устройствах. Это может привести к повышенному расходу батареи и снижению производительности на менее мощных устройствах.