ImageMagick: консольный пакет для обработки изображений


Дата добавления: 04 февраля 2012



ImageMagick — свободный (лицензия Apache 2.0) кроссплатформенный пакет программ для пакетной обработки изображений. Проще говоря, ImageMagick особо полезно использовать при обработке множества изображений общими методами. Пакет поддерживает большинство графических форматов, также его можно использовать совместно с языками программирования, например, для написания скриптов обработки изображений, что очень полезно.
В этой статье описана лишь малая часть возможностей ImageMagick, т.к мы хотим лишь познакомить читателя с этим пакетом и дать базовые навыки работы, которые часто нужны в повседневной жизни.

Установка
ImageMagick доступен в репозиториях большинства дистрибутивов. Просто устанавливаем пакет imagemagick через пакетный менеджер.
Для Deb:
apt-get install imagemagick

Для RPM:
yum install imagemagick


Утилиты пакета ImageMagick
Как уже упоминалось, ImageMagick — это не одна программа, а пакет утилит.
В его в состав входят:
animate Создание анимации из группы изображений;
compare Показывает различия между двумя изображениями;
composite Используется для наложение одного изображения на другое;
conjure Выполняет скрипты, написанные на собственном языке "Magick Scripting Language";
convert Используется для различных манипуляций с изображениями;
display Вывод изображения на экран (понятно по названию);
identify Позволяет узнать свойства изображения такие как разрешение, размер и тип;
import Создаёт скриншот;
mogrify Используется аналогично convert, но записывает все изменения в этот же файл.
stream Позволяет получать части от изображения;

Практическое применение некоторых возможностей пакета
Опишем некоторые приёмы обработки изображений при помощи ImageMagick.
Создание анимации
animate -delay значение -loop 0 *

Эта команда создаёт из всех файлов в данной папке анимацию. После выполнения результат работы будет показан в окне. Чтобы сохранить анимацию, раскройте меню, нажав левой кнопкой мыши в области окна вывода анимации, затем выберете Animate > Save и укажите имя файла и выберите желаемый формат.
Значение после аргумента -delay задаёт паузы между кадрами сотых секундах. Например, -delay 100 означает секундную задержку перед показом очередного кадра анимации.
Значение аргумента -loop указывает на то, сколько раз нужно повторить сначала анимацию. Значение -loop 0 задаёт неограниченное количество циклов повторения.
Различия между двумя изображениями
compare изображение1 изображение2 имя_результирующего_изображения

Изображения должны быть одинакового разрешения. Результатом работы программы, грубо говоря, станет изображение, где будет выделены цветом пиксели, которые различны в двух заданных изображениях.
Наложение одного изображения на другое
composite изображение1 изображение2 имя_результирующего_изображения

Накладывает изображение1 на изображение2, результатом работы станет изображение имя_результирующего_изображения.
Вывод изображения на экран
display имя_изображения

Выводит указанное изображение на экран. При нажатии на изображение откроется меню ImageMagick, где можно проводить операции с изображением как в обычном графическом редакторе, так что ImageMagick поддерживает не только текстовый интерфейс.
Информация об изображении
identify изображение1 [изображение 2 ... ]

Позволяет узнать тип, разрешение, глубину цвета, размер и другие параметры указанных изображений.
Создание скриншота
import имя_результирующего_изображения

При вызове программы необходимо мышкой указать прямоугольную область экрана. Результат будет сохранён в имя_результирующего_изображения.
Изменение разрешения изображения
convert -resize ШИРИНАxВЫСОТА изображение изменённое_изображение

Явно задаёт новое разрешение. Пропорциональность сохраняется, даже если введённые значения непропорциональны изначальному разрешению.
convert -resize количество_% изображение изменённое_изображение

Изменения разрешения относительно старого разрешения.
Пример использования:
convert -resize 50% *.png resized.png

Уменьшает разрешение всех изображений с расширением png в папке в два раза. Изменённые изображения будут называться resized-порядковый_номер.
Кадрирование изображения
convert -crop ШИРИНАxВЫСОТА+0+0 изображение имя_результирующего_изображения

Вырезает прямоугольник размера ШИРИНАxВЫСОТА из изображения, начиная с крайнего левого угла. Чтобы сместить точку начала кадрирования нужно задавать координаты точки начала, например 100x100+50+50 — вырежет область размером 100x100 начиная с точки на изображения с координатами x=50 y=50 (эти координаты отсчитываются от крайнего левого угла).
Изменить глубину цвета
convert -depth значение_глубины изображение имя_результирующего_изображения

Склейка изображений в единое
convert * +append имя_результирующего_изображения

Из всех файлов в папке создаёт единое изображение, в котором содержаться все изображения из папки в ряд (опция +append означает добавить изображение в ряд с права).
Добавление цветной рамки вокруг изображения
convert -bordercolor имя_цвета -border размер_бордюра изображение имя_результирующего_изображения

Пример:
convert -bordercolor green -border 3x3

Поворот изображения
convert -rotate +/-градус изображение имя_результирующего_изображения

"+" указывает на направление по часовой стрелки, а "-" против часовой. ">" разрешает поворачивать только если ширина больше высоты, а "<" наоборот.
Пример:
convert -rotate +90

Комментарии:
Автор: sergbaks,   дата: 05 февраля 2012 ,  время: 04:12:12 (MSK).
Было-бы полезно показать на скриншотах результат отработки команд
Автор: solaris,   дата: 07 февраля 2012 ,  время: 12:03:17 (MSK).
Автор, добавьте, пожалуйста, скриншоты:)
Автор: Energy,   дата: 09 февраля 2012 ,  время: 05:33:39 (MSK).
В данном случае, не вижу ни какого смысла делать скриншоты. Из статьи и без того всё предельно понятно.
Автор: Subsanek,   дата: 11 февраля 2012 ,  время: 13:53:33 (MSK).
Я решил не делать скриншоты т.к думаю, что из описания очень легко самому представить как это будет работать.
Автор: Mihail,   дата: 08 августа 2013 ,  время: 00:51:14 (MSK).
По поводу скриншотов согласен с автором: можно очень просто проверить это самому.
Но вот что хотелось бы, так это полное описание команд программы convert; как с её помощью что-то нарисовать, написать, заливать область цветом и т.п.



 
🖊 Добавить комментарий:
Ваше имя: *
Комментарий: *
Введите число 87: *


Архив статей:
Ноябрь 2018
Октябрь 2018
Май 2017
Март 2017
Апрель 2016
Март 2016
Октябрь 2013
Сентябрь 2013
Май 2013
Март 2013
Ноябрь 2012
Июль 2012
Июнь 2012
Апрель 2012
Март 2012
Февраль 2012
Апрель 2011
Март 2011
Февраль 2011
Январь 2011
Декабрь 2010
Ноябрь 2010
Октябрь 2010
Сентябрь 2010
Август 2010
Июль 2010
Июнь 2010
Май 2010
Апрель 2010
Март 2010

Случайные:
"Оффлайновые обновления" — новая реализация установки системных обновлений в Fedora

Расчет MD5 и SHA1 сумм в linux

Узнаём текущую частоту процессора в Linux

Подключаемся к чату Gmail через Jabber

О серьёзном баге в WIndows версии плеера VLC

Подключаемся к Вконтакте через Jabber

https://cvclinic.ru/uslugi/lechenie-katarakty/

Коллеги:    все
 Linux для всех

Наши баннеры:
linuxnow.ru
linuxnow.ru
Установить баннер