Libavif - скачать полную версию бесплатно на русском

Libavif: работа с AVIF-изображениями

Libavif: работа с AVIF-изображениями

Libavif — специализированный инструмент для кодирования, декодирования и технической проверки изображений AVIF. Это не фоторедактор с привычным окном, кнопкой Открыть, панелью слоев и визуальным предпросмотром. Основной рабочий интерфейс Libavif — командная строка, а главные пользовательские утилиты проекта — avifenc, avifdec и вспомогательные диагностические инструменты. В практическом обзоре Libavif правильнее рассматривать не как еще один конвертер картинок, а как точную утилиту для тех, кому нужно управляемое AVIF-кодирование, AVIF-декодирование, работа с прозрачностью, цветом, глубиной, YUV-форматами и автоматизацией.
Выбор редакции

Скачать Libavif бесплатно

Рекомендуем

ФотоМАСТЕР

  • Простой интерфейс
  • Ретушь и замена фона
  • Фильтры и автокоррекция
  • Быстрая обработка фото

Libavif

  • Сложнее простых редакторов
  • Может быть избыточна для быстрых правок
  • Нужно время на освоение
  • Не все функции нужны новичку

Libavif реализует работу с AV1 Image File Format и предоставляет C-библиотеку вместе с консольными приложениями avifenc и avifdec. Проект кодирует и декодирует AV1-совместимые YUV-форматы и битовые глубины, включая изображения с альфа-каналом.

Libavif на GitHub: репозиторий AOMediaCodec/libavif

Главное отличие Libavif от графических AVIF-конвертеров — не в простоте, а в контроле. Пользователь задает параметры явно: качество цвета, качество альфа-канала, скорость кодирования, количество потоков, выходную YUV-схему, глубину, режим lossless, прогрессивную структуру, сетку, кадры, метаданные и ограничения декодирования. Такой формат работы не рассчитан на случайное нажатие сохранить как AVIF. Он рассчитан на повторяемый результат: одна команда, один набор параметров, одинаковое поведение в скриптах, сборочных процессах и серверной обработке.

Libavif особенно полезна там, где AVIF нужен не разово, а системно: подготовка изображений для сайта, автоматическое сжатие ассетов, тестирование поддержки AVIF в приложении, преобразование PNG/JPEG в AVIF, обратное декодирование AVIF в PNG/JPEG/Y4M, диагностика файлов через

avifdec --info, проверка метаданных, подбор профилей качества для изображений с прозрачностью и создание воспроизводимого пайплайна оптимизации.

Что представляет собой Libavif

Libavif состоит из двух уровней.

Первый уровень — библиотека. Она нужна разработчикам, которые встраивают AVIF-кодирование и AVIF-декодирование в собственные приложения. Через библиотеку можно программно создавать, читать и обрабатывать AVIF-файлы, работать с AVIF-контейнером, цветовой информацией, альфа-каналом и параметрами кодека.

Второй уровень — консольные утилиты. Именно с ними чаще сталкивается пользователь:

Утилита Назначение Типичная задача
avifenc Кодирование изображения в AVIF Преобразовать photo.jpg или image.png в image.avif
avifdec Декодирование AVIF Получить output.png, output.jpg или output.y4m из AVIF
avifdump Технический разбор структуры AVIF Посмотреть внутренние блоки и свойства файла
avifgainmaputil Работа с gain map-сценариями Обработка HDR/SDR-связанных данных в специальных workflow

В обычной работе основной акцент приходится на avifenc и avifdec. avifenc сжимает JPEG, PNG или Y4M в AVIF, а avifdec распаковывает AVIF в JPEG, PNG или Y4M. Синтаксис avifenc построен вокруг схемы avifenc [options] input.[jpg|jpeg|png|y4m] output.avif, а avifdec работает по схеме avifdec [options] input.avif output.[jpg|jpeg|png|y4m] или avifdec --info input.avif

.

Важная особенность: Libavif не редактирует изображение в бытовом смысле. В ней нет кистей, штампа, кривых, пластики, ретуши, кадрирования мышью, истории действий и холста. Она не заменяет GIMP, Krita, Photoshop или Affinity Photo. Ее задача другая: принять готовый входной файл, закодировать его в AVIF с заданными параметрами или декодировать AVIF обратно в удобный формат.

Для каких задач нужна программа

Libavif хорошо подходит для задач, где важны точность, повторяемость и управление параметрами.

Подготовка изображений для сайта

AVIF часто используют для уменьшения веса изображений на страницах. В таком сценарии Libavif берет исходные JPEG или PNG и создает .avif-версии для тега <picture>

, CDN, статического сайта или frontend-сборки.

Пример базового преобразования JPEG-фото:

avifenc --qcolor 75 --speed 6 photo.jpg photo.avif

Такой подход удобен тем, что одну и ту же команду можно запускать на сотнях файлов. Если качество и скорость подобраны правильно, результат легко воспроизводится при каждом обновлении проекта.

Конвертация PNG с прозрачностью

Для иконок, интерфейсных элементов, логотипов и стикеров важно отдельно контролировать прозрачность. В Libavif за это отвечает --qalpha.

avifenc --qcolor 80 --qalpha 100 icon.png icon.avif

Здесь цветовая часть кодируется с качеством 80, а альфа-канал сохраняется максимально аккуратно. Параметры --qcolor и --qalpha принимают значения от 0 до 100, где 100 соответствует lossless-режиму для соответствующей составляющей.

Обратное преобразование AVIF в PNG или JPEG

avifdec нужен, когда AVIF-файл требуется проверить, распаковать, передать в программу без AVIF-поддержки или использовать в пайплайне, где следующая стадия принимает PNG/JPEG/Y4M.

avifdec image.avif image.png

Для JPEG-выхода используется параметр качества:

avifdec --quality 92 image.avif image.jpg

Параметр --quality у avifdec относится к JPEG-выходу и задается в диапазоне 0..100. PNG-выход настраивается через --png-compress.

Диагностика AVIF-файлов

Libavif удобна не только для конвертации, но и для проверки. Команда avifdec --info декодирует кадры и выводит информацию о файле без сохранения результата на диск.

avifdec --info image.avif

Этот режим полезен, когда нужно понять, что внутри файла: какая глубина, какой формат, есть ли последовательность кадров, как ведет себя декодер, не упирается ли изображение в ограничения размера.

Автоматизация обработки

Поскольку Libavif работает через командную строку, она хорошо встраивается в Bash, PowerShell, Makefile, npm scripts, CI, backend-обработчики и batch-процессы. Графический интерфейс в таких сценариях только мешал бы: автоматизации нужны параметры, коды возврата и предсказуемые имена файлов.

Пример Bash-обработки всех PNG в каталоге:

for f in *.png; do
  avifenc --qcolor 78 --speed 6 --jobs all "$f" "${f%.png}.avif"
