JPEG, PNG, WebP чи AVIF: який формат лишити?
У мене одне й те саме зображення в чотирьох форматах. Який лишити, а які видалити?
Починайте із зображення, а не з формату
Суперечка про формат майже завжди не та суперечка, з якої варто починати. Результат вирішує вміст зображення. Фотографії складаються з плавних зашумлених градієнтів без повторюваних послідовностей пікселів. Знімки екрана, логотипи, схеми та піксель-арт складаються з рівних заливок, різких країв і невеликої кількості точних кольорів. Ці два типи зображень стискаються геть різними механізмами, і формат, чудовий для одного, зазвичай посередній для іншого.
Тож перше запитання не «чи AVIF кращий за JPEG». Воно звучить так: «це фотографія чи графіка і чи потрібна тут прозорість». Щойно ви на нього відповісте, у короткому списку лишається один-два формати.
Що насправді вміє кожен формат
| Формат | Стиснення | Прозорість | Анімація | Де найкраще |
|---|---|---|---|---|
| JPEG | Лише з втратами | Ні | Ні | Фотографії, які мають відкриватися будь-де |
| PNG | Лише без втрат | Так, 8-бітна альфа | Ні (APNG — окрема можливість) | Знімки екрана, логотипи, плоска графіка, точні пікселі |
| WebP | З втратами або без втрат | Так, в обох режимах | Так | Універсальна заміна і для JPEG, і для PNG |
| AVIF | З втратами або без втрат | Так, зокрема 10-бітна | Так | Фотографії, коли час кодування прийнятний |
Таблиця приховує одну річ, яку варто сказати вголос: PNG неможливо зменшити, опустивши повзунок якості, бо повзунка якості в нього немає. Оптимізатор PNG зменшує файл, підбираючи кращий фільтр передбачення та кращу палітру, а не викидаючи деталі. Саме тому фотографія, збережена як PNG, лишається величезною, хоч би яким інструментом ви її обробляли: у форматі просто немає механізму, який дозволив би відкинути інформацію.
«З втратами» і «без втрат» — не оцінки якості
Спокусливо читати «без втрат» як «добре», а «з втратами» — як «погано». Це не оцінки якості, це різні задачі. «Без втрат» означає, що декодовані пікселі побітово збігаються з тим, що подали на вхід; це правильний вибір тоді, коли важать саме пікселі, як у знімку інтерфейсу, з якого хтось читатиме текст. «З втратами» означає, що кодеру дозволено викидати деталі, які око погано помічає, — і лише завдяки цьому дванадцятимегапіксельна фотографія взагалі вміщується в кількасот кілобайтів.
Корисне правило: якщо ви помітите бодай один неправильний піксель, беріть формат без втрат. Якщо не помітите, формат із втратами на розумному налаштуванні якості дасть значно менший файл, а різниці за звичайного розміру перегляду ви не побачите.
Чим WebP і AVIF заслуговують на своє місце
Обидва новіші формати мають інструменти передбачення й перетворення, яких немає в JPEG, стандартизованого 1992 року. На практиці це означає, що вони досягають схожої візуальної якості за меншого розміру, і обидва вміють прозорість, чого JPEG не вміє взагалі. WebP — прагматичний: він швидко кодує і замінює одним форматом і JPEG, і PNG. AVIF — амбітний: він використовує внутрішньокадрові інструменти відеокодека AV1, підтримує більшу бітову глибину і для фотографічного вмісту зазвичай дає найменший файл із чотирьох.
Ціна — час кодування. Кодування AVIF є задачею пошуку, і кодер витрачає на неї реальний процесорний час. У вкладці браузера, на телефоні цей час — ваш; саме тому FileSlimmer показує прогрес по кожному файлу для AVIF, а не вдає, що очікування немає. Якщо ви конвертуєте одне головне зображення, такий обмін очевидно вартий того. Якщо чотириста — подумайте про WebP.
Конвертація старого файлу не скасовує старих пошкоджень
Це найпоширеніше розчарування. Якщо взяти JPEG, збережений із низькою якістю багато років тому, і конвертувати його в PNG або у WebP без втрат, блокові артефакти та ореоли будуть точнісінько скопійовані в новий файл. «Без втрат» означає «ідентично до входу», а на вході пошкодження вже вплавлені в пікселі. Ви отримаєте більший файл із рівно тими самими вадами.
Конвертація файлу з втратами в інший формат із втратами — це другий, окремий прохід стиснення, тож він може додати згори власні артефакти. Коли є вибір, конвертуйте з найоригінальнішого файлу, який у вас лишився: оригіналу з камери, експорту з дизайнерського редактора, — а не з копії, яка вже пройшла через компресор.
Короткий список, яким справді можна користуватися
- Фотографія, яка має відкриватися будь-де, зокрема в старому програмному забезпеченні: лишайте JPEG.
- Фотографія для власного сайту чи застосунку, і ви контролюєте, що її читатиме: WebP або AVIF, якщо можете дозволити собі час на кодування.
- Знімок екрана, логотип, схема, діаграма чи будь-що з текстом у пікселях: PNG або WebP без втрат, якщо розмір важливіший за універсальну підтримку.
- Усе, що потребує прозорого фону: PNG, WebP або AVIF. Не JPEG.
- Архівна копія, яку ви, можливо, ще редагуватимете: зберігайте оригінальний файл, хоч би який він був, а кожну стиснуту версію вважайте одноразовою.
Чого це порівняння вам не скаже
Тут немає рейтингу за розміром, і це навмисно. Опубліковані порівняння виміряні на конкретному наборі зображень, із конкретними версіями кодерів і налаштуваннями, і результат змінюється, щойно змінюється бодай щось із цього. Ваше власне зображення — єдиний тест, який описує ваше власне зображення. Сконвертуйте одне й те саме джерело по одному разу в кожен формат-кандидат на прийнятній для вас якості, а тоді порівняйте два числа і два зображення поруч.
Підтримка теж змінюється з часом. Перш ніж переводити цілу бібліотеку на новіший формат, перевірте, що саме має відкривати ці файли: браузер, галерея телефона, принтер, десятирічний настільний застосунок клієнта. Найкращий формат — найменший із тих, які все з цього списку справді може прочитати.
Інструменти для цього
Джерела
- ITU-T T.81 — the JPEG standard
- W3C — Portable Network Graphics (PNG) Specification (Third Edition)
- Google — WebP container and bitstream documentation
- Alliance for Open Media — AV1 Image File Format (AVIF)