Как из 6 Гб я делал 400 Мб без потери качества
Итак, у меня возникла проблема: на хостинге закончилось место. А у меня там хранится много оригинальных постеров фильмов в JPEG и логотипов в PNG, которые хочется держать без сжатия и в хорошем качестве.
Мы живём одной ногой в 2026 году, и сейчас использовать для веба JPG или PNG — большая глупость. Форматы старые, тяжёлые, много чего не умеют. Нужно искать что-то более современное.
Современными стандартами сейчас считаются WebP и AVIF. Оба хорошо сжимают, оба поддерживают альфа-канал. AVIF дополнительно поддерживает HDR. Но в режиме lossless (без потери качества) они весят даже больше, чем JPEG или PNG, а при сжатии теряется качество.
В прошлом году я уже проводил лабораторные эксперименты и тогда сильно разочаровался в AVIF, так как он сжимает лучше, чем WebP, только при значениях примерно от 70–60. Но при этом качество становится заметно хуже, чем у WebP, поэтому я его не очень люблю. Единственное место, где AVIF показывал хорошие результаты, — это картинки со сплошными цветами (например, кадр из «Симпсонов» отлично сжимается без потери качества).
И вот в этом году я стал больше присматриваться к JXL (JPEG XL). Это формат, который продвигают как замену устаревшего JPEG. Шикарный формат, скажу я вам. И единственный его минус — Google отказался от поддержки в Chrome, а Safari и Mozilla пока включили его у себя через флаг. При этом Adobe, Apple, Microsoft и Samsung уже включили его поддержку. А Google, похоже (гипотеза), сопротивляется только потому, что продвигает AVIF (в разработке которого участвует) и параллельно пилит свою замену JPEG, о чём я писал в апреле.
Отбросим лирику и перейдём к цифрам моего эксперимента. Я ставил перед собой следующие задачи: 1. В чём хранить файлы на сервере (чтобы весило меньше, но с тем же качеством) 2. Насколько сильно формат сжимает (какую выгоду я получу) 3. Сколько времени и ресурсов уходит на конвертацию 4. Современный формат с альфа-каналом, HDR, слоями и анимацией Как я проводил эксперимент Я брал постеры 1920×1080 в JPEG/PNG и конвертировал их с разными параметрами в JXL, WebP и AVIF, после чего сравнивал результаты. Стартовал с максимальных значений — без сжатия (q=100) — и опускался с шагом 10: q=90, q=80, q=70, q=60. Ниже опускаться смысла нет — там уже слишком сильная пережатость.
Итоги и выводы 1. Если цель — перегнать JPEG без потерь, побеждает JXL с параметром lossless 2. Если цель — перегнать PNG без потерь, поровну JXL и WEBP 3. При компрессии в диапазоне от 90 до 60 в 50% случаев побеждает JXL, второе место — WebP. При этом потеря качества у JXL почти незаметна 4. AVIF — лузер. Во всех тестах он сжимал хуже всего. Немного лучше чувствует себя при очень сильном сжатии, но с таким качеством на него нет смысла смотреть 5. Во всех тестах лидером по скорости конвертации был WebP
➡️➡️➡️➡️➡️****Вывод Если ваш сервис хранит исходники, которые потом браузер всё равно забирает в WebP с даунскейлом, то хранить исходники логичнее всего в JXL если первоначальный источник был JPEG. Если смешано PNGJPEG, то тут или JXL или WEBP. Для примера: я сжал папку с постерами (2800 шт.), которая весила 6,69 Гб — теперь она весит 478 Мб с тем же качеством.