done

Пример PowerShell:

Get-ChildItem *.png | ForEach-Object {
  .avifenc.exe --qcolor 78 --speed 6 --jobs all $_.Name ($_.BaseName + ".avif")
}

Рабочий интерфейс Libavif

У Libavif нет графической оболочки, поэтому ее интерфейсом становится терминал. Это не недостаток, а базовая логика программы. Все действия выполняются через команды, а роль элементов интерфейса выполняют параметры.

Типичная команда состоит из нескольких частей:

avifenc --qcolor 75 --speed 6 input.png output.avif

Разбор команды:

Часть команды Что означает
avifenc Запускается кодировщик AVIF
--qcolor 75 Задается качество цветовой части
--speed 6 Выбирается скорость работы кодера
input.png Указывается исходное изображение
output.avif Указывается итоговый AVIF-файл

Для avifdec логика обратная:

avifdec input.avif output.png
Часть команды Что означает
avifdec Запускается декодер AVIF
input.avif Указывается исходный AVIF
output.png Задается файл, который нужно получить
официальный GitHub libavif: README/команды avifenc/avifdec

Справка вызывается стандартно:

avifenc --help
avifdec --help

Версия утилиты:

avifenc --version
avifdec --version

Техническая информация о файле:

avifdec --info input.avif

Раздел Build Command Lines для Libavif с командами сборки avifenc и avifdec

В повседневном использовании удобнее думать о Libavif как о точном приборе. В графическом редакторе пользователь видит ползунок и примерно оценивает результат глазами. В Libavif пользователь прямо записывает, что именно нужно: --qcolor 80, --qalpha 100, --yuv 444, --speed 4, --jobs all, --lossless. Такой подход требует аккуратности, зато дает контроль.

Поддерживаемые операции

Libavif выполняет ограниченный, но хорошо очерченный набор задач.

Кодирование в AVIF

avifenc

принимает JPEG, PNG и Y4M и создает AVIF. Входные форматы кодировщика — JPEG, PNG и YUV4MPEG2/Y4M.

Примеры:

avifenc input.jpg output.avif
avifenc input.jpeg output.avif
avifenc input.png output.avif
avifenc input.y4m output.avif

Декодирование из AVIF

avifdec

принимает AVIF и сохраняет результат в JPEG, PNG или Y4M. Выходной формат определяется расширением итогового файла.

Примеры:

avifdec input.avif output.png
avifdec input.avif output.jpg
avifdec input.avif output.y4m

Проверка информации

avifdec --info input.avif

Режим --info удобен при диагностике файлов, сравнении результатов кодирования, проверке последовательностей и прогрессивных AVIF.

Управление качеством

Для avifenc основными параметрами качества являются --qcolor и --qalpha.

avifenc --qcolor 70 input.jpg output.avif
avifenc --qcolor 82 --qalpha 100 input.png output.avif

Цвет и прозрачность задаются отдельно, поэтому Libavif хорошо подходит для PNG с альфа-каналом: можно сжимать цветовую часть сильнее, но оставить прозрачность без заметных артефактов.

Управление скоростью

Скорость кодирования задается параметром --speed. Диапазон — от 0 до 10: 0 — самый медленный режим, 10 — самый быстрый. Значение по умолчанию — 6.

avifenc --speed 2 input.png output.avif
avifenc --speed 8 input.png output-fast.avif

Низкая скорость обычно выбирается для финальной оптимизации, высокая — для быстрых черновых прогонов или массовой обработки, где важнее время.

Многопоточность

--jobs задает количество рабочих потоков. Значение all позволяет использовать доступные ядра процессора.

avifenc --jobs all --qcolor 75 input.jpg output.avif
avifdec --jobs all input.avif output.png

На больших изображениях и пакетной обработке это один из самых практичных параметров.

Режим без потерь

--lossless переводит кодирование в режим, ориентированный на сохранение данных без потерь.

avifenc --lossless input.png output.avif

Lossless не означает всегда самый маленький файл. Для некоторых изображений без потерь AVIF может получиться крупнее, чем результат с разумным lossy-качеством. Особенно это заметно на шумных фотографиях, сложных текстурах и уже сжатых JPEG.

Глубина цвета

Параметр --depth задает выходную глубину на канал для JPEG/PNG-входа: 8, 10 или 12 бит. Для Y4M глубина должна соответствовать входному материалу.

avifenc --depth 10 input.png output.avif
avifenc --depth 12 input.png output.avif

Глубина важна для HDR, широких цветовых пространств, градиентов и сценариев, где 8 бит на канал дают заметные ступеньки.

YUV-формат

Параметр --yuv задает выходную схему:

avifenc --yuv 444 input.png output.avif
avifenc --yuv 420 input.jpg output.avif
avifenc --yuv 400 gray.png gray.avif

Доступны auto, 444, 422, 420 и 400; для Y4M формат сохраняется. При auto JPEG по возможности учитывает внутренний формат, grayscale PNG переходит в 400, а остальные случаи получают 444

.

Практический смысл:

Формат Что сохраняет Где применять
444 Полную цветовую детализацию Скриншоты, интерфейсы, текст, иконки
422 Промежуточный вариант Видео-подобные материалы, отдельные workflow
420 Уменьшенную цветовую детализацию Фотографии для веба
400 Только яркостный канал Черно-белые изображения
auto Автоматический выбор Базовое кодирование без ручной настройки

Для фотографий 420 часто дает хороший баланс размера и качества. Для скриншотов интерфейса, мелкого текста, схем и UI-иконок лучше использовать 444, потому что цветовые контуры не будут размываться из-за субдискретизации.

avifenc: кодирование изображений в AVIF

avifenc — главный инструмент Libavif для создания AVIF-файлов. Он принимает готовое изображение, применяет заданные параметры и сохраняет результат в .avif.

Документация avifenc в проекте Libavif

Базовая конвертация PNG в AVIF

Самый простой сценарий:

avifenc input.png output.avif

Команда берет input.png, кодирует изображение и создает output.avif

. Такой запуск подходит для быстрой проверки, но для реальной оптимизации обычно задают качество и скорость явно.

Более контролируемый вариант:

avifenc --qcolor 78 --speed 6 input.png output.avif

Здесь сразу видно, с какими параметрами создан файл. Через месяц или на другой машине команду можно повторить без угадывания настроек.

Конвертация JPEG в AVIF

avifenc --qcolor 72 --speed 6 photo.jpg photo.avif

JPEG уже является форматом с потерями. Если исходная фотография содержит JPEG-артефакты, Libavif не восстановит детали. Она закодирует то изображение, которое получила на входе. Поэтому для максимального качества лучше кодировать AVIF из исходников высокого качества, а не из уже сильно пережатых JPEG.

Для веб-фотографий разумный стартовый профиль:

avifenc --qcolor 70 --speed 6 --jobs all photo.jpg photo.avif

Для более аккуратного результата:

avifenc --qcolor 82 --speed 4 --jobs all photo.jpg photo.avif

Для быстрого массового прогона:

avifenc --qcolor 65 --speed 8 --jobs all photo.jpg photo.avif

Работа с PNG и прозрачностью

PNG часто используют для графики с прозрачностью: логотипы, кнопки, иконки, элементы интерфейса. В таких файлах альфа-канал важен не меньше цвета. Если прозрачность будет сжата слишком грубо, вокруг объекта появятся рваные края, грязные ореолы и ступеньки.

Практичный вариант:

avifenc --qcolor 80 --qalpha 100 --yuv 444 icon.png icon.avif

Что здесь происходит:

Параметр Значение
--qcolor 80 Цветовая часть сжимается достаточно аккуратно
--qalpha 100 Альфа-канал сохраняется без потерь
--yuv 444 Цветовая детализация не режется
icon.png Входной PNG с прозрачностью
icon.avif Итоговый AVIF

Для простых иконок без полутонов можно попробовать lossless:

avifenc --lossless icon.png icon.avif

Но lossless нужно проверять по размеру. Иногда lossy-цвет с безупречной альфой дает меньший файл без видимой потери.

Качество цвета: --qcolor

--qcolor

— основной параметр визуального качества цветовой части. Диапазон 0..100, где 100 соответствует lossless для цвета.

Примеры:

avifenc --qcolor 55 input.jpg output.avif
avifenc --qcolor 75 input.jpg output.avif
avifenc --qcolor 90 input.jpg output.avif

Практическая логика:

Диапазон Характер результата
50–60 Агрессивное сжатие, подходит не для всех изображений
65–75 Часто удобный веб-диапазон для фотографий
80–88 Аккуратный результат для важных изображений
90+ Высокое качество, файл заметно крупнее
100 Lossless для цветовой части

Нет универсального значения, которое подходит всем изображениям. Фото, скриншот интерфейса, градиент, логотип и текстовая схема реагируют на сжатие по-разному.

Качество альфа-канала: --qalpha

--qalpha задает качество прозрачности. Диапазон такой же: 0..100, где 100 соответствует lossless для альфа-канала.

avifenc --qcolor 76 --qalpha 100 badge.png badge.avif

На практике альфу часто оставляют выше, чем цвет. Для веб-иконок и логотипов плохая прозрачность заметнее, чем небольшая потеря цветовой детализации.

Скорость кодирования: --speed

--speed влияет на время кодирования и эффективность сжатия. Диапазон 0..10: чем меньше число, тем медленнее кодирование; чем больше число, тем быстрее.

avifenc --speed 0 input.png output.avif
avifenc --speed 6 input.png output.avif
avifenc --speed 10 input.png output.avif

Рабочие ориентиры:

Значение Когда использовать
0–2 Финальная оптимизация, когда время не критично
3–5 Качественная обработка важных изображений
6 Сбалансированный режим
7–8 Быстрая пакетная обработка
9–10 Черновики, превью, быстрые тесты

Для большого сайта не всегда разумно кодировать все изображения на --speed 0: экономия размера может не оправдать затраты времени. Лучше протестировать несколько профилей на реальном наборе изображений.

Потоки: --jobs

--jobs управляет количеством рабочих потоков. Значение all использует доступные ядра процессора.

avifenc --jobs all --qcolor 75 --speed 6 input.jpg output.avif

При обработке больших изображений и каталогов этот параметр существенно влияет на общее время. Для сервера или CI можно ограничить число потоков, чтобы не забивать машину полностью:

avifenc --jobs 4 --qcolor 75 --speed 6 input.jpg output.avif

Запрет перезаписи: --no-overwrite

--no-overwrite защищает существующий выходной файл.

avifenc --no-overwrite input.png output.avif

Это полезно в пакетных скриптах, где ошибка в имени файла может случайно уничтожить уже подготовленный результат. Параметр особенно важен при обработке каталогов, где выходные имена строятся автоматически.

Выходной файл через --output

Обычно выходной файл указывается последним аргументом:

avifenc input.png output.avif

Но можно задать его явно:

avifenc input.png --output output.avif

Этот вариант удобен в скриптах, где проще формировать параметр --output, чем переставлять аргументы.

Lossless-кодирование

avifenc --lossless input.png output.avif

Режим без потерь лучше всего подходит для:

  • графики с плоскими областями;
  • технических изображений;
  • изображений, где нельзя допускать искажения пикселей;
  • архивных копий;
  • промежуточных файлов в рабочем процессе.

Для фотографий lossless часто дает слишком большой файл. Если задача — веб-оптимизация, чаще выигрывает аккуратный lossy-профиль:

avifenc --qcolor 78 --speed 5 photo.png photo.avif

Глубина: --depth

avifenc --depth 8 input.png output.avif
avifenc --depth 10 input.png output.avif
avifenc --depth 12 input.png output.avif

Для обычной веб-графики чаще достаточно 8 бит. Для градиентов, HDR-подготовки и сложных цветовых материалов нужны 10 или 12 бит. Параметр --depth у avifenc принимает 8, 10 или 12 для JPEG/PNG-входа.

Цветовой диапазон и YUV

Параметр --yuv

— один из ключевых при подготовке изображений разного типа.

Для фотографии:

avifenc --qcolor 72 --yuv 420 photo.jpg photo.avif

Для скриншота интерфейса:

avifenc --qcolor 85 --yuv 444 screenshot.png screenshot.avif

Для grayscale:

avifenc --qcolor 80 --yuv 400 gray.png gray.avif

420 уменьшает цветовую информацию и хорошо подходит для фото, где глаз хуже замечает цветовое прореживание. 444 сохраняет цветовую детализацию и лучше подходит для текста, схем, пиктограмм, UI и изображений с резкими цветными границами.

Premultiply alpha: --premultiply

avifenc --premultiply icon.png icon.avif

--premultiply предварительно умножает цвет на альфа-канал и сигнализирует это в AVIF. Такой режим нужен не всегда. Он имеет смысл в пайплайнах, где последующая обработка ожидает premultiplied alpha и где важно согласованное смешивание цвета и прозрачности.

Метаданные

avifenc умеет игнорировать отдельные типы метаданных:

avifenc --ignore-exif input.jpg output.avif
avifenc --ignore-xmp input.jpg output.avif
avifenc --ignore-profile input.png output.avif
avifenc --ignore-alpha input.png output.avif

Практическое значение:

Параметр Что делает
--ignore-exif Не переносит Exif
--ignore-xmp Не переносит XMP
--ignore-profile / --ignore-icc Не использует встроенный цветовой профиль
--ignore-alpha Игнорирует альфа-канал

Эти флаги нужны, когда файл должен быть максимально компактным или когда метаданные мешают корректной обработке. Но удаление цветового профиля может изменить внешний вид изображения в некоторых workflow, поэтому для важных материалов это проверяют глазами.

Поворот, отражение и чистая область

avifenc поддерживает запись свойств, связанных с трансформациями и областью отображения:

avifenc --irot 1 input.png output.avif
avifenc --imir 1 input.png output.avif
avifenc --crop 0,0,800,600 input.png output.avif

Назначение:

Параметр Что задает
--irot Поворот с шагом 90 градусов
--imir Отражение
--crop Чистую область через прямоугольник
--clap Clean aperture через точные дробные значения

Это не замена визуальному кадрированию. Параметры записывают свойства контейнера, а не превращают Libavif в графический редактор.

Прогрессивный AVIF

--progressive включает progressive AVIF-кодирование.

avifenc --progressive --qcolor 75 input.jpg output.avif

Прогрессивная структура полезна там, где изображение должно проявляться слоями или где важен постепенный вывод. Поддержка такого поведения зависит от декодера и окружения, поэтому progressive AVIF обязательно проверяют в целевом просмотрщике или браузере.

Layered AVIF

--layered используется для layered AVIF.

avifenc --layered input1.png input2.png output.avif

Layered-подход связан с несколькими слоями/кадрами внутри AVIF-структуры. В обычной веб-оптимизации он нужен редко, но важен для продвинутых сценариев, где файл должен содержать не одну простую статичную картинку.

Grid AVIF

Grid AVIF позволяет собирать изображение как сетку. В avifenc для этого используется --grid MxN.

avifenc --grid 2x2 tile1.png tile2.png tile3.png tile4.png output.avif

Сетка полезна для крупных изображений, где внутреннее разбиение облегчает кодирование, хранение или декодирование. Это не то же самое, что вручную склеить картинку в редакторе: grid — контейнерная структура AVIF.

Расширенные параметры кодека: --advanced

--advanced KEY[=VALUE] передает низкоуровневый параметр в кодек.

avifenc --advanced cq-level=24 --advanced end-usage=q input.png output.avif

Этот режим предназначен для пользователей, которые понимают поведение конкретного AV1-кодека. Для обычной оптимизации достаточно --qcolor, --qalpha, --speed, --jobs, --yuv и --lossless.

avifdec: декодирование и проверка AVIF

avifdec выполняет обратную задачу: берет AVIF и создает PNG, JPEG или Y4M. Он также показывает техническую информацию о файле.

Документация avifdec в проекте Libavif

Декодирование AVIF в PNG

avifdec input.avif output.png

PNG-выход подходит, когда нужно получить изображение без дополнительного JPEG-сжатия. Это лучший вариант для проверки пикселей, прозрачности, интерфейсной графики и последующей обработки в редакторе.

Декодирование AVIF в JPEG

avifdec --quality 92 input.avif output.jpg

JPEG-выход удобен, когда целевая система не принимает AVIF или PNG, но принимает JPEG. Параметр --quality относится только к JPEG.

Декодирование в Y4M

avifdec input.avif output.y4m

Y4M нужен в технических workflow, связанных с видеокодеками, тестированием, сравнением и анализом YUV-данных. Для обычного пользователя этот формат редко нужен, но для разработчиков и специалистов по кодированию он полезен.

Просмотр информации: --info

avifdec --info input.avif

--info

декодирует кадры и выводит сведения об изображении вместо сохранения файла.

Этот режим применяют, когда нужно:

  • проверить, читается ли файл;
  • понять структуру AVIF;
  • увидеть параметры изображения;
  • проверить последовательность кадров;
  • диагностировать проблемы с декодированием;
  • убедиться, что файл не поврежден;
  • сравнить результаты разных настроек avifenc.

Выбор кадра или слоя: --index

avifdec --index 0 input.avif frame0.png
avifdec --index all input.avif frame.png

--index выбирает кадр в последовательности или progressive AVIF. Первый кадр имеет индекс 0; значение all позволяет декодировать все кадры.

Progressive-декодирование

avifdec --progressive --index 1 input.avif layer.png

При работе с progressive AVIF параметр --progressive позволяет использовать --index для выбора слоя в прогрессивном порядке.

PNG-сжатие: --png-compress

avifdec --png-compress 9 input.avif output.png

--png-compress задает уровень PNG-сжатия от 0 до 9: 0 — без сжатия, 9 — максимальное сжатие. Параметр относится только к PNG-выходу.

Глубина PNG-выхода: --depth

avifdec --depth 16 input.avif output.png

У avifdec глубина выходного PNG может быть 8 или 16 бит. Для Y4M глубина сохраняется, JPEG всегда остается 8 бит на канал.

Chroma upsampling: --upsampling

avifdec --upsampling best input.avif output.png

Параметр --upsampling управляет восстановлением цветовой информации для 4:2:0 и 4:2:2. Доступны automatic, fastest, best, nearest, bilinear

.

Практически:

Значение Когда использовать
automatic Обычный режим
fastest Быстрое декодирование
best Максимально аккуратное восстановление
nearest Простое ближайшее значение
bilinear Билинейная интерполяция

Ограничения безопасности: --size-limit и --dimension-limit

avifdec --size-limit 100000000 input.avif output.png
avifdec --dimension-limit 12000 input.avif output.png

--size-limit ограничивает общее число пикселей, а --dimension-limit — максимальную ширину или высоту. Значения по умолчанию: 268435456 пикселей для общего размера и 32768

для максимального измерения.

Эти параметры важны для серверов и автоматической обработки пользовательских файлов: они не дают декодеру бездумно обрабатывать слишком большие изображения.

Практические инструкции

Быстро сжать фотографию для сайта

Команда:

avifenc --qcolor 72 --speed 6 --jobs all photo.jpg photo.avif

Что делает команда:

Элемент Значение
--qcolor 72 Умеренное качество для веб-фото
--speed 6 Баланс скорости и сжатия
--jobs all Использование доступных потоков
photo.jpg Исходная фотография
photo.avif Итоговый AVIF

После кодирования результат нужно проверять не только по размеру, но и по изображению. Если на лице, небе, градиентах или мелких деталях появились заметные дефекты, поднимают --qcolor или снижают --speed

.

Более качественный вариант:

avifenc --qcolor 82 --speed 4 --jobs all photo.jpg photo.avif

Более быстрый вариант:

avifenc --qcolor 68 --speed 8 --jobs all photo.jpg photo.avif

Сжать PNG-скриншот интерфейса

Для скриншотов важны резкие границы, текст, тонкие линии и цветные элементы интерфейса. Поэтому лучше использовать --yuv 444.

avifenc --qcolor 85 --yuv 444 --speed 4 screenshot.png screenshot.avif

Почему именно так:

  • --qcolor 85 сохраняет мелкие детали;
  • --yuv 444 не прореживает цветовую детализацию;
  • --speed 4 дает более аккуратный результат, чем быстрые режимы;
  • PNG-вход не несет JPEG-артефактов.

