ImageMagick: пакетная обработка изображений в Linux

Кратко: ImageMagick — мощный набор утилит командной строки для пакетной обработки изображений в Linux. В этой статье шаг за шагом показано, как устанавливать ImageMagick, массово удалять EXIF, изменять размеры, кадрировать, водяные знаки, конвертировать форматы и другие распространённые операции. Есть рекомендации по безопасности, контроль качества и готовые шаблоны команд.
Быстрые ссылки
First, Install ImageMagick
Batch Remove EXIF Data From Images
Batch Resize Photos
Batch Crop Photos
Batch Watermark Images
Convert Image File Formats
Rotate Images in Bulk
Batch Flip (Mirror) Images
Change JPEG Quality
Rename Images in Bulk
Auto Crop and Trim
Merge Images to Create Collages
Linux ❤️ Creativity
ImageMagick — это мощный инструмент командной строки в Linux для пакетного редактирования изображений. Ниже — полный справочник по часто используемым операциям: кадрирование, изменение размера, объединение, удаление метаданных (EXIF) и другие действия. Я объясняю команды, даю готовые шаблоны и добавляю практические советы по безопасности и контролю качества.
Установка ImageMagick
Пакетное редактирование фотографий в Linux выполняется с помощью ImageMagick. ImageMagick — бесплатный набор утилит для создания и редактирования изображений из командной строки: изменение размеров, кадрирование, конвертация, поворот и другие массовые операции.
На Debian/Ubuntu установите пакет командой:
sudo apt install imagemagickНа Fedora:
sudo dnf install ImageMagickСовет по безопасности: всегда проверяйте команды, которые копируете из интернета. Команды, работающие с большим количеством файлов, могут повредить данные, если запустить их в неправильной папке.
Массовое удаление EXIF-данных из изображений
EXIF содержит информацию о камере, настройках съёмки, цветовых профилях и может включать геолокацию. Если вы публикуете фото в интернете, удаление EXIF защитит приватность.
Шаблон команды для JPG и PNG:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -strip "/path/to/output_directory/$(basename "$file")"; doneОбъяснение:
- Цикл for перебирает файлы с расширениями .jpg, .jpeg, .png (обратите внимание, что имена чувствительны к регистру).
- Переменная $file содержит путь к текущему файлу.
- Опция -strip команды convert удаляет все метаданные (EXIF, цветовые профили и прочее).
- Результат записывается в отдельную папку, оригиналы остаются нетронутыми.
Важно: -strip удаляет не только геоданные, но и цветовые профили; если вам важен цвет, сделайте резервную копию.
Массовое изменение размера фото
Команда изменяет все изображения в папке до 1024x768 пикселей:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -resize 1024x768 "/path/to/output_directory/$(basename "$file")"; doneПримечания:
- -resize 1024x768 принудительно установит размеры; если соотношение сторон отличается, изображение может быть растянуто.
- Если нужно сохранить пропорции, используйте суффиксы, например “1024x” (ширина максимум 1024) или “x768” (высота максимум 768), или добавьте “^” и -gravity + -extent для обрезки.
Пример сохранения пропорций и заполнения до конкретного размера:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -resize 1024x768^ -gravity center -extent 1024x768 "/path/to/output_directory/$(basename "$file")"; doneМассовое кадрирование изображений
Команда обрезает изображения до 800x600 пикселей, начиная с координат 0,0 (левый верхний угол):
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -crop 800x600+0+0 "/path/to/output_directory/$(basename "$file")"; doneРазбор параметра 800x600+0+0:
- 800x600 — размеры области, которую нужно оставить.
- +0+0 — координаты начала обрезки (X/Y), в данном случае верхний левый угол.
Если нужно кадрировать центр изображения, сначала можно вычислить смещение или воспользоваться комбинацией -resize и -gravity.
Массовая водяная маркировка изображений
Защита авторских прав и брендирование — частая задача. Пример команды для добавления текстовой водяной метки в правый нижний угол:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -gravity southeast -pointsize 20 -draw "text 5,5 'My Watermark'" "/path/to/output_directory/$(basename "$file")"; doneОбъяснение:
- -gravity southeast устанавливает привязку к правому нижнему углу (southeast).
- -pointsize 20 задаёт размер шрифта.
- -draw “text 5,5 ‘My Watermark’” рисует текст со смещением 5 пикселей от угла.
Советы:
- Для более аккуратного результата используйте прозрачный слой и composite или -annotate с указанием шрифта.
- Чтобы использовать пользовательский шрифт, добавьте -font “/path/to/font.ttf”.
Конвертация форматов изображений партиями
Преобразование JPG в PNG:
for file in /path/to/source_directory/*.{jpg,jpeg}; do convert "$file" "/path/to/output_directory/$(basename "${file%.*}.png")"; doneФормат определяется по расширению выходного файла. ImageMagick умеет работать с JPEG, PNG, GIF, TIFF, BMP, SVG, WEBP, HEIC и RAW, а также с PDF и векторными SVG.
Совет по совместимости: при конвертации в WEBP или HEIC учитывайте версию ImageMagick и установленные кодеки; старые сборки могут не поддерживать эти форматы.
Массовый поворот изображений
Повернуть на 90 градусов по часовой стрелке:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -rotate 90 "/path/to/output_directory/$(basename "$file")"; doneЗамените 90 на нужный угол (например, 180 или -90).
Массовое отражение (flip/mirror)
Вертикальное отражение:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -flip "/path/to/output_directory/$(basename "$file")"; doneГоризонтальное отражение:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -flop "/path/to/output_directory/$(basename "$file")"; doneИзменение качества JPEG
Можно уменьшить размер JPG, снижая качество:
for file in /path/to/source_directory/*.jpg; do convert "$file" -quality 85 "/path/to/output_directory/$(basename "$file")"; doneПояснения:
- Параметр -quality принимает значения 0–100 (100 — максимум качества). Для веба часто рекомендуют 60–85.
- Понижение качества необратимо — всегда оставляйте оригиналы.
Массовое переименование изображений
Простой способ добавить суффикс _renamed к каждому файлу:
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do cp "$file" "/path/to/output_directory/$(basename "${file%.*}_renamed.${file##*.}")"; doneЕсли нужно переименовать на последовательные номера, можно использовать счётчик в цикле или утилиты rename/awk.
Автоматическое обрезание и подрезка фона
Опция -trim автоматически обрезает изображение по цвету фона (пиксели в углах используются как референс):
for file in /path/to/source_directory/*.{jpg,jpeg,png}; do convert "$file" -trim "/path/to/output_directory/$(basename "$file")"; doneЗамечание: -trim чувствителен к шуму и градиентам — для сложного фона могут понадобиться предварительные фильтры.
Объединение изображений для коллажей
Инструмент montage создаёт коллажи и сетки:
montage /path/to/source_directory/*.{jpg,jpeg,png} -tile 2x2 -geometry +5+5 "/path/to/output_directory/collage.jpg- -tile 2x2 — сетка 2 на 2.
- -geometry +5+5 — отступы между изображениями.
Если файлов больше, чем ячеек, montage создаст дополнительные страницы или расширит сетку в зависимости от параметров.
Практические рекомендации и чеклист перед массовым запуском
- Создайте резервную копию исходных изображений.
- Тестируйте команды на 3–10 образцах, а не на всей папке.
- Убедитесь, что файлы соответствуют расширениям (регистрозависимо).
- Проверяйте доступность кодеков (WEBP/HEIC) и версию ImageMagick.
- Если используете автоматизацию (скрипты/cron), логируйте операции и ошибки.
Критерии приёмки
- Все выходные файлы созданы в /path/to/output_directory с теми же именами (или по ожидаемому варианту именования).
- Размеры и метаданные соответствуют заданным опциям (-resize, -crop, -strip).
- Для водяных знаков текст читаем и не уходит за границы изображения.
- Качество JPG не ниже ожидаемого визуально при просмотре в масштабе 100%.
Контроль качества и тесты
Тестовые сценарии:
- Тест 1: Запустите -strip на 5 изображениях, проверьте, что EXIF удалён (identify -verbose).
- Тест 2: Измените качество JPG до 75, сравните размер и визуальное качество.
- Тест 3: Создайте коллаж из 4 изображений, проверьте отступы и выравнивание.
Команда для проверки метаданных:
identify -verbose /path/to/output_directory/example.jpg | grep -i exifОшибки и способы их исправления
Проблема: пустые или повреждённые файлы в папке. Решение: отфильтруйте по MIME-типу с помощью file или find -type f -exec file –mime-type {} \;.
Проблема: ImageMagick не поддерживает формат (например, HEIC). Решение: установите дополнительные библиотеки/кодеки (libheif, libwebp) или обновите ImageMagick.
Проблема: команды не выполняются для файлов с пробелами. Решение: используйте конструкцию while IFS= read -r -d ‘’ file; do …; done < <(find … -print0) для безопасной обработки имён.
Пример безопасного цикла find + while:
find /path/to/source_directory -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -print0 | while IFS= read -r -d '' file; do convert "$file" -strip "/path/to/output_directory/$(basename "$file")"; doneАльтернативные инструменты
- GraphicsMagick — форк ImageMagick, иногда быстрее для массовых задач.
- exiftool — специализированный инструмент для работы с метаданными.
- ffmpeg — для последовательностей изображений и конвертации в видео.
- GUI-инструменты: GIMP, Darktable — если нужен визуальный контроль при обработке.
Безопасность и конфиденциальность
- Никогда не публикуйте изображения с геоданными, если это может повредить вашей приватности.
- Удаление EXIF с помощью -strip удаляет и цветовые профили; если сохраняется требование цветокоррекции, отдельно управлять профилями.
- При автоматизации убедитесь, что скрипты не запускаются от root без необходимости.
Роли и чеклисты (кто что делает)
- Фотограф/Автор: проверяет исходники и оставляет резерв.
- SRE/администратор: устанавливает и поддерживает версии ImageMagick и кодеков.
- Контент-менеджер: определяет требования по качеству и размерам для публикации.
Чеклист запуска автоматизации:
- Резерв исходников
- Тест на выборке
- Логирование в файл
- Проверка доступности выходной директории
Быстрые шаблоны команд (cheat sheet)
- Удалить EXIF: см. раздел «Массовое удаление EXIF-данных».
- Сохранить пропорции: -resize 1024x
- Заполнить и обрезать до размера: -resize 1024x768^ -gravity center -extent 1024x768
- Добавить водяной знак шрифтом: -font “/path/to/font.ttf” -pointsize 20 -gravity southeast -annotate +5+5 “Текст”
Короткий глоссарий терминов
- EXIF — встроенные метаданные фотографии (модель камеры, дата, геолокация).
- convert — основная утилита ImageMagick для преобразований изображений.
- montage — утилита ImageMagick для создания коллажей.
- -strip — опция для удаления метаданных и профилей.
Social preview (краткий анонс для публикации)
Linux + ImageMagick упрощают массовую обработку фотографий: от удаления EXIF до создания коллажей. Полезно для блогеров, фотографов и SRE.
Итого: ImageMagick даёт гибкие инструменты для пакетной обработки изображений прямо из терминала. Протестируйте команды на образцах, сделайте резервные копии и используйте более надёжные find/while конструкции для обработки файлов с пробелами или необычными именами. Следуя чеклистам и критериям приёмки, вы быстро настроите воспроизводимый рабочий процесс.
Похожие материалы
Нет звука в Windows 10 — пошаговое руководство
Ярлыки к экранам Android‑приложений
Что такое JFIF и как открыть или конвертировать
Скрыть поиск и кнопку Просмотр задач в Windows 10
Загрузка видео через Adobe Media Encoder