Найти в Дзене
SСhaos

Конвертирование картинок в формат avif

В данной же статье рассмотрим порядок установки библиотек и написание скрипта для конвертирования в формат avif.
AV1 Still Image File Format (AVIF) — разрабатываемый свободный формат сжатия изображений с потерями качества , основанный на библиотеке для сжатия кадров AV1. /wikipedia.org/

Посмотреть теоретические сведения о данном формате можно на следующих ресурсах Habr и timeweb.

В данной же статье рассмотрим порядок установки библиотек и написание скрипта для конвертирования в формат avif.

В качестве сервера для установки выступает Debian 10.

Первым делом установим декодировщик aomdec (libaom) командой:

apt install libaom-dev

Для конвертации будем использовать реализацию формата avif для языка go go-avif. Для этого установим go, выполнив последовательно:

curl -O https://dl.google.com/go/go1.15.linux-amd64.tar.gz
tar xvf go1.15.linux-amd64.tar.gz
mv go /usr/local

Таким образом мы скачаем go, распакуем его и перенесем в директорию /usr/local.

Теперь добавим переменные окружения go в профиль текущего пользователя. Для это следует отредактировать файл .profile в домашней директории пользователя. Добавив в конце файла следующие строки:

export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

Перезагрузим профиль:

source ~/.profile

Теперь скачаем go-avif, скомпилируем его и установим в директорию $GOPATH/bin(в нашем случае это $HOME/work), командой (три точки в конце обязательны):

go get github.com/Kagami/go-avif/...

Проверьте работу попробовав сконвертировать файл с изображением следующей командой:

avif -e cat.jpg -o kitty.avif

Теперь нам нужен скрипт для конвертации всех изображений png и jpg в формат avif. За основу возьмем скрип из статьи с webp.

В скрипте в параметре --q 35 можно настроить качество сжатия изображения, максимальное качество 63, значение по умолчанию 25.

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

Также не забываем добавить в список типов nginx расширение avif (файл /etc/nginx/mime.types):

image/avif avif;

Не забываем перезапустить nginx.

Результат работы конфигурации:

Файл с расширением avif существует, отдаем его
Файл с расширением avif существует, отдаем его
Файл с расширением avif не существует, но есть webp отдаем webp
Файл с расширением avif не существует, но есть webp отдаем webp

З.Ы. А еще мы пишем много полезной информации в блоге Стократ . Добро пожаловать.

З.З.Ы. Не забывайте ставить лайки и писать комментарии если тема Вам интересна, и вы хотите продолжения.