Для скриншотов с большим количеством текста слишком низкий --qcolor быстро портит читаемость. Это видно на цветных буквах, иконках, тонких линиях и границах окон.

Сжать иконку с прозрачностью

avifenc --qcolor 80 --qalpha 100 --yuv 444 icon.png icon.avif

В иконках обычно важнее чистые края, чем максимальная экономия нескольких килобайт. --qalpha 100 защищает прозрачность, а --yuv 444

помогает сохранить цветные контуры.

Если иконка простая и состоит из плоских цветов, стоит проверить lossless:

avifenc --lossless icon.png icon.avif

Если lossless оказался слишком крупным, возвращаются к lossy-цвету и lossless-альфе:

avifenc --qcolor 78 --qalpha 100 --yuv 444 icon.png icon.avif

Получить AVIF без потерь

avifenc --lossless source.png source.avif

Такой режим подходит для изображений, где важна точная пиксельная сохранность. Но для веба lossless не всегда выгоден. Хорошая практика — сравнить два результата:

avifenc --lossless source.png source-lossless.avif
avifenc --qcolor 85 --qalpha 100 --yuv 444 source.png source-q85.avif

Затем сравнить размер и визуальную разницу.

Проверить AVIF перед публикацией

avifdec --info output.avif

Затем можно сделать контрольное декодирование:

avifdec output.avif check.png

Если check.png выглядит корректно, файл декодируется без ошибок и отображается в целевом окружении, AVIF можно использовать дальше.

Вернуть AVIF в PNG

avifdec output.avif restored.png

Это удобно, когда исходник потерян, а нужно получить файл для редактора или системы, не принимающей AVIF.

Вернуть AVIF в JPEG

avifdec --quality 95 output.avif restored.jpg

JPEG-выход всегда добавляет дополнительное JPEG-сжатие. Если нужен промежуточный файл для дальнейшей обработки, лучше выбрать PNG.

Декодировать AVIF с высоким PNG-сжатием

avifdec --png-compress 9 output.avif restored.png

Этот вариант уменьшает размер PNG, но тратит больше времени на сохранение. Для временных файлов можно использовать меньший уровень:

avifdec --png-compress 1 output.avif temp.png

Защититься от слишком больших файлов

avifdec --size-limit 100000000 --dimension-limit 12000 input.avif output.png

Такой запуск уместен на сервере или в автоматическом обработчике, где пользователь может загрузить файл с огромными размерами.

Настройки качества и их практическое влияние

Libavif дает много параметров, но в повседневной работе основные решения сводятся к нескольким вопросам:

  1. Это фотография, скриншот или графика?
  2. Есть ли прозрачность?
  3. Нужно ли сохранять мелкий текст?
  4. Важнее размер файла или качество?
  5. Кодирование разовое или массовое?
  6. Где файл будет отображаться?

Фото

Для фотографий обычно важны плавные переходы, кожа, небо, тени, фактура и отсутствие грубых блоков.

Стартовая команда:

avifenc --qcolor 72 --speed 6 --yuv 420 --jobs all photo.jpg photo.avif

Качественный профиль:

avifenc --qcolor 82 --speed 4 --yuv 420 --jobs all photo.jpg photo.avif

Архивный или почти максимальный профиль:

avifenc --qcolor 92 --speed 2 --yuv 444 --jobs all photo.png photo.avif

Для обычного веба --yuv 420 часто уместен. Для репродукций, графики, макросъемки с цветными деталями и материалов с тонкими цветными линиями лучше тестировать 444.

Скриншоты

Скриншоты хуже переносят агрессивное цветовое прореживание, чем фотографии. В них много текста, прямых линий и резких границ.

avifenc --qcolor 85 --yuv 444 --speed 4 --jobs all screen.png screen.avif

Если размер слишком велик:

avifenc --qcolor 78 --yuv 444 --speed 5 --jobs all screen.png screen.avif

Лучше снижать --qcolor, чем сразу переходить на --yuv 420, потому что 420 может испортить цветные буквы и UI-контуры.

Логотипы и иконки

avifenc --qcolor 82 --qalpha 100 --yuv 444 logo.png logo.avif

Если логотип содержит ровные плоскости и четкие края:

avifenc --lossless logo.png logo.avif

Для логотипов нельзя ориентироваться только на вес. Артефакты по краям и изменение фирменных цветов могут быть неприемлемы.

Градиенты

Градиенты чувствительны к битовой глубине и качеству. Если 8-битный результат дает полосы, стоит тестировать 10 или 12 бит:

avifenc --depth 10 --qcolor 86 --speed 4 gradient.png gradient.avif

Для градиентов нежелательно слишком сильно снижать --qcolor.

Черно-белые изображения

avifenc --yuv 400 --qcolor 78 gray.png gray.avif

400 хранит только яркостный канал и подходит для grayscale-материалов.

Профили команд для разных задач

Задача Команда
Фото для сайта avifenc --qcolor 72 --speed 6 --yuv 420 --jobs all input.jpg output.avif
Качественное фото avifenc --qcolor 84 --speed 4 --yuv 420 --jobs all input.jpg output.avif
Скриншот интерфейса avifenc --qcolor 85 --speed 4 --yuv 444 --jobs all input.png output.avif
Иконка с прозрачностью avifenc --qcolor 80 --qalpha 100 --yuv 444 input.png output.avif
Lossless PNG avifenc --lossless input.png output.avif
Быстрый тест avifenc --qcolor 65 --speed 9 input.jpg output.avif
Проверка файла avifdec --info output.avif
Декодирование в PNG avifdec output.avif output.png
Декодирование в JPEG avifdec --quality 92 output.avif output.jpg

Эти команды не являются магическими настройками. Это рабочие стартовые профили, которые затем проверяются на реальных изображениях.

Пакетная обработка

Libavif не содержит графической очереди файлов, но именно в пакетной обработке раскрывается сильнее большинства GUI-конвертеров. Команда работает одинаково для одного файла и для сотен файлов.

Bash: все JPEG в AVIF

for f in *.jpg; do
  avifenc --qcolor 72 --speed 6 --jobs all "$f" "${f%.jpg}.avif"
done

Bash: все PNG в AVIF с сохранением прозрачности

for f in *.png; do
  avifenc --qcolor 80 --qalpha 100 --yuv 444 --speed 5 --jobs all "$f" "${f%.png}.avif"
done

PowerShell: обработка PNG

Get-ChildItem -Filter *.png | ForEach-Object {
  .avifenc.exe --qcolor 80 --qalpha 100 --yuv 444 --speed 5 --jobs all $_.FullName ($_.BaseName + ".avif")
}

PowerShell: обработка JPEG

