zaLinux.ru

Как наложить одно изображение на другое в командной строке Linux (компоновка изображений)


Утилита magick является частью пакета ImageMagick. Подробности по установке ImageMagick, в том числе какие зависимости необходимо установить для поддержки максимального количества форматов, а также описание структуры команды, примеры использования и всех опций смотрите в статье: Руководство по ImageMagick: установка, использование и решение проблем.

Рассмотрим как сделать наложение картинки на картинку.

Команда наложения одного изображения на другое состоит из трёх основных частей:

  1. Имя начального изображения, которое будет выполнять роль фона.
  2. Имя второго изображения, которое будет наложено на первое. Опции Геометрии, а также опция -composite. Данный пункт может быть повторён множество раз, для наложения нескольких изображений на одно.
  3. Имя выходного файла.

В следующем примере на изображение IMAGE.jpg будет наложено изображение IMAGE1.jpg, ширина которого будет равна 400 пикселям, это изображение будет отодвинуто от левого края на 50 пикселей и от верха на 10 пикселей, новое изображение будет сохранено в файл test27.jpg:

magick IMAGE.jpg IMAGE1.jpg -geometry 400x300+50+10 -composite test27.jpg

Обратите внимание, что наложенное изображение будет иметь ширину 400 пикселей, а высота будет подобрана автоматически для сохранения исходных пропорций картинки, подробности смотрите в разделе Геометрия изображений.

Если вы хотите разместить изображение по центру, в одном из углов или на середине одной из сторон, то вместо указания смещения вы можете использовать опцию -gravity.

С помощью параметра -gravity вы можете изменить начало координат, например:

magick IMAGE.jpg IMAGE1.jpg -gravity North -geometry 400x300+0+0 -composite test27.jpg
magick IMAGE.jpg IMAGE1.jpg -gravity South -geometry 400x300+0+0 -composite test27.jpg
magick IMAGE.jpg IMAGE1.jpg -gravity SouthWest -geometry 400x300+0+0 -composite test27.jpg

Подробности смотрите в разделе Опция -gravity определяет начало координат для Сдвига

Аналогичная команда, в которой на изображение IMAGE.jpg наложены картинки с IMAGE1.jpg по IMAGE6.jpg:

magick IMAGE.jpg IMAGE1.jpg -geometry 400x300+50+10 -composite IMAGE2.jpg -geometry 330x230+225+210 -composite IMAGE3.jpg -geometry 350x300+475+260 -composite IMAGE4.jpg -geometry 400x300+25+410 -composite IMAGE5.jpg -geometry 400x300+625+10 -composite IMAGE6.jpg -geometry 350x300+600+450 -composite test28.jpg

Обратите внимание, что опция -composite применяется после каждого изображения!

Чтобы лучше понять логику, к предыдущей команде добавлены скобки, которые объединяют изображение и его настройки, по своему результату эта команда не отличается от предыдущей:

magick IMAGE.jpg \( IMAGE1.jpg -geometry 400x300+50+10 \) -composite \( IMAGE2.jpg -geometry 330x230+225+210 \) -composite \( IMAGE3.jpg -geometry 350x300+475+260 \) -composite \( IMAGE4.jpg -geometry 400x300+25+410 \) -composite \( IMAGE5.jpg -geometry 400x300+625+10 \) -composite \( IMAGE6.jpg -geometry 350x300+600+450 \) -composite b.jpg

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


magick IMAGE.jpg IMAGE1.jpg -geometry 400x+50+10 -composite IMAGE2.jpg -geometry 330x+225+210 -composite IMAGE3.jpg -geometry 350x+475+260 -composite IMAGE4.jpg -geometry 400x+25+410 -composite IMAGE5.jpg -geometry 400x+625+10 -composite IMAGE6.jpg -geometry 350x+600+450 -composite b.jpg

В качестве фона вместо фотографии можно указать цвет фона, для этого используйте набор опций -size РАЗМЕР canvas:ЦВЕТ. К примеру, в следующей команде изображения накладываются на фон красного цвета размером 1000×750:

magick -size 1000x750 canvas:red IMAGE1.jpg -geometry 400x300+50+10 -composite IMAGE2.jpg -geometry 330x230+225+210 -composite IMAGE3.jpg -geometry 350x300+475+260 -composite IMAGE4.jpg -geometry 400x300+25+410 -composite IMAGE5.jpg -geometry 400x300+625+10 -composite IMAGE6.jpg -geometry 350x300+600+450 -composite test29.jpg

Как объединить фотографии без наложения

Опция -append соединяет текущие изображения по вертикали или по горизонтали c +append.

Этот параметр создаёт одно более длинное изображение путём объединения всех текущих изображений в последовательности сверху вниз.

magick IMAGE.jpg IMAGE1.jpg -append test31.jpg

Используйте +append, чтобы складывать изображения слева направо.


magick IMAGE.jpg IMAGE1.jpg +append test31.jpg

Если они имеют разную ширину, более узкие изображения дополняются текущей настройкой цвета фона, а их положение относительно друг друга может контролироваться текущей настройкой -gravity.

Цвет фона можно задать с помощью опции -background ЦВЕТ. Например:

magick IMAGE.jpg -background Violet IMAGE1.jpg -append test30.jpg

Вы также можете использовать опцию -scale для привидения изображений к одинаковому размеру:

magick IMAGE.jpg -scale 1000 IMAGE1.jpg -scale 1000 -append test30.jpg

Предыдущая команда приведёт оба изображения к ширине 1000 пикселей и расположит их друг над другом.

Аналогичная команда, но она вместо расположения изображений друг над другом поместит их слева направо (по горизонтали):

magick IMAGE.jpg -scale 1000 IMAGE1.jpg -scale 1000 +append test30.jpg

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

Опция -smush СМЕЩЕНИЕ добавляет последовательность изображений вместе, игнорируя прозрачность.

-smush — это более гибкая версия -append, соединяющая изображения в последовательности сверху вниз (-smush) или слева направо (+smush) с промежутком между изображениями в соответствии с указанным смещением.

Если смещение отрицательное, изображения будут перекрываться на эту величину.


-smush уважает -gravity. Любое пустое пространство будет заполнено фоновым цветом.

Для изображений с нулевым смещением и прозрачных изображений непрозрачные части двух изображений будут максимально близко выровнены без перекрытия.

Пример команды с опцией -smush (приводит изображения к одинаковой ширине 1000 пикселей и помещает их друг над другом, разделив пространством в 100 пикселей):

magick IMAGE.jpg -scale 1000 -background Violet IMAGE1.jpg -scale 1000 -smush 100 test31.jpg


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *