Это старая версия документа.
Содержание
ImageMagick - это кроссплатформенный консольный редактор изображений, а точнее набор консольных программ. Конечно же, большинство манипуляций с изображениями позволяют сделать такие графические редакторы как GIMP и Photoshop, но если требуется повторение заданных преобразований множество раз - то ImageMagick подходит как нельзя лучше. На данный момент в статье рассмотрена работа с утилитами convert, montage, identify и composite.
Использование convert
convert <input_image> <commands> <out_image>
convert ubuntu_logo.png -resize 100% ubuntu_out_logo.jpg
В качестве основных изображений возьмем лого Ubuntu и тукса:
Опция | Пример | Описание |
---|
-resize <MMMxNNN> | -resize 500×200 | Изменяем размер изображения в пикселях, с сохранением соотношения сторон |
-resize 500 | Сжатие до 500 пикс. по ширине, с пропорциональным сжатием высоты | |
-resize x500 | Сжатие до 500 пикс. по высоте, с пропорциональным сжатием ширины |
-resize <MMMxNNN!> | -resize 100×50! | Изменяем размер изображения в пикселях, без сохранения соотношения сторон |
-resize <@PPP> | -resize @100 | Задаем количество пикселей в изображении. * из изображения 100х100 пикселей, при -resize @100, получим изображение 10х10 пикселей. 10*10 = 100 пикселей |
-resize <MMM%> | -resize 33% | Изменяем размер изображения в процентах |
-scale <МММ%> | -scale 33% | Масштабируем. Тоже что и -resize <MMM%> но более быстро, и с худшим качеством |
-gravity <type> | -gravity Center | Задаем положение относительно сцены (примеры ниже). North, West, Center, East, South… *полный список можно получить командой convert -list gravity |
добавить пример для -crop 100×100
-crop <geometry> | -crop 100×100+0+0 | Обрезаем изображение. * заметьте, что -crop 100×100 не обрежет изображение до 100 на 100 пикселей относительно верхнего левого угла, а нарежет все изображение на кусочки заданного размера. Если у нас было изображение 1000х1000пикс, то мы получим 100 кусочков 100×100. |
Примеры:
convert ubuntu_logo.png -gravity Center -crop 100x100+0 out.png
convert ubuntu_logo.png -gravity NorthWest -crop 100x100+0 out.png
-rotate <degrees> | -rotate +90 | Вращаем изображение |
* при повороте на градус кратный 90 - изображение будет просто менять ориентацию. А вот при повороте, скажем, на 45 градусов, выйдет что то такое (для контраста, фон сделан черным):
Как видите, разрешение изображения увеличилось. Стандартный фон будет белым, но его можно изменить командой -background, в данном случае -background black.
-flip | Отражаем по вертикали |
-flop | Отражаем по горизонтали |
-blur radius | -blur 10 | Применяем Гауссово размытие |
+append | +append logo_gray.png logo.png logo.png logo_out.png | Объединяем горизонтально. Справа-налево |
-append | -append logo_gray.png logo.png logo.png logo_out.png | Объединяем вертикально. Сверху-вниз |
-negate | Инвертируем цвета изображения |
-colorspace <value> | -colorspace Gray | Переводим изображения в другие цветовые пространства. Полный список |
-depth <value> | -depth 8 | Изменяем разрядности изображения |
-quality <value> | -quality 80 | Задаем качество выходного изображения (92 - стандартно для jpg, 75 - для png) |
Использование montage
montage <input_image> <commands> <out_image>
Примеры:
montage *.png -auto-orient -thumbnail 200x200 -bordercolor Lavender -background black +polaroid -resize 30% -gravity center -background none -extent 80x80 -background white -geometry -10+2 -tile x1 out.png
montage logo.png logo.png logo.png logo.png logo.png logo.png -geometry 100x100+1+1 -background black out.png
Использование identify
- Получение информации о изображении:
identify <commands> <image>
- Короткая информация о изображении:
identify ubuntu_logo.png
- Полная информация о изображении:
identify -verbose ubuntu_logo.png
Использование composite
Утилита composite накладывает одно изображение на другое следуя заданным параметрам.
composite <commands> <input_image> <out_image>
Для примера создадим изображение с прозрачным фоном и высотой 45 пикселей:
convert -background transparent -pointsize 45 label:'Ubuntu' ubuntu.png
Наложим его на уже имеющиеся изображение:
composite -gravity south ubuntu.png ubuntu_logo.png main.png
Примеры
- Конвертирование всех *.png изображений в *.jpg, и переименование их по шаблону:
convert *.png new%03d.jpg
получим изображения с именами, вида: new000.jpg new001.jpg new002.jpg и тд.
- Ресайз(изменение размеров) всех *.png в папке, до размера 100 пикс. по ширине и с качеством равным 75%:
find . -iregex '.*.png' -exec convert '{}' -resize 100 -quality 75 png:'{}' \;
- Создание gif-анимации:
convert -delay 8 -size 400x400 *.png -loop 0 animation.gif
-delay | Количество смен изображений за секунду (по умолчанию 10 - 100мс) |
-loop | количество повторов (0 - неограниченно) |
нужна анимашка
- Отображение готового изображения без сохранения (опция show:):
convert logo.png -resize 100 -quality 75 show:out.jpg
- Скругление краев:
convert logo_negate.png \( +clone -alpha extract -draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \( +clone -flip \) -compose Multiply -composite \( +clone -flop \) -compose Multiply -composite \) -alpha off -compose CopyOpacity -composite rounded_corners.png
- Демотиватор :
convert logo.png \ -bordercolor black -border 3 -bordercolor white -border 2 \ \( -background black -fill white -pointsize 24 \ label:Ubuntu -trim +repage \ -bordercolor black -border 10 \ \) -gravity South -append \ -bordercolor black -border 10 -gravity South -chop 0x10 \ border_framework.png
- Добавление тени:
convert -page +4+4 thumbnail.gif -matte \ \( +clone -background black -shadow 60x4+4+4 \) +swap \ -background none -mosaic shadow_soft.png
- Просмотр списка всех шрифтов в системе:
convert -list font | grep Font