Как просмотреть изображения AVIF в Ubuntu

Есть проблема: невозможно открыть изображения AVIF в Ubuntu. AVIF — это новый формат файлов изображений для Интернета, и вот что вы можете сделать для просмотра изображений AVIF в рабочем столе Ubuntu.

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

JPEG-файлы имеют меньше размер файла, но значительно снижают качество изображений.

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

Теперь AVIF — это новый формат файлов, который сжимает изображения без ущерба для качества. Они меньше, чем WebP, при том же качестве изображения.

Linux недавно начал предоставлять поддержку WebP. Однако формат изображения AVIF пока не поддерживается по умолчанию во многих дистрибутивах.

Если вы загрузите изображение в формате AVIF из Интернета, то его миниатюра не будет отображаться в файловом менеджере.

И если вы попытаетесь открыть его с помощью средства просмотра изображений по умолчанию, скорее всего, появится ошибка «нераспознанный формат файла изображения».

Итак, каково решение? Можете ли вы вообще не просматривать изображения AVIF в Linux. Когда дело касается Linux, всегда есть обходной путь.

Решение

Существует удобная программа просмотра изображений gThumb, которую можно использовать для открытия изображений AVIF в Linux. Она должна быть доступен в репозиториях большинства дистрибутивов Linux, если уж не во всех.

В дистрибутивах на основе Ubuntu и Debian используйте следующую команду для установки gThumb:

sudo apt install gthumb

После установки выберите изображение AVIF, щелкните его правой кнопкой мыши и выберите «Открыть с помощью». Выберите gThumb, сделайте её по умолчанию для изображений AVIF и откройте файл.

Всё.

Преобразование всех файлов JPEG в формат AVIF


Задача: Преобразовать все изображения (перечисленных форматов) в текущем каталоге в новый формат avif.

Нам потребуется: ImageMagick

# обновляем свою убунту 22.04
sudo apt update
# устанавливаем ImageMagick
sudo apt install imagemagick
# проверяем версию
convert --version

В ответ, должна быть следующая информация о версии на 2024-03-18:

Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5) 
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib

Вариант 1. Преобразуем командой в терминале

Преобразуем все файлы .jpg текущего каталога в .avif, вот команда:

for image in *.jpg ; do convert "$image" "${image%.*}.avif" ; done

Преобразуем индивидуальный файл .jpg в .avif

convert FILE.jpg FILE.avif

Вариант 2. Преобразуем с помощью скрипта

Теперь про скрипт

Создайте файл для скрипта:

touch convert_to_avif.sh

откройте его для редактирования:

nano ./convert_to_avif.sh

вот код скрипта:

#!/bin/bash

# Путь к каталогу с изображениями
input_dir="$1"

# Проверяем, передан ли аргумент с путем к каталогу
if [ -z "$input_dir" ]; then
    echo "Использую: $0 <input_directory>"
    exit 1
fi

# Создаем каталог для сохранения конвертированных изображений
output_dir="${input_dir}/avif"
mkdir -p "$output_dir"

# Преобразуем изображения в формат AVIF
for file in "$input_dir"/*.{jpg,JPG,jpeg,JPEG,png,PNG,gif,GIF}; do
    # Проверяем, существует ли файл перед его обработкой
    if [ -f "$file" ]; then
        filename=$(basename "$file")
        output_file="${output_dir}/${filename%.*}.avif"
        echo "Конвертирую $file в $output_file..."
        convert "$file" "$output_file"
    fi
done

echo "Конвертация окончена!"

Сохраните скрипт CTRL+O, закрыть CTRL+X

И дайте ему права исполнения:

chmod +x convert_to_avif.sh

Выполняйте его таким образом:

./convert_to_avif.sh /путь/к/каталогу/с/изображениями

При выполнении скрипт создаст в указанном каталоге ещё каталог avif куда будет складывать результат, и конвертировать будет файлы с расширениями: jpg, JPG, jpeg, JPEG, png, PNG, gif, GIF.

Результаты конвертации в .avif

Я сделал смартфоном фотографию. Она естественно в формате .jpg. После этого простыми командами сделал .webp и .avif

Формат файлаРазмер в мегабайтах Размер в байтах%
PXL_20240311.jpg1,4MB1 365 863100
PXL_20240311.webp1,2MB1 184 38686,7
PXL_20240311.avif0,15MB149 90710,9
Сравнение форматов изображения .jpg | .webp | .avif

Вот смотрите, что получилось. Скачайте себе на компьютер и посмотрите внимательно. По клику откроется медиафайл, который обрабатывает мой веб-сервер, это не то, что сравнивать надо.

Надо исходные файлы сверять, поэтому вот скачайте пару-тройку файлов-zip (первый, второй, третий), если хотите убедиться в результатах. Не все jpg-файлы можно скачать с моего сервера, они налету при скачивании преобразуются в .webp, но в отдельной вкладке посмотреть можно))

Увидите ли вы разницу?

PXL 20240311PXL 20240311PXL 20240311
.jpg.webp.avif
PXL 20240311 cropPXL 20240311 cropPXL 20240311 crop
.jpeg.webp.avif
PXL 20240311 miniPXL 20240311 miniPXL 20240311 mini
.jpeg.webp.avif

Если разницы не увидели, то она в размерах, .avif существенно меньше чем .jpeg

Замечание

AVIF для JPEG хорошая замена, теряем только метаданные о съёмке, если вам это важно, то имейте в виду, и WebP так же не позволит сохраниться метаданным из JPEG.

Стоит отметить, что WebP поддерживает прозрачные области при преобразовании PNG, а вот AVIF уже нет. Или пока НЕТ?

Что ещё интересного об этом вы расскажете?