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

Как использовать convert (ImageMagick) в Linux

6 min read Linux инструменты Обновлено 16 Dec 2025
Convert (ImageMagick) в Linux — быстрое руководство
Convert (ImageMagick) в Linux — быстрое руководство

Изображение примера для обработки в Linux

Что такое convert и почему это удобно

convert — это инструмент из набора ImageMagick, позволяющий выполнять сотни операций над изображениями из командной строки. Коротко: вы можете быстро автоматизировать повседневные задачи (конвертация форматов, уменьшение, кадрирование, подписи), встроить обработку в скрипты и серверные пайплайны.

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

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

Установка ImageMagick

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

convert --version

Если утилита не найдена, установите ImageMagick (Ubuntu/Debian):

sudo apt-get -y install imagemagick

Альтернатива (Red Hat/CentOS):

sudo yum install imagemagick

Примечание: на некоторых дистрибутивах или в контейнерах пакет может называться imagemagick-6 или imagemagick-7. Для массовых преобразований также полезна утилита mogrify (входит в тот же пакет) — она перезаписывает файлы на месте.

Получение информации об изображении

Команда для вывода типа, размера и размеров изображения:

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

Пример результата:

Type: JPEG
Size: 35.6KB
Dimensions: 640x480

Это удобно для скриптов — можно парсить вывод и принимать решения (например, создавать превью, если одна сторона больше порога).

Изменение формата файла

Чтобы изменить формат, достаточно указать новое имя с нужным расширением:

convert  

Примеры:

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

Замечание: опция -append не нужна для простой конвертации — она склеивает изображения по вертикали. Используйте -append только если нужно объединить несколько изображений.

Масштабирование (resize)

Масштабирование в процентах:

convert -resize 25%  

Это создаст изображение с размерами 25% от исходных. Если нужен точный размер в пикселях:

convert -resize 1024x768 profile.jpg profile_large2.jpg

Поведение:

  • Указание одного значения (например, 1024x) сохраняет пропорции.
  • Если оба значения заданы, изображение подгоняется под рамки 1024x768 (может измениться соотношение сторон, если не использовать флаги для сохранения пропорций).

Совет: для уменьшения веса используйте в связке -strip и -quality:

convert input.jpg -resize 1024x -strip -quality 85 output.jpg

-strip удаляет все метаданные (EXIF), -quality управляет степенью сжатия JPEG.

Кадрирование (crop)

Синтаксис:

convert  -crop 640x250+0+0 

Пояснения: 640x250 — ширина и высота результирующего фрагмента; +0+0 — смещение от левого верхнего угла.

Пример, чтобы сохранить нижнюю часть исхода 640x480:

convert  -crop 640x250+0+230 

Флаги и опции:

  • +repage сбрасывает внутренние координаты изображения после кадрирования, если это нужно.

Поворот изображения

Простейший поворот (по часовой стрелке):

convert  -rotate 90 

rotate принимает отрицательные значения для поворота против часовой стрелки, а также любые градусы для произвольного угла. Для поворота с заполнением фона используйте -background и -flatten.

Добавление подписи (caption/текст)

Пример вставки текста на изображение:

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

Важно: в большинстве оболочек удобно использовать двойные кавычки для внешней строки, а внутри текста — одинарные кавычки. В некоторых окружениях придётся экранировать кавычки.

Альтернатива с более гибким позиционированием и выравниванием — использование -annotate или создание отдельного холста с caption и объединение с оригиналом.

Пример с -annotate:

convert profile.jpg -gravity South -pointsize 18 -stroke black -strokewidth 2 -annotate +0+10 "© My Company" -fill white -annotate +0+10 "© My Company" profile_signed.jpg

Этот приём наносит текст с тенью (обводкой) и помещает подпись снизу по центру.

Смешивание команд — порядок важен

Команды можно комбинировать в одной строке. Порядок операций влияет на результат. Пример: поворот, кадрирование и уменьшение до миниатюры:

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

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

Пакетная обработка папки

Простой цикл для JPEG (без пробелов в именах файлов):

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

Более безопасный вариант (учитывает пробелы в именах) с find:

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

Для массовых операций есть mogrify — он перезаписывает файлы или может записывать в другую директорию:

mogrify -path thumbs -resize 30% *.jpg

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

Скрипт для безопасной пакетной генерации миниатюр (пример)

