Обработка изображений при помощи консольной утилиты Image Magic

Оцените статью

Инструкция по работе с ImageMagick в Linux

ImageMagick — мощный набор инструментов для обработки растровых изображений из командной строки. Поддерживает сотни форматов, позволяет выполнять обрезку, масштабирование, наложение фильтров, конвертацию и многое другое.

1. Установка

Debian/Ubuntu:

# apt update
# apt install imagemagick

CentOS/RHEL (с EPEL):

sudo yum install epel-release
sudo yum install ImageMagick

или

# dnf install ImageMagick

Проверка установки:

convert --version

(В новых версиях основные команды могут быть доступны через magick.)

В моем случае получилось:

# convert --version
Version: ImageMagick 7.1.2-3 Q16 x86_64 23340 https://imagemagick.org
Copyright: (C) 1999 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 raw tiff webp wmf x xml zlib zstd
Compiler: gcc (15.2)

2. Основные команды и синтаксис

Общий шаблон:

convert [опции] входной_файл выходной_файл

или (в новых версиях):

magick [опции] входной_файл выходной_файл

Ключевые команды:

  • convert — преобразование и обработка;
  • identify — информация о файле;
  • montage — сборка коллажей;
  • composite — наложение изображений;
  • mogrify — массовая обработка (изменяет исходники!).

3. Базовые операции

3.1. Просмотр информации

identify image.jpg
identify -format "%f %w %h %m" image.png  # имя, ширина, высота, формат

3.2. Конвертация формата

convert image.png image.jpg
convert photo.tiff photo.webp

3.3. Изменение размера

convert image.jpg -resize 800x600 resized.jpg        # с сохранением пропорций
convert image.jpg -resize 800x600! resized.jpg      # принудительно (может искажать)
convert image.jpg -resize 50% smaller.jpg             # на 50%

3.4. Обрезка (crop)

convert image.jpg -crop 300x200+50+30 cropped.jpg
  • 300x200 — размер области;
  • +50+30 — смещение от левого верхнего угла.

3.5. Поворот

convert image.jpg -rotate 90 rotated.jpg
convert image.jpg -rotate -45 rotated_neg.jpg

3.6. Отражение

convert image.jpg -flip vertical.jpg     # по вертикали
convert image.jpg -flop horizontal.jpg   # по горизонтали

3.7. Наложение текста

convert image.jpg -pointsize 24 -fill white -draw "text 50,100 'Hello World'" texted.jpg
  • -pointsize — размер шрифта;
  • -fill — цвет текста;
  • -draw "text X,Y 'текст'" — координаты и текст.

3.8. Наложение логотипа

composite -gravity southeast logo.png background.jpg result.jpg
  • -gravity — положение (northeast, center и т. д.).

4. Продвинутые возможности

4.1. Регулировка яркости/контраста

convert image.jpg -brightness-contrast 10x20 bright.jpg
  • 10 — яркость (+/-);
  • 20 — контраст.

4.2. Применение фильтров

convert image.jpg -blur 0x8 blurred.jpg
convert image.jpg -sharpen 0x3 sharpened.jpg
convert image.jpg -edge 1 edged.jpg

4.3. Изменение глубины цвета

convert image.jpg -depth 8 8bit.jpg

4.4. Создание миниатюр (thumbnail)

convert image.jpg -thumbnail 100x100 thumb.jpg

4.5. Прозрачность (для PNG)

convert image.png -transparent "#ff0000" transparent.png
  • Заменяет указанный цвет на прозрачный.

4.6. Сохранение качества при конвертации

convert image.jpg -quality 90 high_quality.jpg
  • 90 — качество (0–100).

5. Массовая обработка

5.1. Через mogrify (осторожно: перезаписывает исходники!)

mogrify -resize 800x600 *.jpg
mogrify -format png *.jpg

5.2. Через цикл в bash

for img in *.jpg; do
    convert "$img" -resize 800x600 "resized_$img"
done

5.3. Рекурсивная обработка (с find)

find . -name "*.jpg" -exec convert {} -resize 800x600 resized_{} \;

6. Работа с несколькими изображениями

6.1. Объединение в одно (горизонтально)

convert img1.jpg img2.jpg +append combined.jpg

6.2. Вертикальное объединение

convert img1.jpg img2.jpg -append stacked.jpg

6.3. Коллаж с подписями

montage *.jpg -tile 2x2 -geometry +10+10 -label '%f' collage.jpg
  • -tile 2x2 — сетка 2×2;
  • -geometry — отступы;
  • -label — подпись (имя файла).

7. Полезные опции

  • -verbose — подробный вывод;
  • -debug — отладка;
  • -limit memory 256MiB — ограничение памяти;
  • -density 300 — разрешение для векторных форматов;
  • -background transparent — прозрачный фон.

8. Примеры сложных сценариев

8.1. Добавление водяного знака

convert photo.jpg \( watermark.png -resize 20% \) \
        -gravity southeast -composite result.jpg

8.2. Создание GIF из кадров

convert -delay 100 -loop 0 frame*.jpg animation.gif
  • -delay 100 — задержка между кадрами (в сотых долях секунды);
  • -loop 0 — бесконечное повторение.

8.3. Извлечение кадров из видео (через ffmpeg + ImageMagick)

ffmpeg -i video.mp4 -vf "fps=1" frame_%03d.jpg
convert frame_*.jpg animated.gif

9. Советы и предупреждения

  1. Резервные копии: mogrify изменяет исходники — делайте бэкапы!
  2. Проверка форматов: используйте identify, чтобы узнать поддерживаемые форматы.
  3. Память: для больших изображений указывайте -limit memory.
  4. Кэширование: при работе с большими файлами может потребоваться настройка кэша (-define registry:temporary-path=/tmp).
  5. Документация: полная справка — man convert или на сайте ImageMagick.

10. Ресурсы

  • Официальный сайт: https://imagemagick.org
  • Документация: man convert, convert --help
  • Примеры: в папке /usr/share/doc/imagemagick/ (зависит от дистрибутива).

Похожие записи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS