Гид по технологиям

Работа с изображениями в Linux: команда convert (ImageMagick)

6 min read Видео/Изображения Обновлено 24 Apr 2026
ImageMagick: команда convert в Linux
ImageMagick: команда convert в Linux

Если нужно быстро менять формат, изменять размер, обрезать, поворачивать или пакетно обрабатывать изображения в терминале — используйте ImageMagick. Команда convert (в ImageMagick 7 это magick) позволяет делать это скриптами и в CI; в статье — базовые примеры, советы по безопасности и готовые шаблоны для работы.

Терминал Linux с командами ImageMagick

Введение

ImageMagick — это набор утилит для обработки растровых изображений через командную строку. Самая распространённая утилита для одноразовых преобразований — convert. В ImageMagick 7 основной бинарник называется magick, и многие примеры совместимы с обоими вызовами; если команда convert отсутствует, используйте magick convert.

Определение: convert — инструмент из ImageMagick для преобразования и редактирования изображений в командной строке.

Важно: при автоматической обработке изображений всегда делайте резервные копии исходников и тестируйте команды на примерах.

Как установить ImageMagick

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

convert --version

Если команда не найдена или вы используете ImageMagick 7, попробуйте:

magick --version

Установка в Debian/Ubuntu:

sudo apt-get -y install imagemagick

В CentOS/RHEL используйте yum/dnf, в macOS — brew install imagemagick.

Примечание: некоторые дистрибутивы включают GraphicsMagick, где утилита называется gm. Команды отличаются.

Получение информации о файле

Быстрая информация об изображении:

convert  -print "Type: %m\nSize: %b\nDimensions: %wx%h\n" /dev/null

Вывод примерно такой:

Type: jpeg
Size: 35.6KB
Dimensions: 640x480

Изменение формата изображения

Чтобы просто сохранить изображение в другом формате, указывать дополнительные опции не нужно. Основной способ:

convert input.png output.jpg

Важно: в примерах иногда встречается опция -append — она объединяет изображения, а не конвертирует формат. Для изменения формата используйте просто указание выходного имени с нужным расширением.

Совет: задайте качество JPG при сохранении:

convert input.png -quality 85 output.jpg

Масштабирование изображений

Пропорциональное изменение размера в процентах:

convert -resize 25%  

Прямое указание размеров:

convert -resize 1024x768 profile.jpg profile_large2.jpg

Полезные модификаторы:

  • 1024x768 — масштабирует, сохраняя пропорции, вписывая в рамку 1024×768.
  • 1024x768! — принудительно приведёт к точным размерам (искажение).
  • 1024x — ограничение по ширине, высота рассчитывается автоматически.
  • 1024x768^ — масштабирует, чтобы заполнить рамку, после чего можно обрезать по центру.
  • и < — выполняют изменение размера только если изображение больше (>) или меньше (<) заданного.

Примеры использования с обрезкой по центру:

convert input.jpg -resize 1024x768^ -gravity center -extent 1024x768 output.jpg

Обрезка изображений

Обрезка с указанием размера и смещения:

convert  -crop 640x250+0+0 

Параметр +X+Y указывает точку старта отсчёта от левого верхнего угла. Чтобы обрезать нижнюю часть:

convert  -crop 640x250+0+230 

Совет: для центровки используйте -gravity и -crop вместе:

convert input.jpg -gravity center -crop 640x250+0+0 +repage output.jpg

Замечание: +repage удаляет информацию о старых виртуальных размерах кадра, полезно для предсказуемого результата.

Вращение изображений

Простое вращение по градусам (по часовой стрелке):

convert  -rotate 90 

Для вращения без добавления фона используйте -background и -rotate или -distort:

convert input.png -background none -rotate 90 output.png

Добавление подписи на изображение

Добавление текста с указанием шрифта, размера и цвета:

convert profile.jpg -pointsize 14 -font helvetica -fill yellow -draw 'text 270,160 "Warm Regards from the Family"' profile_cap.jpg

Рекомендации:

  • Оборачивайте аргумент -draw в одинарные кавычки, а сам текст — в двойные.
  • Проверьте, что указанный шрифт доступен в системе (например, /usr/share/fonts).
  • Для точного позиционирования используйте -gravity и -annotate:
convert profile.jpg -gravity South -pointsize 18 -fill white -annotate +0+10 "© 2026 Company" profile_cap2.jpg

Комбинирование команд в одной строке

Вы можете применять несколько операций последовательно:

convert  -rotate 90 -crop 1200x800 -resize 25% 

Порядок операций важен. В примере сначала поворот, затем обрезка, затем масштабирование.

Пакетная обработка каталогов

Простой пример для .jpg-файлов:

mkdir -p thumbs
for i in *.jpg; do convert "$i" -resize 30% "thumbs/$i"; done

Более надёжный способ (включая пробелы и подкаталоги):

mkdir -p thumbs
find . -maxdepth 1 -type f -iname '*.jpg' -print0 | while IFS= read -r -d '' f; do
  fname=$(basename "$f")
  convert "$f" -resize 30% "thumbs/$fname"
done

SOP для пакетной обработки:

  1. Создайте резервную копию всех исходных файлов.
  2. Проведите тест на 1–3 файлах и проверьте результат.
  3. Запустите обработку по очереди, контролируя логи и свободное место на диске.
  4. После успешной проверки удалите резервные копии или переместите их в архив.

Критерии приёмки

  • Все целевые файлы обработаны и сохранены в папке назначения.
  • Размеры и формат соответствуют ожиданиям.
  • Метаданные обрабатываются в соответствии с политикой (см. раздел о безопасности).

