GraphicsMagick: программа для обработки изображений
GraphicsMagick Image Processing System — это программа для обработки изображений, построенная вокруг команды gm и набора подкоманд для конвертации, изменения размера, анализа, сравнения, просмотра и пакетной обработки файлов. GraphicsMagick не пытается быть классическим графическим редактором с панелью слоев, кистями, палитрами и визуальной ретушью. Его сильная сторона другая: точная, повторяемая и автоматизируемая работа с изображениями через командную строку, скрипты и программные API.
Скачать GraphicsMagick
Для обработки изображений
⬇ Скачать ФотоМАСТЕР бесплатно
⬇ Скачать GraphicsMagick бесплатно
Программа особенно хорошо подходит там, где нужно обработать не одну картинку вручную, а десятки, сотни или тысячи файлов: подготовить изображения для сайта, сгенерировать миниатюры, привести фотографии к единому размеру, конвертировать TIFF в JPEG, удалить лишние профили и метаданные, собрать монтажный лист, получить технические свойства файла или встроить обработку изображений в серверный процесс.
GraphicsMagick работает с растровыми и некоторыми векторными форматами через собственные механизмы и внешние библиотеки. В типичных задачах пользователь работает с JPEG, PNG, TIFF, GIF, WebP, PDF, HEIC/HEIF, AVIF, JPEG 2000 и другими форматами, но фактический набор поддерживаемых кодеков зависит от конкретной сборки. Это важный момент: одна установка GraphicsMagick может уверенно открывать WebP и HEIC, а другая — не иметь соответствующей библиотеки. Поэтому после установки нужно не просто запустить программу, а проверить конфигурацию через gm version и тестовые команды.
GraphicsMagick происходит из ветки ImageMagick, но развивался как самостоятельный проект. Это хорошо чувствуется по синтаксису: команды напоминают ImageMagick старого поколения, но в GraphicsMagick вся работа сгруппирована вокруг одного исполняемого файла gm. Вместо отдельных команд пользователь пишет gm convert, gm mogrify, gm identify, gm display, gm composite, gm montage, gm compare, gm import и другие подкоманды.
Содержание
- 1 Что именно делает GraphicsMagick
- 2 Установка и первый запуск
- 3 Интерфейс GraphicsMagick
- 4 Графический просмотр через gm display
- 5 gm convert: основная команда для обработки и конвертации
- 6 gm mogrify: пакетное изменение файлов
- 7 gm identify: анализ изображения
- 8 Конвертация форматов в GraphicsMagick
- 9 Изменение размера изображений для сайта
- 10 Создание миниатюр
- 11 Создание монтажного листа через gm montage
- 12 Наложение изображений через gm composite
- 13 Добавление текста на изображение
- 14 Сравнение изображений через gm compare
- 15 Захват изображения через gm import
- 16 Работа с цветом и профилями
- 17 Оптимизация изображений
- 18 Пакетная обработка: практический сценарий
- 19 Работа с папками и именами файлов
- 20 Безопасная работа с gm mogrify
- 21 Использование GraphicsMagick на сервере
- 22 Программные API и интеграция
- 23 Производительность и большие изображения
- 24 Типовые ошибки при работе с GraphicsMagick
- 25 Сильные стороны GraphicsMagick
- 26 Недостатки GraphicsMagick
- 27 Сравнение с аналогами
- 28 Для кого подходит GraphicsMagick
- 29 Кому лучше выбрать другую программу
- 30 Практические советы перед началом работы
- 31 Пример полного рабочего процесса
- 32 Итоговая оценка GraphicsMagick
Что именно делает GraphicsMagick
GraphicsMagick решает прикладные задачи обработки изображений без ручного открытия каждого файла в редакторе. Это инструмент не для художественного рисования, а для операций, которые должны выполняться предсказуемо и одинаково много раз.
Программа умеет:
-
конвертировать изображения между форматами;
-
изменять размер с сохранением пропорций;
-
обрезать изображение по заданным координатам;
-
поворачивать и отражать кадр;
-
уменьшать глубину цвета;
-
применять резкость, размытие и другие фильтры;
-
удалять профили, текстовые поля и часть служебных данных;
-
создавать миниатюры;
-
собирать несколько изображений в один монтажный лист;
-
сравнивать две картинки;
-
накладывать одно изображение поверх другого;
-
добавлять текст и простые графические элементы;
-
просматривать изображения через
gm display; -
получать подробные технические сведения через
gm identify; -
выполнять пакетную обработку через
gm mogrifyили циклы в shell-скриптах.
GraphicsMagick удобно использовать в рабочих процессах, где важна не красивая кнопка, а воспроизводимый результат. Например, команда для уменьшения всех фотографий до ширины 1600 пикселей может быть сохранена в Bash-скрипте или .bat-файле и запускаться каждый раз перед публикацией изображений на сайте. При этом результат будет одинаковым на всех файлах, а не зависеть от того, какие параметры случайно остались в окне графического редактора.
Установка и первый запуск
GraphicsMagick распространяется для разных платформ. На Windows обычно используют готовую сборку, на Linux программа доступна из репозиториев дистрибутивов, на macOS ее часто ставят через пакетный менеджер. После установки основная проверка выполняется одной командой:
gm version
Эта команда показывает версию GraphicsMagick, параметры сборки, поддержку OpenMP, quantum depth, компилятор, подключенные библиотеки и список возможностей. Именно с нее лучше начинать, потому что она сразу отвечает на два практических вопроса: установлена ли программа корректно и какие форматы действительно поддерживаются в текущей системе.
В Windows после установки важно проверить, добавлен ли каталог GraphicsMagick в переменную PATH. Если gm version не выполняется из обычной командной строки, значит система не видит исполняемый файл gm.exe. В таком случае нужно либо открыть терминал из папки установки, либо добавить путь к GraphicsMagick в системные переменные среды.
На macOS типовая проверка выглядит так:
gm versiongm identify test.jpg
На Linux после установки из репозитория проверка такая же:
gm versiongm convert logo: logo.pnggm identify logo.png
Команда gm convert logo: logo.png создает тестовый файл из встроенного изображения logo:. Это удобный способ проверить, что GraphicsMagick не только запускается, но и умеет записывать результат.