Get-ChildItem -Filter *.jpg | ForEach-Object {
  .avifenc.exe --qcolor 72 --speed 6 --jobs all $_.FullName ($_.BaseName + ".avif")
}

Безопасная обработка без перезаписи

for f in *.png; do
  avifenc --no-overwrite --qcolor 80 --qalpha 100 "$f" "${f%.png}.avif"
done

--no-overwrite защищает уже созданные AVIF-файлы. Это полезно, если каталог обрабатывается повторно.

Работа с метаданными и цветом

AVIF-файл — это не только пиксели. В нем могут быть цветовые профили, CICP/nclx-информация, Exif, XMP, ориентация, чистая область, альфа-канал, gain map и другие свойства. Libavif дает доступ к части этих параметров через опции.

Когда метаданные стоит сохранить

Метаданные полезны, если:

  • изображение должно сохранять корректный цвет;
  • важна ориентация фотографии;
  • файл используется в профессиональном workflow;
  • изображение содержит встроенный ICC-профиль;
  • нужно сохранить сведения о съемке;
  • файл участвует в тестировании декодеров.

Когда метаданные стоит удалить

Удаление метаданных оправдано, если:

  • изображение публикуется на сайте и важен минимальный вес;
  • Exif содержит лишнюю приватную информацию;
  • XMP не нужен;
  • цветовой профиль мешает единообразному отображению;
  • требуется максимально предсказуемый файл без дополнительных блоков.

Примеры:

avifenc --ignore-exif --ignore-xmp input.jpg output.avif
avifenc --ignore-profile input.png output.avif

Удалять ICC-профиль следует аккуратно. Если исходное изображение не в sRGB или использует специфический профиль, внешний вид может измениться.

AVIF для веб-разработки

Libavif хорошо подходит для подготовки AVIF-версий изображений в проекте. Типичный workflow:

  1. Хранить исходники в src/images.
  2. Генерировать AVIF в public/images или dist/images.
  3. Оставлять fallback в JPEG или WebP.
  4. Проверять результат в браузерах и на целевых устройствах.
  5. Не заменять все изображения механически без визуального контроля.

Пример HTML:

<picture>
  <source srcset="hero.avif" type="image/avif">
  <source srcset="hero.webp" type="image/webp">
  <img src="hero.jpg" alt="Описание изображения">
</picture>

Libavif в этом сценарии отвечает только за создание hero.avif. Решения о fallback, HTML-разметке, CDN и lazy loading относятся уже к веб-проекту, а не к самой программе.

Пример структуры проекта

project/
  assets/
    original/
      hero.jpg
      card-1.jpg
      logo.png
    avif/
      hero.avif
      card-1.avif
      logo.avif

Команда для генерации фото:

for f in assets/original/*.jpg; do
  base=$(basename "$f" .jpg)
  avifenc --qcolor 72 --speed 6 --jobs all "$f" "assets/avif/$base.avif"
done

Команда для PNG с прозрачностью:

for f in assets/original/*.png; do
  base=$(basename "$f" .png)
  avifenc --qcolor 80 --qalpha 100 --yuv 444 --jobs all "$f" "assets/avif/$base.avif"
done

История версий программы

История Libavif показывает, как проект прошел путь от ранней реализации AVIF до стабильной библиотеки и набора утилит для продвинутого AVIF-кодирования.

Период / версия Что изменилось
0.1.0, 2019 Первая версия: появились базовые константы версии, функция avifVersion() и основа проекта.
0.1.4, 2019 Появились приложения avifenc и avifdec для базового двустороннего преобразования в Y4M.
0.2.0, 2019 Добавлены avifEncoder и avifDecoder, проект переименован в CMake в libavif, приложения и примеры переведены на новую модель encoder/decoder.
0.8.x, 2020 Развивалась поддержка gdk-pixbuf, libyuv, SVT-AV1, многопоточности в avifdec, streaming helper-функций и новых CMake-опций.
0.11.0, 2022 Внесены несовместимые ABI-изменения, добавлены новые поля и ограничения декодера, изменены сигнатуры ряда функций.
1.0.0, 2023 ABI стал более стабильным; в avifenc добавлен --no-overwrite, расширены структуры encoder/decoder и настройки качества.
1.1.0, 2024 Появились экспериментальные gain map-возможности, поддержка JPEG с gain map в AVIF, --qgain-map, C++-заголовок и дополнительные API.
1.4.0, 2026 Добавлено чтение PNG/JPEG через stdin с --stdin-format, поддержка Sample Transform-сценариев, расширения --depth, работа с Apple-style gain maps и --sato для avifdec.
1.4.1, 2026 Исправлены сборка с CMake 3.22, длинные пути Windows, CICP-управление и утечки памяти в gain map-инструменте; с --progressive, --layered и --scaling-mode снят экспериментальный статус.
контекстный материал по AVIF через CLI

Важный вывод из истории: Libavif развивалась не как простая оболочка для одной кнопки convert, а как библиотечная и CLI-инфраструктура для всего AVIF-направления. Поэтому в ней много параметров, связанных с контейнером, цветом, глубиной, декодированием, потоками, gain maps и совместимостью.

Сравнение с аналогами

ImageMagick

ImageMagick сильнее как универсальный инструмент обработки изображений. Он умеет ресайз, кадрирование, поворот, наложение текста, композицию, изменение цветовых каналов, пакетные операции, фильтры и десятки форматов. Для пользователя, которому нужно не только получить AVIF, но и предварительно изменить изображение, ImageMagick шире.

Libavif выигрывает там, где нужен прямой контроль AVIF-кодирования через параметры

avifenc: --qcolor, --qalpha, --speed, --yuv, --depth, --lossless, progressive/layered/grid-сценарии и AVIF-специфичная диагностика через avifdec --info.

Критерий ImageMagick
Сильная сторона Универсальная обработка изображений
AVIF-сценарии Зависят от сборки и делегатов
Удобство пакетной обработки Высокое
Контроль AVIF-специфичных параметров Менее прямой
Лучший сценарий Изменить изображение и затем экспортировать

FFmpeg

FFmpeg удобен для мультимедиа: видео, кадров, последовательностей, контейнеров, фильтров, извлечения кадров, перекодирования и автоматизации. Если AVIF является частью видеопайплайна, FFmpeg часто логичен.

Для одиночных изображений и точного AVIF-кодирования

avifenc проще: команда короче, параметры относятся прямо к изображению, а поведение не смешивается с видеологикой.

Критерий FFmpeg
Сильная сторона Видео, кадры, мультимедиа-пайплайны
AVIF-сценарии Возможны, но зависят от сборки и параметров
Удобство для одиночных изображений Среднее
Лучший сценарий Извлечь кадр, обработать последовательность, связать с видео

libheif

libheif близка по области: это библиотека и набор инструментов для HEIF/AVIF-сценариев. Она часто используется там, где важна поддержка HEIF/HEIC и связанных контейнерных возможностей. Для работы с HEIF-экосистемой libheif выглядит естественно.

Libavif более сфокусирована на AVIF и на инструментальной работе с AVIF через

avifenc/avifdec. Если задача — именно AVIF, контроль кодирования и диагностика AVIF-файлов, Libavif выглядит более прямым выбором.

Критерий libheif
Сильная сторона HEIF/HEIC/AVIF-экосистема
CLI-инструменты Есть
Фокус Шире контейнерно, не только AVIF
Лучший сценарий Работа с HEIF/HEIC и AVIF в одном workflow

Squoosh

Squoosh удобен для ручной оптимизации: пользователь видит изображение, меняет параметры, сравнивает результат до/после и быстро понимает, как меняется вес. Это хороший вариант для одного или нескольких изображений.

Libavif сильнее в автоматизации. Когда нужно обработать каталог, встроить AVIF-конвертацию в сборку или получить одинаковый результат на сервере, CLI-подход надежнее визуального интерфейса.

Критерий Squoosh
Сильная сторона Визуальное сравнение качества
Подходит новичкам Да
Массовая обработка Ограничена
Лучший сценарий Ручная оптимизация отдельных изображений

cavif

cavif — более узкая CLI-утилита для конвертации в AVIF. Она проще в базовом сценарии и может быть удобна пользователю, которому нужен минималистичный инструмент без большого набора параметров.

Libavif шире: это библиотека,

avifenc, avifdec, диагностика, поддержка разных AVIF-сценариев, работа с глубиной, форматами, потоками, контейнерными свойствами и декодированием.

Критерий cavif
Сильная сторона Простая AVIF-конвертация
Глубина настройки Ниже
Библиотечная роль Не основной сценарий
Лучший сценарий Быстро создать AVIF без сложной настройки

Итоговая таблица

Инструмент Тип Сильная сторона Когда выбирать
ImageMagick CLI/библиотека Универсальная обработка Нужно менять изображение перед экспортом
FFmpeg CLI Видео и последовательности AVIF связан с видео или кадрами
libheif Библиотека + CLI HEIF/HEIC/AVIF Нужна широкая HEIF-экосистема
Squoosh Web/GUI Визуальное сравнение Нужно вручную подобрать качество
cavif CLI Простота Нужно быстро получить AVIF
sharp Node.js-библиотека Серверная обработка изображений AVIF нужен в JS/backend-пайплайне

Сильные стороны

Libavif сильна не количеством кнопок, а качеством контроля.

Точный CLI-интерфейс

Все параметры задаются явно. Команду можно сохранить, повторить, встроить в скрипт, отправить коллеге или использовать в CI.

avifenc --qcolor 78 --qalpha 100 --yuv 444 --speed 5 --jobs all input.png output.avif

Такая команда полностью описывает способ получения файла.

Раздельное качество цвета и альфы

Для PNG с прозрачностью это критически важно. Многие простые конвертеры прячут альфу за общим ползунком качества, а в Libavif прозрачность настраивается отдельно.

Поддержка lossless

Lossless нужен не каждый день, но в технических и архивных сценариях он важен.

avifenc --lossless input.png output.avif

Управление YUV

Возможность явно задать 444, 420, 400 делает Libavif удобной для разных типов изображений. Фото, скриншот и логотип нельзя сжимать одним и тем же профилем.

Многопоточность

--jobs all делает пакетную обработку практичной. Это особенно важно при обработке больших каталогов.

Диагностика через avifdec --info

Встроенная проверка информации о файле экономит время. Не нужно использовать отдельный просмотрщик только для базовой диагностики.

Подходит для автоматизации

Libavif хорошо работает там, где графический интерфейс неудобен: сборка сайта, серверная обработка, тесты, скрипты, пакетная оптимизация.

Открытая библиотечная основа

Libavif полезна не только конечным пользователям, но и разработчикам. Ее можно использовать как библиотеку для интеграции AVIF-поддержки в приложения.

Ограничения

Libavif не стоит идеализировать. Это мощный инструмент, но не универсальный редактор.

Нет графического интерфейса

Пользователь не увидит привычных кнопок, панелей и предпросмотра. Нужно работать в терминале.

Нет встроенного сравнения до/после

Качество нужно проверять внешним просмотрщиком, браузером или собственным сравнительным workflow.

Нет редактирования изображения

Libavif не выполняет художественную обработку:

  • не ретуширует;
  • не кадрирует мышью;
  • не меняет экспозицию;
  • не работает со слоями;
  • не рисует;
  • не удаляет фон;
  • не делает цветокоррекцию через визуальные инструменты.

Порог входа выше

Параметры --qcolor, --qalpha, --yuv, --depth, --speed требуют понимания. Новичок может получить плохой результат просто из-за неверной команды.

AVIF-кодирование может быть медленным

Высокое качество и низкая скорость кодирования требуют времени. На больших изображениях это заметно.

Результат зависит от исходника

JPEG с артефактами, шумное фото, скриншот с мелким текстом и прозрачный PNG требуют разных настроек. Одна универсальная команда не заменяет проверку.

Совместимость нужно проверять

AVIF широко поддерживается, но конкретные progressive, layered, gain map и глубинные сценарии нужно проверять в целевом окружении.

Частые ошибки при работе

Использовать один профиль для всех изображений

Фотография и скриншот требуют разных настроек. Для фото можно начать с --yuv 420, для скриншота лучше --yuv 444

.

Плохо:

avifenc --qcolor 60 --yuv 420 screenshot.png screenshot.avif

Лучше:

avifenc --qcolor 85 --yuv 444 screenshot.png screenshot.avif

Ставить слишком высокий --speed

--speed 10

ускоряет кодирование, но не всегда дает хороший размер и качество.

Плохо для финального файла:

avifenc --qcolor 75 --speed 10 input.jpg output.avif

Лучше:

avifenc --qcolor 75 --speed 5 input.jpg output.avif

Забывать про альфа-канал

Плохо для прозрачной иконки:

avifenc --qcolor 70 icon.png icon.avif

Лучше:

avifenc --qcolor 80 --qalpha 100 --yuv 444 icon.png icon.avif

Ожидать от lossless маленький файл

Lossless сохраняет данные без потерь, но не гарантирует минимальный размер. Для веба часто лучше lossy-профиль с визуальной проверкой.

Перезаписывать результат

В пакетных сценариях безопаснее использовать:

avifenc --no-overwrite input.png output.avif

Декодировать в JPEG без необходимости

Если нужен промежуточный файл для дальнейшей обработки, PNG лучше:

avifdec input.avif output.png

JPEG стоит выбирать только тогда, когда именно JPEG нужен как конечный формат.

Безопасная и аккуратная работа

Libavif часто используют в автоматизации, поэтому важно выстроить безопасный workflow.

Не обрабатывать оригиналы в единственном экземпляре

Лучше хранить исходники отдельно:

images/
  source/
    photo.jpg
  avif/
    photo.avif

Команды должны писать результат в отдельный каталог, а не смешивать исходники и производные файлы.

Использовать --no-overwrite

avifenc --no-overwrite --qcolor 75 input.jpg output.avif

Это снижает риск случайной потери результата.

Проверять декодирование

avifdec --info output.avif
avifdec output.avif check.png

Если файл важный, недостаточно увидеть, что он создался. Нужно убедиться, что он корректно декодируется.

Ограничивать размер при серверной обработке

avifdec --size-limit 100000000 --dimension-limit 12000 input.avif output.png

Это защищает обработчик от чрезмерно больших изображений.

Хранить команды вместе с проектом

Для сайта или приложения лучше не кодировать изображения вручную каждый раз. Команды стоит записать в скрипт:

#!/usr/bin/env bash
set -e

mkdir -p public/img-avif

for f in assets/img/*.jpg; do
  name=$(basename "$f" .jpg)
  avifenc --qcolor 72 --speed 6 --jobs all "$f" "public/img-avif/$name.avif"
done

Такой подход делает результат воспроизводимым.

Разбор параметров в таблице

Параметр Утилита Назначение Практическое применение
--help avifenc, avifdec Показ справки Быстро посмотреть синтаксис
--version avifenc, avifdec Показ версии Проверить доступную сборку
--qcolor avifenc Качество цвета Главная настройка качества
--qalpha avifenc Качество альфы PNG с прозрачностью
--qgain-map avifenc Качество gain map HDR/gain map workflow
--speed avifenc Скорость кодирования Баланс времени и размера
--jobs avifenc, avifdec Количество потоков Пакетная обработка
--lossless avifenc Кодирование без потерь Архивы, точная графика
--depth avifenc, avifdec Битовая глубина Градиенты, HDR, 16-bit PNG-выход
--yuv avifenc YUV-формат Фото, скриншоты, grayscale
--premultiply avifenc Premultiplied alpha Специальные alpha-workflow
--ignore-exif avifenc Игнорировать Exif Удаление лишних метаданных
--ignore-xmp avifenc Игнорировать XMP Уменьшение файла
--ignore-profile avifenc Игнорировать ICC Контроль цветовых данных
--ignore-alpha avifenc Игнорировать прозрачность Когда альфа не нужна
--no-overwrite avifenc Не перезаписывать файл Безопасные скрипты
--output avifenc Задать выходной файл Удобство в автоматизации
--grid avifenc Grid AVIF Большие изображения, тайлы
--progressive avifenc, avifdec Progressive AVIF Слойное проявление
--layered avifenc Layered AVIF Продвинутые AVIF-структуры
--quality avifdec JPEG-качество Декодирование AVIF в JPEG
--png-compress avifdec PNG-сжатие Размер PNG-выхода
--upsampling avifdec Восстановление chroma Качество декодирования 420/422
--index avifdec Выбор кадра/слоя Последовательности и progressive
--info avifdec Информация о файле Диагностика
--size-limit avifdec Лимит пикселей Защита от огромных файлов
--dimension-limit avifdec Лимит ширины/высоты Серверная безопасность

Рекомендации по подбору настроек

Начинать с типа изображения

Не нужно начинать с вопроса какой --qcolor самый лучший. Сначала определяется тип изображения.

Тип Базовая стратегия
Фото --yuv 420, --qcolor 70–80
Скриншот --yuv 444, --qcolor 80–88
Иконка --qalpha 100, часто --yuv 444
Grayscale --yuv 400
Архивная графика --lossless
Градиент Проверять --depth 10 или --depth 12

Проверять результат в целевом размере

Не всегда нужно рассматривать изображение на 400% увеличения. Если картинка будет показана на сайте шириной 600 px, проверять ее нужно и в этом размере. Но мелкий текст, интерфейсные скриншоты и логотипы стоит дополнительно смотреть с увеличением.

Сравнивать размер и качество вместе

Плохой подход:

Самый маленький файл = лучший результат

Правильный подход:

Минимальный файл при приемлемом качестве = хороший результат

Не злоупотреблять --speed 0

--speed 0 полезен для финальной выжимки, но на больших каталогах может быть слишком медленным. Для большинства рабочих задач диапазон 4–7 практичнее.

Для прозрачности держать --qalpha высоким

Если изображение содержит альфа-канал, прозрачность лучше не портить. Типичный вариант:

avifenc --qcolor 78 --qalpha 100 --yuv 444 input.png output.avif

Кому подойдет Libavif

Libavif хорошо подходит:

  • веб-разработчикам;
  • специалистам по оптимизации изображений;
  • администраторам сайтов;
  • разработчикам приложений;
  • DevOps-инженерам;
  • пользователям, которые умеют работать с терминалом;
  • тем, кто хочет воспроизводимое AVIF-кодирование;
  • тем, кому важно управлять цветом, альфой, глубиной и YUV-форматом;
  • тем, кто обрабатывает изображения пакетно.

Libavif не лучший выбор:

  • если нужен простой визуальный конвертер;
  • если пользователь не хочет работать с командной строкой;
  • если нужно редактирование изображения;
  • если нужен предпросмотр до/после внутри самой программы;
  • если нужен инструмент открыл файл — подвигал ползунок — сохранил.

Для ручной разовой оптимизации одного изображения удобнее визуальный инструмент. Для автоматизации, повторяемых команд и AVIF-специфичных настроек Libavif заметно сильнее.

Итоговая оценка

Libavif — технически сильная программа для работы с AVIF, построенная вокруг библиотеки и консольных утилит. Ее главный практический инструмент — avifenc, который кодирует JPEG, PNG и Y4M в AVIF. Второй ключевой инструмент — avifdec, который декодирует AVIF в PNG, JPEG или Y4M и показывает информацию о файле через --info

.

Сильная сторона Libavif — точный контроль. Пользователь управляет качеством цвета, качеством прозрачности, скоростью, потоками, YUV-форматом, глубиной, lossless-режимом, метаданными, progressive/layered/grid-структурами и параметрами декодирования. Это делает программу особенно полезной для веб-оптимизации, серверной обработки, пакетных скриптов, разработки и тестирования AVIF.

Главное ограничение — отсутствие графического интерфейса. Libavif не подойдет тем, кто ожидает визуальный редактор с кнопками и предпросмотром. Это инструмент командной строки, и его ценность раскрывается тогда, когда пользователь точно понимает, какой результат ему нужен и какими параметрами его получить.

Для подготовки AVIF на постоянной основе Libavif — один из наиболее рациональных вариантов: компактная логика, понятные команды, отдельная работа с альфа-каналом, поддержка разных глубин и форматов, диагностика через

avifdec --info и хорошая пригодность для автоматизации.