Когда convert даёт неверный результат и альтернативы

Типичные причины проблем:

  • Использование старой версии ImageMagick или конфликт с GraphicsMagick.
  • Ошибки в синтаксисе команд (например, лишний -append).
  • Ограничения памяти при обработке больших изображений.
  • Недостаточно прав на файлы/папки.

Альтернативы и обходные пути:

  • magick (ImageMagick 7): используйте magick convert … или magick … напрямую.
  • gm (GraphicsMagick): совместим с другими синтаксисами и быстрее на некоторых задачах.
  • jpegoptim/pngquant/optipng — для оптимизации и сжатия без потери качества.
  • библиотечные решения: Pillow (Python), Sharp (Node.js) — если нужна интеграция в приложение.

Совет по миграции: если скрипты были написаны для convert и вы перешли на ImageMagick 7, замените вызовы на magick convert или обновите синтаксис в соответствии с документацией.

Безопасность и приватность

Обработка недоверенных изображений может быть рискованной. В прошлом были случаи уязвимостей при обработке специально сформированных файлов. Рекомендации:

  • Не обрабатывайте изображения от ненадёжных источников в привилегированном окружении.
  • Ограничьте разрешения и доступ к временным файлам.
  • Используйте policy.xml для отключения потенциально опасных декодеров и внешних делегатов.
  • По умолчанию убирайте лишние метаданные перед публикацией:
convert input.jpg -strip output.jpg
  • Для конфиденциальных данных убедитесь, что EXIF и XMP удалены.

Полезная памятка (cheat sheet)

Примеры часто используемых команд:

# Конвертация формата
convert input.png output.jpg

# Качество jpeg
convert input.png -quality 85 output.jpg

# Ресайз 50% по ширине
convert input.jpg -resize 50% output.jpg

# Ресайз с заполнением 800x600
convert input.jpg -resize 800x600^ -gravity center -extent 800x600 output.jpg

# Обрезка 640x250 от (0,0)
convert input.jpg -crop 640x250+0+0 +repage output.jpg

# Поворот с прозрачным фоном
convert input.png -background none -rotate 90 output.png

# Добавить подпись внизу по центру
convert input.jpg -gravity South -pointsize 18 -fill white -annotate +0+10 "© Your Name" output.jpg

# Удалить метаданные
convert input.jpg -strip output.jpg

Проверочные сценарии и критерии приёмки

Тесты для проверки автоматизации:

  • Для набора тестовых изображений после обработки: все файлы должны существовать в папке назначения.
  • Проверить размеры (ширина×высота) с ожидаемыми значениями.
  • Проверить, что формат совпадает с расширением файла.
  • Убедиться, что метаданные отсутствуют при использовании -strip.

Роли и чек-листы

Для разработчика:

  • Написать модуль-обёртку над convert/magick.
  • Добавить обработку ошибок и логирование.
  • Добавить unit-тесты на несколько форматов и размеров.

Для системного администратора:

  • Обновить ImageMagick до стабильной версии.
  • Настроить policy.xml для безопасности.
  • Контролировать использование памяти и очередь задач.

Для дизайнера/контент-менеджера:

  • Подготовить справочник размеров и качеств для сайта.
  • Тестировать визуально выборку файлов.
  • Проверять соответствие брендбуку (цвет, шрифты).

Примеры продвинутых приёмов

  1. Создание sprite-изображения из набора картинок:
convert image1.png image2.png image3.png +append sprite.png
  1. Генерация веб-версии с прогрессивным JPEG и удалением метаданных:
convert input.tif -strip -interlace JPEG -quality 75 output.jpg
  1. Массовая оптимизация PNG через pngquant (комбинированно):
convert input.png png:- | pngquant --quality=70-90 - > output.png

Частые ошибки и их исправления

  • Проблема: команда convert не найдена. Решение: попробуйте magick или установите ImageMagick.
  • Проблема: изображение слишком большое и команда падает с ошибкой памяти. Решение: использовать ulimit, временные файлы на больший диск, или обрабатывать по частям.
  • Проблема: потеря прозрачности при конвертации в PNG. Решение: укажите -background none и сохраняйте в формат с альфой.

Итог и рекомендации

ImageMagick — мощный инструмент для автоматической и пакетной обработки изображений в Linux. Он полезен в сценариях CI/CD, при подготовке медиа для веба и в админских задачах. Для безопасной работы:

  • Тестируйте команды на копиях файлов.
  • Настройте политику безопасности в ImageMagick.
  • Рассмотрите специальные инструменты для оптимизации (jpegoptim, pngquant) при необходимости экономии трафика.

Ресурсы: используйте встроенную справку:

convert -help
magick -help

Резюме

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

Важно

Всегда делайте резервные копии перед массовой обработкой и проверяйте результаты на примерах.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как разделить меш в Blender
3D моделирование

Как разделить меш в Blender

Как увеличить изображение без потери качества
Фото

Как увеличить изображение без потери качества

Как создать влог на iPhone — полное руководство
Видео

Как создать влог на iPhone — полное руководство

Как отразить экран на телевизор — все способы
Руководство

Как отразить экран на телевизор — все способы

Бесконечная прокрутка в Vue 3 — useInfiniteScroll
Vue

Бесконечная прокрутка в Vue 3 — useInfiniteScroll

Чёрный экран iPhone: как восстановить устройство
iPhone

Чёрный экран iPhone: как восстановить устройство