На скриншоте показан графический просмотрщик GraphicsMagick: окно gm display с панелью Commands, логотипом программы и раскрытым меню Enhance. В меню видны команды Hue, Saturation, Brightness, Gamma, Spiff, Dull, Equalize, Normalize, Negate, Grayscale, Map, Quantize. Это не полноценный редактор с современным интерфейсом, но визуальная часть у программы есть: через gm display можно открыть изображение, просмотреть его и выполнить базовые операции.
Интерфейс GraphicsMagick
Главный интерфейс GraphicsMagick — командная строка. Пользователь вводит команды, параметры и имена файлов. Это принципиально отличает программу от XnConvert, FastStone Photo Resizer, IrfanView или PhotoScape, где почти все действия выполняются через окна и кнопки.
Основная команда выглядит так:
gm <подкоманда> [параметры] input output
Например:
gm convert photo.jpg -resize 1200x1200 result.jpg
Здесь:
-
gm— основной исполняемый файл GraphicsMagick; -
convert— подкоманда для преобразования изображения; -
photo.jpg— исходный файл; -
-resize 1200x1200— параметр изменения размера; -
result.jpg— итоговый файл.
У GraphicsMagick есть несколько ключевых подкоманд:
| Подкоманда | Назначение |
|---|---|
gm convert |
конвертация и обработка изображения с записью в новый файл |
gm mogrify |
массовое изменение файлов, часто с перезаписью оригиналов |
gm identify |
анализ свойств изображения |
gm display |
просмотр изображения в графическом окне |
gm composite |
наложение одного изображения на другое |
gm montage |
создание монтажного листа из нескольких изображений |
gm compare |
сравнение двух изображений |
gm import |
захват изображения с экрана или окна в X11-среде |
gm animate |
воспроизведение анимации |
gm conjure |
выполнение сценариев Magick Scripting Language |
Командный интерфейс GraphicsMagick сначала кажется сухим, но он хорошо подходит для повторяемых операций. Например, в графической программе нужно открыть файл, выбрать пункт меню, указать размер, сохранить копию, перейти к следующему файлу. В GraphicsMagick это заменяется одной командой или коротким циклом.
Графический просмотр через gm display
Хотя GraphicsMagick чаще используют как консольный инструмент, у него есть просмотрщик gm display. Он открывает изображение в отдельном окне и дает доступ к базовым операциям через меню.
Пример запуска:
gm display photo.jpg
В окне Display есть верхнее меню с пунктами File, Edit, View, Transform, Window, Help. В зависимости от сборки и окружения набор пунктов может отличаться, но общая логика такая: File отвечает за открытие и сохранение, View — за масштаб отображения, Transform — за операции с изображением, Window — за управление окнами.

В меню View заметны команды Half Size, Original Size, Double Size, Resize, Refresh. Они относятся именно к просмотру изображения, а не к пакетной обработке. Через такое окно можно быстро проверить результат обработки, но для серьезной автоматизации все равно удобнее использовать gm convert, gm mogrify и gm identify.
Меню Transform в gm display полезно для знакомства с базовыми возможностями программы. В нем доступны операции поворота, отражения, кадрирования, изменения размера и обрезки пустых полей. Однако это вспомогательная часть GraphicsMagick. Если нужно обработать 500 файлов, открывать каждый через gm display нерационально: для этого есть командная строка.
gm convert: основная команда для обработки и конвертации
gm convert — одна из самых часто используемых команд GraphicsMagick. Она читает исходное изображение, применяет заданные операции и записывает результат в новый файл. В отличие от gm mogrify, команда convert обычно безопаснее для новичка, потому что не перезаписывает исходник, если явно указать другое имя выходного файла.
Простейшая конвертация TIFF в JPEG:
gm convert scan.tif scan.jpg
Конвертация PNG в WebP:
gm convert image.png image.webp
Изменение размера фотографии:
gm convert photo.jpg -resize 1200x1200 photo-1200.jpg
Параметр 1200x1200 не означает принудительное растягивание до квадрата. GraphicsMagick сохраняет пропорции и вписывает изображение в указанные границы. Если исходная фотография имеет размер 4000×3000, после команды она станет 1200×900. Если исходник вертикальный, например 3000×4000, результат будет 900×1200.
Для жесткой установки размера с возможным искажением используется восклицательный знак:
gm convert photo.jpg -resize 1200x1200! photo-square.jpg
Такой вариант нужен редко, потому что он деформирует изображение. Для веб-изображений, каталожных фото и обложек обычно лучше сохранять пропорции или отдельно использовать кадрирование.
Изменение ширины без указания высоты
Если нужно задать только ширину, используется запись 1200x:
gm convert photo.jpg -resize 1200x photo-1200.jpg
Если нужно задать только высоту:
gm convert photo.jpg -resize x800 photo-800h.jpg
Такой синтаксис удобен при подготовке изображений для сайта. Например, все широкие изображения можно привести к ширине 1200 пикселей, а высота будет рассчитана автоматически.
Удаление метаданных и профилей
Для публикации изображений на сайте часто нужно удалить лишние служебные данные. В GraphicsMagick для этого применяется параметр -strip:
gm convert photo.jpg -strip photo-clean.jpg
-strip удаляет профили и текстовые атрибуты, которые увеличивают размер файла или содержат лишнюю информацию. Это полезно для веб-публикации, но требует осторожности при работе с файлами для печати: ICC-профиль может быть важен для правильной цветопередачи.
Поворот изображения
Поворот на 90 градусов:
gm convert photo.jpg -rotate 90 photo-rotated.jpg
Поворот против часовой стрелки:
gm convert photo.jpg -rotate -90 photo-left.jpg
Поворот на произвольный угол:
gm convert photo.jpg -rotate 2.5 photo-straightened.jpg
При повороте на произвольный угол вокруг изображения появятся дополнительные области фона. Если это нежелательно, после поворота нужно дополнительно кадрировать изображение.
Кадрирование
Обрезка изображения выполняется параметром -crop. Формат записи:
gm convert input.jpg -crop ШИРИНАxВЫСОТА+X+Y output.jpg
Пример:
gm convert photo.jpg -crop 800x600+100+50 crop.jpg
Эта команда берет область 800×600 пикселей, начиная с координаты X=100 и Y=50. Координаты отсчитываются от верхнего левого угла.
Для центрированного кадрирования удобно использовать -gravity center:
gm convert photo.jpg -gravity center -crop 1200x800+0+0 crop-center.jpg
В таком варианте GraphicsMagick берет область 1200×800 из центра изображения. Это полезно для создания превью, обложек и карточек товара.
gm mogrify: пакетное изменение файлов
gm mogrify — мощная команда, но с ней нужно работать особенно внимательно. Ее ключевое отличие от gm convert: mogrify изменяет файлы на месте и может перезаписать оригиналы. Это удобно в пакетной обработке, но опасно, если запустить команду в папке с единственными копиями фотографий.
Пример массового изменения размера всех JPEG в текущей папке:
gm mogrify -resize 1600x1600 *.jpg
После выполнения этой команды все файлы .jpg будут изменены. Оригинальный размер будет потерян. Поэтому правильный рабочий процесс выглядит так:
-
Создать копию папки.
-
Запустить
gm mogrifyтолько в копии. -
Проверить результат.
-
Только после этого заменять файлы в рабочем проекте.
Более безопасный вариант — менять формат и сохранять новые файлы:
gm mogrify -format webp *.png
В этом случае исходные PNG остаются, а рядом появляются WebP-файлы. Но если применить mogrify без -format, программа будет работать с исходниками напрямую.

На практике gm mogrify часто используют не через графическое окно, а в терминале. Но визуальная проверка результата через gm display полезна: можно открыть несколько обработанных файлов и убедиться, что размер, поворот, цвет и кадрирование соответствуют ожиданиям.
gm identify: анализ изображения
gm identify показывает свойства файла. Это одна из самых полезных команд GraphicsMagick, потому что она позволяет быстро понять, с каким изображением вы работаете.
Базовый пример:
gm identify photo.jpg
Типичный вывод содержит имя файла, формат, размер в пикселях, глубину цвета, цветовую модель и размер файла. Для подробного анализа используется -verbose:
gm identify -verbose photo.jpg
В подробном режиме можно увидеть:
-
формат файла;
-
MIME-тип;
-
геометрию изображения;
-
разрешение;
-
глубину цвета;
-
цветовое пространство;
-
тип сжатия;
-
наличие альфа-канала;
-
профили;
-
служебные свойства;
-
дату создания или изменения, если эти данные доступны;
-
EXIF-поля, если они присутствуют и поддерживаются сборкой.
gm identify удобно применять перед пакетной обработкой. Например, если в папке лежат изображения разных размеров, можно сначала посмотреть параметры нескольких файлов:
gm identify *.jpg
Для подробной проверки одного файла:
gm identify -verbose scan.tif
Если файл не открывается или имеет нестандартный профиль, identify часто быстрее показывает проблему, чем графический просмотрщик.
Конвертация форматов в GraphicsMagick
Конвертация изображений — одна из базовых задач GraphicsMagick. Программа определяет формат по расширению выходного файла или по явному префиксу формата.
TIFF в JPEG
gm convert document.tif document.jpg
Такую команду используют для сканов, архивных изображений и больших TIFF-файлов, которые нужно подготовить для просмотра в браузере или отправки по почте. Если TIFF многостраничный, поведение зависит от структуры файла и параметров команды. Для извлечения конкретной страницы можно использовать индекс в квадратных скобках:
gm convert document.tif[0] page-1.jpg
Индекс [0] означает первую страницу. Для второй страницы используется [1].
PNG в JPEG
gm convert image.png image.jpg
При конвертации PNG в JPEG нужно помнить, что JPEG не поддерживает прозрачность. Если PNG содержит альфа-канал, прозрачные области будут преобразованы в фон. Для управления фоном можно явно задать цвет:
gm convert image.png -background white -flatten image.jpg
Здесь -background white задает белый фон, а -flatten объединяет изображение с этим фоном.
JPEG в PNG
gm convert photo.jpg photo.png
Такой вариант сохраняет изображение в PNG, но не делает его лучше. Если исходный JPEG уже был сжат с потерями, PNG лишь сохранит текущий вид без дальнейших потерь. Для фотографий PNG обычно получается тяжелее, чем JPEG или WebP.
PNG в WebP
gm convert banner.png banner.webp
WebP удобен для веб-публикации, но поддержка зависит от сборки GraphicsMagick. Если команда выдает ошибку, нужно проверить наличие поддержки WebP в gm version.
PDF в изображения
gm convert document.pdf page.jpg
Для PDF обычно требуется дополнительный обработчик. Если сборка GraphicsMagick не настроена для работы с PDF, команда не выполнится. В серверной среде это частая ситуация: PDF-конвертация зависит от внешних компонентов и политик безопасности.
Изменение размера изображений для сайта
GraphicsMagick хорошо подходит для подготовки изображений перед публикацией. Типичная задача: есть папка с фотографиями с камеры, например 4000×3000 или 6000×4000 пикселей, а для статьи на сайте нужны изображения шириной 1200–1600 пикселей.
Безопасный способ через отдельную папку:
mkdir resizedfor file in *.jpg; do gm convert "$file" -resize 1600x1600 -strip "resized/$file"done
Эта команда проходит по всем JPEG-файлам в текущей папке, уменьшает каждое изображение до границ 1600×1600, удаляет лишние профили и сохраняет результат в папку resized.
Разбор команды:
-
mkdir resizedсоздает папку для готовых файлов; -
for file in *.jpg; doзапускает цикл по всем JPEG; -
gm convert "$file"открывает очередной файл; -
-resize 1600x1600уменьшает изображение с сохранением пропорций; -
-stripудаляет лишние служебные данные; -
"resized/$file"сохраняет результат в отдельную папку; -
doneзавершает цикл.
Для Windows PowerShell аналогичная логика выглядит так:
mkdir resizedGet-ChildItem *.jpg | ForEach-Object { gm convert $_.Name -resize 1600x1600 -strip ("resized" + $_.Name)}
Для сайта такой процесс полезен сразу по нескольким причинам. Во-первых, уменьшается вес изображений. Во-вторых, ширина становится предсказуемой. В-третьих, из файлов удаляются лишние метаданные. В-четвертых, оригиналы остаются нетронутыми.
Создание миниатюр
Миниатюры можно создавать через gm convert или gm mogrify. Для одного файла:
gm convert photo.jpg -resize 300x300 thumbnail.jpg
Для папки с сохранением результата в отдельную директорию:
mkdir thumbsfor file in *.jpg; do gm convert "$file" -resize 300x300 "thumbs/$file"done
Если нужны квадратные миниатюры одинакового размера, простого -resize недостаточно, потому что изображения разных пропорций дадут разные размеры. Тогда используется комбинация изменения размера и кадрирования:
gm convert photo.jpg -resize 300x300^ -gravity center -crop 300x300+0+0 thumb.jpg
В этой команде:
-
-resize 300x300^масштабирует изображение так, чтобы оно полностью перекрывало квадрат 300×300; -
-gravity centerвыбирает центр; -
-crop 300x300+0+0обрезает итоговый квадрат.
Такой прием удобен для карточек товаров, аватаров, превью галерей и однотипных изображений в каталоге.
Создание монтажного листа через gm montage
gm montage собирает несколько изображений в один файл. Это удобно для контактных листов, превью коллекции, визуальной проверки серии изображений и подготовки обзорных картинок.
Пример:
gm montage *.jpg -geometry 200x200+10+10 thumbnails.jpg
Здесь:
-
*.jpg— все JPEG в текущей папке; -
-geometry 200x200+10+10— размер миниатюры и отступы; -
thumbnails.jpg— итоговый файл.
Если нужно задать количество колонок и строк, используется -tile:
gm montage *.jpg -geometry 180x180+8+8 -tile 5x contact-sheet.jpg
Команда создаст монтажный лист с пятью колонками. Количество строк будет рассчитано по числу файлов.
Для подписей можно использовать -label:
gm montage *.jpg -label "%f" -geometry 180x180+8+8 -tile 4x sheet.jpg
%f подставляет имя файла. Такой лист удобно использовать при отборе изображений: видно не только превью, но и название каждого файла.
Наложение изображений через gm composite
gm composite используется для наложения одного изображения на другое. Это может быть логотип, водяной знак, рамка, плашка, декоративный элемент или маска.
Пример наложения логотипа в правый нижний угол:
gm composite -gravity southeast logo.png photo.jpg result.jpg
Здесь:
-
logo.png— изображение, которое накладывается; -
photo.jpg— базовая фотография; -
result.jpg— итоговый файл; -
-gravity southeast— позиция в правом нижнем углу.
Если нужно добавить отступ, используется -geometry:
gm composite -gravity southeast -geometry +20+20 logo.png photo.jpg result.jpg
Команда поместит логотип в правый нижний угол с отступом 20 пикселей от края.
Для полупрозрачного водяного знака лучше заранее подготовить PNG с альфа-каналом. Тогда GraphicsMagick корректно наложит его поверх изображения. Если прозрачность нужно регулировать в самой команде, процесс становится сложнее и может потребовать дополнительных операций через gm convert.
Добавление текста на изображение
GraphicsMagick умеет добавлять текст через параметры -font, -pointsize, -fill, -draw и -annotate. Простой пример:
gm convert photo.jpg -font Arial -pointsize 36 -fill white -draw "text 40,60 'Sample Text'" result.jpg
Здесь текст Sample Text будет добавлен в координате X=40, Y=60. Цвет задается параметром -fill white, размер — -pointsize 36.
Более удобный вариант для подписи в определенной зоне:
gm convert photo.jpg -gravity south -pointsize 32 -fill white -annotate +0+30 "© Site Name" result.jpg
Эта команда ставит подпись снизу по центру с отступом 30 пикселей. Параметр -gravity south отвечает за нижнюю центральную область.
При работе с текстом важно учитывать шрифты. Если указанный шрифт не найден в системе, команда может завершиться ошибкой или использовать другой доступный шрифт. На сервере это частая причина различий между локальной машиной и продакшеном: команда та же, а набор шрифтов другой.
Сравнение изображений через gm compare
gm compare помогает найти различия между двумя изображениями. Это полезно при тестировании, проверке результатов обработки, поиске изменений после оптимизации или контроле качества.
Пример:
gm compare original.jpg processed.jpg difference.jpg
Команда сравнит original.jpg и processed.jpg, а результат различий запишет в difference.jpg.
Такой подход полезен в автоматических тестах. Например, если сайт генерирует превью, можно сравнить новое изображение с эталонным и быстро понять, изменилась ли логика обработки.
При сравнении нужно учитывать, что даже небольшое изменение JPEG-сжатия может дать отличия на пиксельном уровне. Поэтому для строгого контроля лучше использовать форматы без потерь или задавать допустимый порог различий.
Захват изображения через gm import
gm import используется для захвата изображения с экрана или отдельного окна в X11-среде. Это не универсальный скриншотер для всех современных рабочих столов, но в подходящей среде команда полезна.
Пример:
gm import screenshot.png
После запуска можно выбрать окно или область, которая будет сохранена в файл. Для серверов без графической оболочки эта команда обычно не нужна, но на Linux-рабочих станциях с X11 она может быть полезной.
Работа с цветом и профилями
GraphicsMagick умеет работать с цветовыми пространствами и профилями, но здесь важно понимать границы инструмента. Программа хорошо подходит для массовых операций: перевести изображение в grayscale, убрать профили, проверить color space, применить профиль при конвертации. Но для профессиональной цветокоррекции с визуальным контролем чаще используют Photoshop, Affinity Photo, Capture One, Lightroom, Darktable или RawTherapee.
Перевод в оттенки серого:
gm convert photo.jpg -colorspace Gray photo-gray.jpg
Удаление профилей:
gm convert photo.jpg -strip photo-stripped.jpg
Проверка сведений о цвете:
gm identify -verbose photo.jpg
В подробном выводе нужно смотреть строки, связанные с Colorspace, Type, Depth, Profile. Если изображение предназначено для печати, слепое применение -strip может быть ошибкой: удаление ICC-профиля способно изменить предсказуемость цвета в дальнейшей обработке.
Оптимизация изображений
GraphicsMagick можно использовать для уменьшения веса файлов, но не стоит путать его с узкоспециализированными оптимизаторами вроде jpegoptim, mozjpeg, oxipng, pngquant или cwebp. GraphicsMagick хорош как универсальный обработчик: изменить размер, убрать лишние данные, конвертировать формат, подготовить файл. Для финального экстремального сжатия иногда имеет смысл добавлять отдельные инструменты.
Типовая команда для JPEG:
gm convert photo.jpg -resize 1600x1600 -strip -quality 85 photo-web.jpg
Здесь:
-
-resize 1600x1600уменьшает изображение; -
-stripудаляет лишние данные; -
-quality 85задает качество JPEG; -
photo-web.jpg— готовый файл для сайта.
Для PNG часто важнее уменьшить размеры изображения, чем просто пересохранить файл:
gm convert screenshot.png -resize 1200x1200 -strip screenshot-web.png
Если нужно получить WebP:
gm convert photo.jpg -quality 82 photo.webp
Но качество WebP и набор доступных параметров зависят от поддержки формата в установленной сборке.
Пакетная обработка: практический сценарий
Представим рабочую задачу: в папке лежат фотографии для статьи. Нужно подготовить веб-версии шириной до 1400 пикселей, удалить лишние метаданные, сохранить результат отдельно и не трогать оригиналы.
Команды:
mkdir webfor file in *.jpg; do gm convert "$file" -resize 1400x1400 -strip -quality 86 "web/$file"done
После выполнения нужно проверить несколько файлов:
gm identify web/*.jpg
Если размеры корректные, можно открыть один файл:
gm display web/photo.jpg
Или проверить подробности:
gm identify -verbose web/photo.jpg
Такой сценарий показывает главный смысл GraphicsMagick: один раз составить правильную команду и затем использовать ее как стандартный рабочий инструмент. Для веб-мастера, редактора каталога, администратора сайта или backend-разработчика это быстрее, чем каждый раз вручную открывать изображения в GUI-программе.
Работа с папками и именами файлов
GraphicsMagick получает имена файлов от командной оболочки. Поэтому надежность пакетной обработки зависит не только от самой программы, но и от того, как написана команда.
В Linux и macOS имена файлов лучше брать в кавычки:
gm convert "$file" -resize 1200x1200 "resized/$file"
Это защищает команду от пробелов в именах. Если написать без кавычек, файл my photo.jpg может быть воспринят как два разных аргумента.
Для сложной структуры папок можно использовать find:
find . -name "*.jpg" -print0 | while IFS= read -r -d '' file; do gm convert "$file" -resize 1200x1200 -strip "${file%.jpg}-web.jpg"done
Такая команда проходит по вложенным папкам и аккуратно обрабатывает имена с пробелами. Она сложнее, но надежнее для больших архивов.
В Windows PowerShell для похожих задач можно использовать Get-ChildItem:
Get-ChildItem -Recurse -Filter *.jpg | ForEach-Object { gm convert $_.FullName -resize 1200x1200 -strip ($_.DirectoryName + "" + $_.BaseName + "-web.jpg")}
Безопасная работа с gm mogrify
gm mogrify требует отдельного внимания. Новички часто воспринимают его как то же самое, что convert, только для многих файлов, но это не совсем так. Команда действительно удобна для массовых операций, но по умолчанию она меняет исходные файлы.
Опасная команда:
gm mogrify -resize 1200x1200 *.jpg
Она уменьшит все JPEG в текущей папке и перезапишет их.
Безопаснее сначала создать копии:
mkdir backupcp *.jpg backup/gm mogrify -resize 1200x1200 *.jpg
Еще лучше — работать в отдельной папке:
mkdir workcp *.jpg work/cd workgm mogrify -resize 1200x1200 *.jpg
Если нужно не перезаписывать JPEG, а создать файлы другого формата:
gm mogrify -format webp *.jpg
В этом случае рядом появятся WebP-файлы. Но даже здесь стоит сначала протестировать команду на небольшой выборке.
Использование GraphicsMagick на сервере
GraphicsMagick часто используют на сервере для обработки загруженных изображений. Типовой сценарий выглядит так:
-
Пользователь загружает изображение на сайт.
-
Backend сохраняет оригинал.
-
GraphicsMagick создает несколько версий: большую, среднюю, миниатюру.
-
Из файлов удаляются лишние метаданные.
-
Результаты сохраняются в нужные папки или отправляются в объектное хранилище.
Пример логики:
gm convert upload.jpg -resize 1600x1600 -strip large.jpggm convert upload.jpg -resize 800x800 -strip medium.jpggm convert upload.jpg -resize 300x300^ -gravity center -crop 300x300+0+0 -strip thumb.jpg
Такой набор команд можно вызвать из PHP, Python, Node.js, Ruby или другого backend-кода. При этом важно проверять входные файлы: нельзя слепо доверять расширению. Файл с именем photo.jpg может оказаться не JPEG или быть поврежденным. Поэтому перед обработкой полезно запускать gm identify и ограничивать размер исходников.
GraphicsMagick также подходит для cron-задач: например, раз в час проходить по папке новых изображений, создавать превью и переносить готовые файлы в рабочую директорию.
Программные API и интеграция
GraphicsMagick — это не только набор утилит. Проект также предоставляет API и привязки для разных языков. На практике многие разработчики используют программу двумя способами.
Первый способ — прямой вызов командной строки. Он прост, прозрачен и легко отлаживается:
gm convert input.jpg -resize 1200x1200 output.jpg
Backend вызывает эту команду как внешний процесс, проверяет код завершения и забирает результат.
Второй способ — использование обертки или библиотеки для конкретного языка. Например, в Node.js долгое время был популярен пакет gm, который умеет работать как с GraphicsMagick, так и с ImageMagick. В PHP встречаются обертки, которые вызывают gm через shell или используют расширения. В Python обычно проще вызвать команду через subprocess, если не требуется глубокая интеграция.
Преимущество прямого вызова в том, что команда легко переносится в терминал для проверки. Недостаток — нужно аккуратно экранировать имена файлов и не передавать пользовательский ввод в shell без фильтрации.
Производительность и большие изображения
GraphicsMagick ценят за стабильную работу в пакетных задачах и обработке больших файлов. Он хорошо подходит для серверной обработки изображений, где важны скорость, предсказуемость и отсутствие ручных действий.
В реальной работе производительность зависит от нескольких факторов:
-
формата исходного файла;
-
размера изображения в пикселях;
-
глубины цвета;
-
наличия альфа-канала;
-
используемого фильтра масштабирования;
-
доступной оперативной памяти;
-
поддержки нужных библиотек;
-
параметров сборки;
-
числа потоков и поддержки OpenMP;
-
скорости диска.
Простое уменьшение JPEG обычно выполняется быстро. Обработка больших TIFF, PDF, HEIC или многослойных файлов может быть значительно тяжелее. Если изображения огромные, лучше тестировать команды на нескольких файлах и следить за потреблением памяти.
Для массовых задач полезно ограничивать параллелизм. Если одновременно запустить десятки процессов gm convert на больших изображениях, сервер может упереться в память и начать активно использовать swap. Часто лучше обрабатывать файлы очередью или запускать несколько процессов параллельно, но не перегружать систему.
Типовые ошибки при работе с GraphicsMagick
Команда gm не найдена
Ошибка вида gm: command not found означает, что система не видит исполняемый файл. На Windows нужно проверить PATH, на Linux — установку пакета, на macOS — корректность установки через пакетный менеджер.
Проверка:
which gmgm version
В Windows:
where gmgm version
Формат не поддерживается
Если GraphicsMagick не открывает WebP, HEIC, PDF или другой формат, причина часто не в синтаксисе команды, а в сборке без нужной библиотеки. Нужно проверить gm version и список делегатов.
Mogrify перезаписал оригиналы
Это не ошибка программы, а нормальное поведение gm mogrify. Поэтому перед использованием этой команды нужно работать с копиями.
Неправильные кавычки в команде
В Windows, Bash и PowerShell правила кавычек отличаются. Команда, работающая в Bash, не всегда без изменений работает в PowerShell. Особенно это заметно в параметрах -draw, где внутри строки есть текст, пробелы и кавычки.
Прозрачность пропала после конвертации PNG в JPEG
JPEG не поддерживает альфа-канал. Перед сохранением нужно задать фон:
gm convert image.png -background white -flatten image.jpg
Результат получился не того размера
Параметр -resize 1200x1200 сохраняет пропорции. Если нужен точный размер, нужно использовать !, ^ и -crop, понимая разницу между растягиванием и кадрированием.
Сильные стороны GraphicsMagick
GraphicsMagick удобен прежде всего как рабочий инструмент для автоматизации. Его сильные стороны особенно заметны не при разовой обработке одного изображения, а при повторяемых задачах.
Главное преимущество — единая команда gm. Все основные операции находятся под одним исполняемым файлом, а команды легко документировать. Например, в проекте можно записать стандарт обработки изображений:
gm convert input.jpg -resize 1600x1600 -strip -quality 86 output.jpg
И любой участник команды сможет повторить тот же результат.
Второе преимущество — пакетная обработка. GraphicsMagick легко встраивается в Bash, PowerShell, Makefile, CI/CD, cron и backend-процессы. Там, где графический редактор требует ручной работы, GraphicsMagick выполняет задачу автоматически.
Третье преимущество — широкая работа с форматами. Программа полезна как универсальный конвертер изображений, особенно если нужно обрабатывать JPEG, PNG, TIFF, GIF, WebP, PDF и другие форматы в одном рабочем процессе.
Четвертое преимущество — пригодность для серверов. GraphicsMagick не требует полноценного графического интерфейса для основных операций. Его можно запускать на Linux-сервере, в контейнере, в скрипте, в очереди задач.
Пятое преимущество — прозрачность результата. Команда видна целиком. Ее можно сохранить, передать другому человеку, вставить в документацию, повторить через год и получить тот же тип обработки.
Недостатки GraphicsMagick
GraphicsMagick не универсален для всех пользователей. Его главный недостаток — высокий порог входа. Человеку, который привык к кнопкам Open, Resize, Save As, командный синтаксис может показаться сложным.
Второй недостаток — слабая визуальная интерактивность. gm display существует, но это не современный графический редактор. В нем нельзя комфортно ретушировать портреты, работать со слоями, масками, корректирующими слоями, локальными кистями и сложной цветокоррекцией.
Третий недостаток — риск ошибок при пакетной обработке. Одна неправильная команда gm mogrify может перезаписать много файлов. Поэтому GraphicsMagick требует дисциплины: резервные копии, тестовые папки, проверка результата.
Четвертый недостаток — зависимость от сборки. Поддержка HEIC, WebP, PDF, JPEG 2000 и некоторых других форматов зависит от того, какие библиотеки были подключены при сборке.
Пятый недостаток — сложность синтаксиса в продвинутых задачах. Простое изменение размера понятно быстро, но операции с масками, прозрачностью, профилями, текстом и сложным кадрированием требуют внимательного чтения документации и тестирования.
Сравнение с аналогами
GraphicsMagick ближе всего к ImageMagick, но в реальных рабочих задачах его часто сравнивают и с графическими пакетными конвертерами, и с серверными инструментами обработки изображений.
| Программа | Где сильнее | Где слабее относительно GraphicsMagick |
|---|---|---|
| ImageMagick | Очень широкая известность, огромная база примеров, активная экосистема, много современных инструкций | Синтаксис и поведение менялись заметнее; GraphicsMagick часто выбирают за консервативный и стабильный CLI-подход |
| XnConvert | Удобный графический интерфейс, понятные шаги пакетной обработки, комфортен для пользователей без терминала | Менее удобен для серверных скриптов, cron-задач и backend-автоматизации |
| FastStone Photo Resizer | Хорош для Windows-пользователей, быстро решает задачи изменения размера, переименования и пакетной конвертации через GUI | Не так удобен для Linux-сервера и повторяемых сценариев в командной строке |
| IrfanView | Легкий просмотрщик и редактор для Windows, есть пакетная обработка, много плагинов | Основной сценарий все-таки настольный; GraphicsMagick лучше подходит для автоматизированных пайплайнов |
| NConvert | Сильный консольный конвертер от разработчиков XnView, удобен для пакетных операций | У GraphicsMagick шире набор операций, связанных с ImageMagick-подобной обработкой, композитингом и монтажом |
| FFmpeg | Лучший выбор для видео, извлечения кадров, потоков, кодирования роликов и GIF из видео | Для статичных изображений синтаксис GraphicsMagick обычно прямее и удобнее |
| libvips | Очень силен в производительности и обработке больших изображений, популярен в серверных сценариях | Для пользователя, привыкшего к ImageMagick-подобным командам, GraphicsMagick понятнее и привычнее |
| GIMP | Полноценное визуальное редактирование, слои, кисти, маски, ручная ретушь | Для пакетной серверной обработки без GUI GraphicsMagick практичнее |
| Photoshop | Профессиональная ретушь, цветокоррекция, дизайн, слои, экосистема | Не заменяет легкую командную обработку на сервере и массовые CLI-сценарии |
GraphicsMagick стоит выбирать не потому, что он лучше всех в любой ситуации, а потому что он точно попадает в свой сценарий: консольная обработка изображений, автоматизация, пакетная конвертация, подготовка файлов для сайтов и интеграция в программные процессы.
Если нужен удобный интерфейс с галочками и предпросмотром — XnConvert или FastStone Photo Resizer будут проще. Если нужна профессиональная ретушь — лучше открыть GIMP, Photoshop или Affinity Photo. Если нужно обработать тысячи изображений на сервере по заранее заданному правилу — GraphicsMagick выглядит намного логичнее.
Для кого подходит GraphicsMagick
GraphicsMagick хорошо подходит веб-разработчикам. С его помощью можно автоматически создавать превью, уменьшать изображения после загрузки, удалять лишние данные, формировать несколько размеров для адаптивной верстки.
Программа полезна администраторам сайтов. Если на сайте регулярно появляются большие изображения, можно настроить стандартную обработку: привести к нужной ширине, создать миниатюру, удалить профили, сохранить WebP-копию.
GraphicsMagick подходит backend-разработчикам. Команды легко вызывать из серверного кода, а результат обработки можно контролировать через код завершения процесса и проверку выходного файла.
Инструмент полезен редакторам каталогов. Если нужно подготовить изображения товаров, привести их к единому размеру, сделать квадратные превью, добавить подписи или собрать контактные листы, GraphicsMagick справляется без ручной обработки каждого файла.
Также программа подходит пользователям Linux и macOS, которые уверенно работают в терминале. Для них GraphicsMagick становится естественным инструментом: команда, параметры, результат.
Кому лучше выбрать другую программу
GraphicsMagick не лучший выбор для человека, который хочет открыть фотографию, подвигать ползунки, нарисовать кистью, стереть объект, заменить фон или отретушировать кожу. Для таких задач лучше подходят визуальные редакторы.
Для ручной ретуши лучше использовать:
Для простой пакетной обработки через графический интерфейс лучше подойдут:
-
XnConvert;
-
FastStone Photo Resizer;
-
IrfanView;
-
XnView MP.
Для видео и извлечения кадров лучше выбрать FFmpeg. GraphicsMagick может работать с GIF-анимацией и последовательностями изображений, но не является видеоредактором и не заменяет специализированный мультимедийный инструмент.
Практические советы перед началом работы
Перед работой с GraphicsMagick стоит принять несколько правил.
Всегда храните оригиналы отдельно. Особенно если используете gm mogrify. Эта команда может перезаписать файлы, и отменить результат будет невозможно без резервной копии.
Сначала тестируйте команду на двух-трех изображениях. Если результат правильный, запускайте обработку на всей папке.
Проверяйте параметры файлов через gm identify. Это быстро показывает, что получилось после обработки: размер, формат, глубина цвета, цветовое пространство.
Используйте отдельные папки для результата. Например:
mkdir outputgm convert input.jpg -resize 1200x1200 output/input.jpg
Сохраняйте удачные команды. Если вы подобрали рабочий вариант для сайта, не держите его в памяти. Запишите команду в README, Makefile, shell-скрипт или документацию проекта.
Не используйте -strip бездумно для печатных файлов. Для веба это часто полезно, но для полиграфии профиль может быть важен.
Проверяйте поддержку форматов через gm version. Если команда для WebP или HEIC не работает, проблема может быть не в GraphicsMagick как программе, а в конкретной сборке.
Пример полного рабочего процесса
Допустим, нужно подготовить изображения для статьи. Исходные файлы лежат в папке originals, итоговые должны попасть в web, ширина — не больше 1400 пикселей, качество JPEG — 86, метаданные нужно удалить.
Команды:
cd originalsmkdir ../webfor file in *.jpg; do gm convert "$file" -resize 1400x1400 -strip -quality 86 "../web/$file"done
Проверка:
gm identify ../web/*.jpg
Создание монтажного листа для контроля:
cd ../webgm montage *.jpg -geometry 180x180+8+8 -tile 5x contact-sheet.jpg
Теперь в папке web лежат готовые изображения и файл contact-sheet.jpg, по которому можно быстро проверить всю подборку.
Если нужно дополнительно создать WebP-копии:
for file in *.jpg; do gm convert "$file" -quality 82 "${file%.jpg}.webp"done
Такой процесс легко повторить для следующей статьи. В этом и заключается практическая ценность GraphicsMagick: обработка становится не ручной операцией, а воспроизводимым правилом.
Итоговая оценка GraphicsMagick
GraphicsMagick Image Processing System — сильная программа для тех, кому нужна не визуальная ретушь, а надежная обработка изображений через командную строку. Она хорошо подходит для конвертации форматов, пакетного изменения размера, создания миниатюр, удаления служебных данных, анализа файлов, монтажа превью и серверной автоматизации.
GraphicsMagick особенно полезен в рабочих процессах, где изображения нужно обрабатывать регулярно и одинаково: сайты, каталоги, архивы, backend-сервисы, скрипты публикации, подготовка графики для CMS. Команды gm convert, gm mogrify, gm identify, gm montage, gm composite и gm display закрывают большую часть прикладных задач без запуска тяжелого графического редактора.
Главное, что нужно понимать перед использованием: GraphicsMagick требует аккуратности. Он не прячет мощные операции за предупреждениями и диалоговыми окнами. Если команда написана правильно, программа быстро выполнит работу. Если команда написана неосторожно, особенно с mogrify, можно перезаписать исходники. Поэтому лучший подход — работать с копиями, проверять результат на небольшом наборе файлов и сохранять удачные команды для повторного использования.
GraphicsMagick не заменяет Photoshop, GIMP или Affinity Photo в художественной обработке. Зато он уверенно занимает свое место как быстрый, гибкий и предсказуемый инструмент для пакетной и серверной обработки изображений.