Команды для конвертации в WebP
Вариант 1: Простая команда
cd /home/adminus/Загрузки/archive25-10-22
mkdir -p webp
for file in *.{jpg,jpeg,png,JPG,JPEG,PNG}; do [ -f "$file" ] && convert "$file" -quality 85 "webp/${file%.*}.webp"; done
Вариант 2: Однострочник с полными путями
mkdir -p /home/adminus/Загрузки/archive25-10-22/webp && for file in /home/adminus/Загрузки/archive25-10-22/*.{jpg,jpeg,png,JPG,JPEG,PNG}; do [ -f "$file" ] && convert "$file" -quality 85 "/home/adminus/Загрузки/archive25-10-22/webp/$(basename "${file%.*}").webp"; done
Вариант 3: Скрипт с выводом прогресса
#!/bin/bash
SOURCE_DIR="/home/adminus/Загрузки/archive25-10-22"
DEST_DIR="/home/adminus/Загрузки/archive25-10-22/webp"
# Создаем папку webp если её нет
mkdir -p "$DEST_DIR"
# Переходим в исходную папку
cd "$SOURCE_DIR"
# Конвертируем все изображения
for file in *.{jpg,jpeg,png,JPG,JPEG,PNG}; do
if [ -f "$file" ]; then
echo "Конвертирую: $file"
convert "$file" -quality 85 -define webp:method=6 "$DEST_DIR/${file%.*}.webp"
fi
done
echo "Готово! Файлы сохранены в $DEST_DIR"
Для баннеров выставок (с оптимизацией):
cd /home/adminus/Загрузки/archive25-10-22
mkdir -p webp
for file in *.{jpg,jpeg,png,JPG,JPEG,PNG}; do
[ -f "$file" ] && convert "$file" -quality 90 -strip -define webp:method=6 "webp/${file%.*}.webp" && echo "✓ $file"
done
Выбирай любой вариант. Рекомендую Вариант 1 - простой и эффективный.
mkdir -p "/home/adminus/Загрузки/Telegram Desktop/cr/webp" && mogrify -path "/home/adminus/Загрузки/Telegram Desktop/cr/webp/" -format webp -quality 85 "/home/adminus/Загрузки/Telegram Desktop/cr/"*.{jpg,jpeg,png,gif,bmp}
Установить ImageMagick на CentOS 9 Stream (или обычный CentOS, если вы используете образ не-Stream) довольно просто, так как он доступен в стандартных репозиториях.
Вот шаги:
-
Откройте терминал: Подключитесь к вашему серверу или откройте терминал на рабочем столе CentOS 9.
-
Обновите список пакетов (рекомендуется): Перед установкой нового программного обеспечения всегда хорошей практикой является обновление списков пакетов и установленных пакетов.
sudo dnf update -y
Команда `sudo` выполняет команду с правами суперпользователя. `dnf update` обновляет пакеты. `-y` автоматически подтверждает все запросы на установку/обновление, чтобы вам не пришлось вводить `y` вручную.
-
Установите ImageMagick: Теперь установите сам пакет ImageMagick.
sudo dnf install ImageMagick -y
Эта команда установит базовую версию ImageMagick и необходимые зависимости из стандартных репозиториев CentOS 9 (AppStream).
-
Установите пакет для разработчиков (опционально): Если вы планируете компилировать другое программное обеспечение, которое использует библиотеки ImageMagick (например, расширения PHP, Python-библиотеки и т.д.), вам также понадобится пакет `ImageMagick-devel`.
sudo dnf install ImageMagick-devel -y
-
Проверьте установку: После завершения установки убедитесь, что ImageMagick был установлен корректно, проверив его версию.
magick --version
или (для старых версий или если `magick` не найдена, хотя на CentOS 9 должна быть `magick`):
convert --version
Вывод должен показать информацию об установленной версии ImageMagick, например:
Version: ImageMagick 7.x.x-xx ...
...
Использование ImageMagick:
Основная команда для работы с ImageMagick (начиная с версии 7) - это `magick`. Например, чтобы конвертировать изображение из одного формата в другой:
magick input.jpg output.png
Если вы используете старые версии или команды ImageMagick 6, то основной командой может быть `convert`:
convert input.jpg output.png
На CentOS 9 команда `convert` часто является просто символической ссылкой или псевдонимом для `magick`, поэтому обе могут работать.
Вот и все! ImageMagick установлен и готов к использованию на вашем сервере CentOS 9.
ImageMagick — это мощный набор инструментов с открытым исходным кодом для работы с изображениями из командной строки. Он позволяет выполнять широкий спектр операций: от изменения размера и формата до добавления текста, водяных знаков и сложных эффектов.
Основные утилиты ImageMagick:
- `convert`: Самая универсальная, используется для преобразования изображений из одного формата в другой, а также для применения множества эффектов и изменений. Всегда создает новый файл.
- `mogrify`: Похожа на `convert`, но изменяет исходный файл на месте (overwrites original). Будьте ОЧЕНО осторожны при использовании!
- `identify`: Выводит информацию об изображении (размеры, формат, глубина цвета и т.д.).
- `composite`: Накладывает одно изображение на другое.
- `montage`: Создает "монтаж" или коллаж из нескольких изображений.
Установка ImageMagick в Linux
Прежде чем использовать команды, убедитесь, что ImageMagick установлен.
- Debian/Ubuntu:bash Скопировать
Закрыть блок
sudo apt update
sudo apt install imagemagick
- CentOS/RHEL/Fedora:bash Скопировать
Закрыть блок
sudo dnf install ImageMagick ImageMagick-devel
- Arch Linux:bash Скопировать
Закрыть блок
sudo pacman -S imagemagick
Основные команды ImageMagick (на примере convert)
Примеры использования: Замените `input.jpg`, `output.jpg`, `image1.jpg` и т.д. на реальные имена ваших файлов.
1. Получение информации об изображении
bash Скопировать
Закрыть блок
# Получить базовую информацию об изображении
identify input.jpg
# Получить подробную информацию (размеры, формат, цветовой профиль, EXIF и т.д.)
identify -verbose input.jpg
2. Изменение формата изображения
bash Скопировать
Закрыть блок
# Конвертировать JPG в PNG
convert input.jpg output.png
# Конвертировать JPG в GIF
convert input.jpg output.gif
# Конвертировать PNG в JPG с указанным качеством (0-100, 100 - лучшее)
convert input.png -quality 85 output.jpg
3. Изменение размера (Resizing)
bash Скопировать
Закрыть блок
# Изменить размер до 50% от оригинала
convert input.jpg -resize 50% output.jpg
# Изменить размер, чтобы ширина была 800px, высота изменится пропорционально
convert input.jpg -resize 800x output.jpg
# Изменить размер, чтобы высота была 600px, ширина изменится пропорционально
convert input.jpg -resize x600 output.jpg
# Изменить размер, чтобы изображение вписывалось в 800x600px (сохраняя пропорции)
convert input.jpg -resize 800x600 output.jpg
# Изменить размер до точных 800x600px (может исказить пропорции, если они не совпадают)
convert input.jpg -resize 800x600! output.jpg
# Изменить размер и обрезать, чтобы точно получить 800x600px (обрежет лишнее)
# ^ означает "размер больше или равен указанному, сохраняя пропорции",
# затем обрезаем по центру.
convert input.jpg -resize 800x600^ -gravity Center -crop 800x600+0+0 +repage output.jpg
4. Обрезка (Cropping)
Синтаксис: `WxH+X+Y`
- `W`: ширина области обрезки
- `H`: высота области обрезки
- `X`: смещение от левого края (положительное) или правого края (отрицательное)
- `Y`: смещение от верхнего края (положительное) или нижнего края (отрицательное)
bash Скопировать
Закрыть блок
# Обрезать область 200x200px, начиная с координаты 10,10 от левого верхнего угла
convert input.jpg -crop 200x200+10+10 output.jpg
# Обрезать по центру, чтобы получить квадрат
convert input.jpg -gravity Center -crop 200x200+0+0 output.jpg
5. Поворот и отражение (Rotate & Flip/Flop)
bash Скопировать
Закрыть блок
# Повернуть изображение на 90 градусов по часовой стрелке
convert input.jpg -rotate 90 output.jpg
# Отразить изображение по горизонтали (слева направо)
convert input.jpg -flop output.jpg
# Отразить изображение по вертикали (сверху вниз)
convert input.jpg -flip output.jpg
6. Добавление текста
bash Скопировать
Закрыть блок
# Добавить текст в левый нижний угол
convert input.jpg -gravity SouthWest -pointsize 30 -fill white -stroke black -strokewidth 1 -annotate +10+10 "Мой текст" output.jpg
# Добавить многострочный текст (используйте \n для новой строки)
convert input.jpg -gravity North -pointsize 40 -fill red -annotate +0+10 "Заголовок\nПодзаголовок" output.jpg
7. Добавление водяного знака (Watermark)
Используется утилита `composite`.
bash Скопировать
Закрыть блок
# Наложить водяной знак (watermark.png) в правый нижний угол
# -gravity SouthEast -geometry +10+10: 10px от нижнего и правого края
composite -gravity SouthEast -geometry +10+10 watermark.png input.jpg output.jpg
# Наложить полупрозрачный водяной знак (50% прозрачности)
composite -dissolve 50 -gravity SouthEast watermark.png input.jpg output.jpg
8. Коррекция цвета и эффекты
bash Скопировать
Закрыть блок
# Увеличить яркость на 20%, уменьшить насыщенность на 10%, оставить оттенок как есть
# Синтаксис: Яркость%, Насыщенность%, Оттенок% (100% - оригинал)
convert input.jpg -modulate 120,90,100 output.jpg
# Изменить контраст и яркость (более тонкая настройка)
convert input.jpg -brightness-contrast 10x-5 output.jpg # +10 яркости, -5 контраста
# Применить гамма-коррекцию (светлее)
convert input.jpg -gamma 1.5 output.jpg
# Преобразовать в оттенки серого (grayscale)
convert input.jpg -colorspace Gray output.jpg
# Преобразовать в черно-белое изображение (только 2 цвета: черный/белый)
convert input.jpg -monochrome output.jpg
# Применить эффект сепии
convert input.jpg -sepia-tone 80% output.jpg
# Размытие (Gaussian Blur)
# Синтаксис: radiusxsigma (radius - радиус в пикселях, sigma - стандартное отклонение)
convert input.jpg -gaussian-blur 0x3 output.jpg # sigma=3, радиус по умолчанию
# Повышение резкости (Sharpen)
# Синтаксис: radiusxsigma
convert input.jpg -sharpen 0x1.0 output.jpg
9. Добавление рамки/границы (Border)
bash Скопировать
Закрыть блок
# Добавить черную рамку шириной 10px со всех сторон
convert input.jpg -bordercolor black -border 10x10 output.jpg
# Добавить красную рамку с толщиной 5px сверху/снизу и 20px слева/справа
convert input.jpg -bordercolor red -border 20x5 output.jpg
10. Объединение нескольких изображений
bash Скопировать
Закрыть блок
# Создать коллаж (монтаж) из всех JPG файлов в текущей папке
# -geometry: размеры миниатюр, +X+Y: отступ между ними
# -tile: количество столбцов (X) и строк (Y). 2x2 создаст 2 колонки, 2 ряда.
montage *.jpg -geometry 200x200+5+5 -tile 2x -background black output_montage.jpg
# Объединить изображения side-by-side (горизонтально)
convert image1.jpg image2.jpg image3.jpg +append output_horizontal.jpg
# Объединить изображения одно под другим (вертикально)
convert image1.jpg image2.jpg image3.jpg -append output_vertical.jpg
11. Создание GIF-анимации
bash Скопировать
Закрыть блок
# Создать GIF из последовательности изображений, задержка 100ms между кадрами (100 = 1 секунда / 10 кадров)
# -loop 0: бесконечный цикл
convert -delay 100 -loop 0 frame*.png animation.gif
Использование mogrify для пакетной обработки (ОСТОРОЖНО!)
mogrify изменяет файлы на месте. Всегда делайте резервные копии перед использованием mogrify!
bash Скопировать
Закрыть блок
# Уменьшить размер всех JPG файлов в текущей папке до 50%
mogrify -resize 50% *.jpg
# Конвертировать все PNG файлы в JPG (имена файлов останутся прежними, расширение изменится)
mogrify -format jpg *.png
# Добавить водяной знак ко всем JPG файлам
mogrify -draw "image over 10,10 0,0 'watermark.png'" *.jpg
Важные советы:
- Порядок операций: Порядок опций в команде `convert` имеет значение. ImageMagick обрабатывает их слева направо. Например, сначала изменить размер, потом обрезать.
- Резервные копии: Особенно при использовании `mogrify`, всегда делайте резервные копии ваших изображений.
- Прозрачность: ImageMagick хорошо работает с прозрачностью (альфа-каналом) в форматах, которые ее поддерживают (PNG, GIF).
- Оптимизация: Для веб-изображений можно использовать `-strip` (удаляет EXIF и другую метаинформацию) и `-quality` для JPG.bash Скопировать
Закрыть блок
convert input.jpg -strip -quality 85 output_optimized.jpg
- Документация: ImageMagick имеет обширную документацию. Если вы хотите углубиться, используйте `man convert` или посетите официальный сайт ImageMagick.org.
Пример использования imagemagic
Команда 1: Конвертировать все фото в WebP с качеством 80%
Эта команда найдёт все файлы с расширениями `.jpg`, `.jpeg`, `.png` в текущей папке и конвертирует их в `.webp`, сохраняя оригинальное имя файла (только меняя расширение).
Команда:
bash Скопировать
Закрыть блок
mogrify -format webp -quality 80 *.{jpg,jpeg,png}
Разбор команды:
- `mogrify`: Команда ImageMagick для изменения файлов "на месте" или создания новых с измененным форматом.
- `-format webp`: Указывает, что итоговый формат должен быть WebP.
- `-quality 80`: Устанавливает качество сжатия для WebP (80% — хороший баланс между размером и качеством).
- `*.{jpg,jpeg,png}`: Маска для выбора файлов. Она означает "все файлы в текущей папке, которые заканчиваются на .jpg, .jpeg или .png".
Результат: Рядом с файлом `my_photo.jpg` появится файл `my_photo.webp`. Оригиналы останутся нетронутыми.
Команда 2: Конвертировать, обрезать до 400px по высоте и переименовать
Эта команда делает всё то же самое, но дополнительно изменяет размер изображения так, чтобы его высота была ровно 400 пикселей (ширина изменится пропорционально), и добавляет `_400` к имени файла.
Для этого лучше использовать цикл `for`, чтобы иметь контроль над именем каждого файла.
Команда:
bash Скопировать
Закрыть блок
for img in *.{jpg,jpeg,png}; do convert "$img" -resize x400 -quality 80 "${img%.*}_400.webp"; done
Разбор команды:
- `for img in *.{jpg,jpeg,png}; do ...; done`: Это стандартный цикл в bash. Он по очереди перебирает все файлы, подходящие под маску, и присваивает их имена переменной `img`.
- `convert "$img"`: Используем `convert` вместо `mogrify` для большего контроля над именем выходного файла. `"$img"` — это исходный файл (например, `my_photo.jpg`).
- `-resize x400`: Ключевая часть. Изменяет размер изображения.
<li>`x400` означает: высота должна быть `400px`, а ширина (`x`) подбирается автоматически для сохранения пропорций.
- Если бы нужно было изменить ширину до 400px, команда была бы `-resize 400`.
- `-quality 80`: Устанавливает качество WebP.
- `"${img%.*}_400.webp"`: Магия для создания нового имени файла.
<li>`"${img%.*}`: Эта конструкция берет имя файла из переменной `img` и удаляет всё после последней точки (т.е. убирает расширение). Для `my_photo.jpg` результатом будет `my_photo`.
- `_400.webp`: Добавляем суффикс `_400` и новое расширение `.webp`.
- В итоге для `my_photo.jpg` получится имя `my_photo_400.webp`.
Результат: Рядом с файлом `my_photo.jpg` появится файл `my_photo_400.webp` размером, например, `600x400` (если оригинал был `1200x800`).
Версии для Windows (Command Prompt)
Синтаксис в стандартной командной строке Windows немного другой.
Команда 1 (простая конвертация):
cmd Скопировать
Закрыть блок
magick mogrify -format webp -quality 80 *.jpg *.jpeg *.png
(В Windows часто используется `magick` вместо `mogrify` или `convert`)
Команда 2 (конвертация, ресайз, переименование):
cmd Скопировать
Закрыть блок
for %f in (*.jpg *.jpeg *.png) do magick convert "%f" -resize x400 -quality 80 "%~nf_400.webp"
- `%f` — переменная цикла.
- `%~nf` — аналог `${img%.*}` в bash, извлекает имя файла без расширения.