Сегодня конвертируем папку с webp файлами в дружелюбный и привычный jpg. В Linux. На bash. Вот здесь я уже касался этой темы, но там речь шла про PowerShell. Напомню, что тогда для конвертации webp в jpg нужно было скачивать специальную библиотеку и обращаться к ней. Там я постарался организовать полную автоматизацию цикла конвертации вместе со скачиванием и распаковкой.
А конвертировать webp в jpg мы будем с помощью ffmpeg. Думаю, что в оконной вселенной магия этой чудо-программы тоже сработает, но пробовать не буду. Оставлю это для Вас. Кастуйте на здоровье.
Так вот. Устанавливаем ffmpeg, если его нет:
sudo apt install -y ffmpeg
Теперь скрипт:
#!/bin/bash
# Проверка, установлена ли команда ffmpeg #
if ! command -v ffmpeg &> /dev/null; then
echo "Ошибка: командa 'ffmpeg' не найдена. Пожалуйста, установите FFmpeg."
echo "Для установки используйте следующие команды:"
echo "sudo apt install ffmpeg" # для apt #
echo "sudo yum install ffmpeg" # для yum #
exit 1
fi
# Проверка, передан ли аргумент #
if [ "$#" -ne 1 ]; then
echo "Использование: $0 /путь/к/папке"
exit 1
fi
# Папка с изображениями #
INPUT_DIR="$1"
# Проверка, существует ли папка #
if [ ! -d "$INPUT_DIR" ]; then
echo "Ошибка: Указанная папка не существует."
exit 1
fi
# Конвертация всех файлов .webp в .jpg #
shopt -s nullglob
webp_files=("$INPUT_DIR"/*.webp)
if [ ${#webp_files[@]} -eq 0 ]; then
echo "В папке нет файлов .webp."
exit 1
fi
for img in "${webp_files[@]}"; do
# Получение имени файла без расширения #
filename=$(basename "$img" .webp)
# Конвертация изображения с подавлением вывода #
if ! ffmpeg -i "$img" "$INPUT_DIR/$filename.jpg" -y > /dev/null 2>&1; then
echo "Ошибка: Не удалось конвертировать $img."
continue
fi
echo "Конвертировано: $img -> $INPUT_DIR/$filename.jpg"
done
echo "Конвертация завершена."
Для использования нужно сделать скрипт исполняемым:
sudo chmod +x webp2jpg.sh
А потом вызвать скрипт с указанием пути к папке с webp файлами:
./webp2jpg.sh /путь/к/папке
Про компрессию и изменение размеров изображений в формате jpg можно прочитать здесь.