Почему WebP легче JPEG при том же качестве
Предсказание блоков, арифметическое кодирование и два режима сжатия: разбор механизмов, дающих 25–35 % экономии, и границ, где выигрыш исчезает.
WebP вырос из внутрикадрового кодирования видеокодека VP8: изображение сжимается теми же средствами, которыми видеокодек описывает опорный кадр. JPEG, стандартизованный в 1992 году, устроен проще, и разрыв между ними объясняется тремя конкретными различиями, а не «более современным алгоритмом».
Предсказание вместо голого преобразования
JPEG режет изображение на блоки 8×8 пикселей и обрабатывает каждый независимо: дискретное косинусное преобразование, деление коэффициентов на матрицу квантования, кодирование остатка. Соседние блоки друг о друге не знают, поэтому одинаковый фон описывается заново в каждом блоке.
WebP сначала предсказывает содержимое блока 4×4 или 16×16 по уже закодированным соседям — сверху, слева, по диагонали, — и кодирует только разницу между предсказанием и реальностью. На ровном фоне разница близка к нулю и почти не занимает места. Именно отсюда основная часть выигрыша: на фотографиях с крупными однородными областями, схемах и интерфейсных скриншотах он максимален.
Энтропийное кодирование и фильтр
Второе различие — способ упаковки коэффициентов. JPEG использует коды Хаффмана: длина кода кратна биту, и на символ с вероятностью 0,9 всё равно тратится не меньше одного бита. WebP применяет булев арифметический кодер, который приближается к теоретическому пределу и выигрывает ещё 5–10 % при том же наборе коэффициентов.
Третье — деблокирующий фильтр. После восстановления блоков WebP сглаживает их границы, поэтому характерная для сильно сжатого JPEG сетка 8×8 не проступает даже на низком качестве. Изображение мягче теряет детали вместо того, чтобы рассыпаться на квадраты, — на глаз это читается как «выше качество», хотя формально измеримая ошибка может быть сопоставимой.
Где выигрыш пропадает
На типовой фотографии при визуально сопоставимом качестве WebP занимает на 25–35 % меньше JPEG. Но выигрыш неравномерен: на мелкой высокочастотной текстуре — листве, гравии, шуме высоких ISO — предсказание работает плохо, и разница сжимается до 10 %. На изображениях с крупными плоскими заливками и резкими краями WebP переходит в режим без потерь и выигрывает у PNG 20–30 %, что для сайта существеннее.
Практический вывод. WebP берут для веба: он один закрывает роли и JPEG, и PNG, поддерживает прозрачность и анимацию. За пределами браузера действуют ограничения: сторона изображения не может превышать 16 383 пикселя, Photoshop открывает формат без плагина только с версии 23, типографии и часть площадок его не принимают. Скачанный с сайта WebP при переводе в JPEG проходит квантование повторно, поэтому опускать шкалу качества ниже 90 здесь не стоит.