Есть проблема: невозможно открыть изображения 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.jpg | 1,4MB | 1 365 863 | 100 |
PXL_20240311.webp | 1,2MB | 1 184 386 | 86,7 |
PXL_20240311.avif | 0,15MB | 149 907 | 10,9 |
Вот смотрите, что получилось. Скачайте себе на компьютер и посмотрите внимательно. По клику откроется медиафайл, который обрабатывает мой веб-сервер, это не то, что сравнивать надо.
Надо исходные файлы сверять, поэтому вот скачайте пару-тройку файлов-zip (первый, второй, третий), если хотите убедиться в результатах. Не все jpg-файлы можно скачать с моего сервера, они налету при скачивании преобразуются в .webp, но в отдельной вкладке посмотреть можно))
Увидите ли вы разницу?
.jpg | .webp | .avif |
.jpeg | .webp | .avif |
.jpeg | .webp | .avif |
Если разницы не увидели, то она в размерах, .avif существенно меньше чем .jpeg
Замечание
AVIF для JPEG хорошая замена, теряем только метаданные о съёмке, если вам это важно, то имейте в виду, и WebP так же не позволит сохраниться метаданным из JPEG.
Стоит отметить, что WebP поддерживает прозрачные области при преобразовании PNG, а вот AVIF уже нет. Или пока НЕТ?
Что ещё интересного об этом вы расскажете?