#!/bin/bash
set -euo pipefail
SRC_DIR="images"
DST_DIR="thumbnails"
mkdir -p "$DST_DIR"
for src in "$SRC_DIR"/*.{jpg,jpeg,png,gif}; do
  [ -e "$src" ] || continue
  base=$(basename "$src")
  convert "$src" -resize 300x300\> -strip -quality 85 "$DST_DIR/$base"
done

Этот скрипт: безопасно обрабатывает отсутствующие файлы, создаёт каталог, уменьшает до 300×300, но только если изображение больше (флаг >), удаляет метаданные и снижает качество до 85%.

Типичные ошибки и как их исправить

  • “convert: not authorized” — может быть политика безопасности ImageMagick (policy.xml) запрещает работу с некоторыми форматами (PDF, EPS). Решение: отредактировать /etc/ImageMagick-6/policy.xml (или соответствующий путь) и осознанно разрешить операции.
  • Файлы с пробелами/специальными символами — используйте кавычки и find -print0.
  • Падение памяти при обработке больших файлов — задавайте лимиты: -limit memory 1GB -limit map 2GB.

Производительность и оптимизация

  • Удаляйте метаданные: -strip.
  • Уменьшайте качество JPEG для веба: -quality 75–85.
  • Управляйте ограничениями: -limit memory, -limit map, -limit thread.
  • Параллелите задачи: GNU Parallel или xargs -P.

Пример параллельной обработки:

find . -iname '*.jpg' -print0 | parallel -0 convert {} -resize 30% thumbs/{/}

Когда convert не подходит (контрпримеры)

  • Нужно потоковое преобразование видео — используйте ffmpeg.
  • Очень большие наборы изображений и требование к скорости на уровне CDN — лучше специализированные сервисы или библиотеки на C/C++.
  • Тонкая работа с векторной графикой (SVG сложной логики) — чаще удобнее рендерить через rsvg-convert или интеграцию с браузером.

Альтернативы и дополняющие инструменты

  • mogrify — для массового перезаписывания изображений.
  • GraphicsMagick (gm) — форк, иногда быстрее и с меньшими требованиями к памяти.
  • ffmpeg — для конвертации анимаций, APNG, WebP, видео-кадр → изображение.

Руководство: быстрый рабочий процесс (mini-methodology)

  1. Проверка и инвентаризация: получить размеры и формат (convert -print).
  2. Решение: масштабировать/кадрировать/подписать в зависимости от целей (превью, архив, веб).
  3. Пакетная обработка: использовать mogrify или скрипты с find/parallel.
  4. Финализация: оптимизация качества, удаление метаданных, проверка контрольных сумм.

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

  • Разработчик:

    • Автоматизировать обработку в CI.
    • Параметризовать размеры в переменных окружения.
    • Логировать результаты и ошибки.
  • Системный администратор:

    • Настроить лимиты (-limit).
    • Проверить безопасность policy.xml.
    • Планировать cron/рабочие очереди для пакетной обработки.
  • Фотограф/контент-менеджер:

    • Хранить оригиналы отдельно.
    • Использовать -strip для веба.
    • Поддерживать шаблоны подписей/водяных знаков.
  • QA/тестировщик:

    • Проверить соответствие размеров/соотношений сторон.
    • Проверить читаемость текста на разных фонах для подписей.

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

  • Превью не превышает заданных пикселей и сохраняет читаемость.
  • Подпись отображается корректно на всех целевых изображениях.
  • Пакетная обработка завершается без ошибок и все файлы находятся в целевой папке.

Небольшой глоссарий (1 строка)

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

Диаграмма принятия решения (Mermaid)

flowchart TD
  A{Нужно обработать один файл или много?} -->|Один| B[Использовать convert]
  A -->|Много| C{Изменять на месте?}
  C -->|Да| D[mogrify]
  C -->|Нет| E[convert в цикл или parallel]
  B --> F{Требуется видео/анимация?}
  F -->|Да| G[ffmpeg]
  F -->|Нет| H[convert / mogrify]

Заключение

convert — мощный инструмент для быстрой и воспроизводимой обработки изображений в Linux. Он отлично подходит для автоматизации, пакетной обработки и интеграции в серверные пайплайны. Если вам нужна скорость или специфичная обработка (видео, высокая нагрузка), рассмотрите дополняющие инструменты (mogrify, GraphicsMagick, ffmpeg).

Важно: тестируйте последовательность операций на нескольких образцах, следите за лимитами памяти и безопасностью policy.xml при работе с неподдерживаемыми форматами.

Полезные команды на память:

convert --version
convert input.png output.jpg
convert input.jpg -resize 50% output.jpg
convert input.jpg -crop 200x200+10+10 crop.jpg
mogrify -path thumbs -resize 200x *.jpg

Попробуйте convert -help или man convert для полного списка опций и примеров.

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

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

Зарядная станция на тумбочке — просто и недорого
Дом и быт

Зарядная станция на тумбочке — просто и недорого

Скриншот в Windows 11 — все способы быстро
Guides

Скриншот в Windows 11 — все способы быстро

Трансляция звука с ПК на Sonos
Аудио

Трансляция звука с ПК на Sonos

Instagram: извлечение данных с Python
Python

Instagram: извлечение данных с Python

Изменить звуковой сигнал запуска в Windows 11
Windows

Изменить звуковой сигнал запуска в Windows 11

Как исправить Error Code 43 на Disney Plus
Техподдержка

Как исправить Error Code 43 на Disney Plus