WebP — формат сжатия изображений с потерями и без потерь качества, предложенный компанией Google Inc. в 2010 году. Основан на алгоритме сжатия неподвижных изображений (ключевых кадров) из видеокодека VP8. Использует контейнер RIFF.
Для работы с данным форматом существует открытое программное обеспечение, в частности, библиотека libvpx и конвертер webpconv.
Формат webp - новое требование Google.
Поисковые роботы определяют изображения на сжатие. Положение сайта в выдаче напрямую связано с тем используется формат webp на сайте или нет. При использовании формата webp, сайт поднимается в поиске выше.
Сравнение популярных графических форматов | JPG | WEBP | PNG | GIF |
---|---|---|---|---|
год выпуска | 1991 | 2010 | 1996 | 1987 |
сжатие с потерями | + | + | - | + |
сжатие без потерь | - | + | + | - |
анимация | - | + | - | + |
прозрачность | - | + | + | + |
прогрессивность (миниатюра для предпросмотра) | + | - | - | - |
Сжать изображение jpg без потерь на 26% - 60% меньше по размеру по сравнению с PNG. Изображения WebP с потерями на 25–34% меньше сопоставимых изображений JPEG при эквивалентном индексе качества SSIM .
Все готовые блоки сайта на платформе топ.сайт поддерживают автоматическую конвертацию изображений в формат webp.
Сжатие состоит из двух этапов. На первом делается попытка «предсказать» содержимое одних блоков по уже декодированным (три блока над текущим и один блок слева от него), на втором кодируется ошибка предсказания. Блоки отрисовываются в порядке слева направо и сверху вниз. Режимы предсказания работают с 3 размерами макроблоков:
В VP8 и WebP реализованы режимы предсказания:
Для сжатия ошибок предсказания и подблоков, которые не были предсказаны, используется дискретное косинусное преобразование DCT (и, изредка, преобразование Уолша—Адамара, WHT). Оба преобразования работают с подблоками размером 4х4 пиксела. Реализация преобразований выполнена на представлении чисел с фиксированной точностью, чтобы уменьшить ошибки округления. Коэффициенты DCT и WHT пакуются энтропийным кодеком.
WebP не работает в цветовом пространстве RGB, перед кодированием изображение переводится в YUV с глубиной 8 бит и форматом 4:2:0. Перевод осуществляется согласно стандарту ITU-R BT.601.
Для некоторых изображений может использоваться алгоритм upscaling, когда кодируется не само изображение, а его отмасштабированная (уменьшенная) версия. Декодер проводит обратное преобразование (увеличение изображения).