Инструкция по работе с 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. Советы и предупреждения
- Резервные копии:
mogrifyизменяет исходники — делайте бэкапы! - Проверка форматов: используйте
identify, чтобы узнать поддерживаемые форматы. - Память: для больших изображений указывайте
-limit memory. - Кэширование: при работе с большими файлами может потребоваться настройка кэша (
-define registry:temporary-path=/tmp). - Документация: полная справка —
man convertили на сайте ImageMagick.
10. Ресурсы
- Официальный сайт: https://imagemagick.org
- Документация:
man convert,convert --help - Примеры: в папке
/usr/share/doc/imagemagick/(зависит от дистрибутива).





