Хостинг

ImageMagick – массовая обработка фоток через командную строку (CENTOS9). Очень мощный и гибкий.

ImageMagick – массовая обработка фоток через командную строку (CENTOS9). Очень мощный и гибкий.

Команды для конвертации в 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: Ключевая часть. Изменяет размер изображения.

  • x400 означает: высота должна быть 400px, а ширина (x) подбирается автоматически для сохранения пропорций.

  • Если бы нужно было изменить ширину до 400px, команда была бы -resize 400.

  • -quality 80: Устанавливает качество WebP.

  • "${img%.*}_400.webp": Магия для создания нового имени файла.

  • "${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, извлекает имя файла без расширения.


Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.

🚀 Нужна помощь с сайтом на 1С-Битрикс или Аспро?

Я работаю удалённо по всей России и СНГ. Узнайте цены и условия для вашего города:

Все регионы →