Хостинг

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


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