2016-11-05 2 views
1

Мне нужна комбинированная команда, которая может выполнить следующую задачу в однократном выполнении. Я искал в Интернете, но вряд ли нашел какой-либо учебник, который поможет нам написать любую команду стека. Я нашел одну команду для каждой операции, такие как -composite, -blur и т.д., и я знаю, что могу труба команды как таковойПрактические сложные команды сложного кода Imagemagick

convert ... mpr:- | convert ... mpr:- | ... | convert ... png:- 

Однако, я хочу комбинированную команду, использовать \(... \) и mpr:{label}, поскольку это приведет к увеличению производительность, поскольку все операции выполняются в едином процессе (конвейер в оболочке может ухудшить производительность, и последовательность процессов должна быть в порядке).

enter image description here

Последовательность процесса как такового:

  1. поставил flower.png на верхней части frame.png ->mpr:framedFlower
  2. поставил mpr:framedFlower на верхней части background.png ->mpr:out2
  3. Пятно heart.png , правый градиент-прозрачный smiley.png и поместите оба изображения поверх mpr:out2 ->mpr:out3
  4. аннотировать mpr:out3 с «Hello World» (размещение = внизу) -> PNG: -

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

ответ

1

я не провел возрастов возиться с точными координатами, как я только использую примеры снимков, но это один вкладыш содержит каждую технику вы должны делать то, что вы просите.

Существует в основном одна строка кода на элемент в конечном изображении:

convert frame.png -resize 500x400\! \(flower.png -resize 400x300\! \) -gravity center -composite \ 
    background.png +swap -gravity northwest -geometry +100+150 -composite \ 
    \(heart.png -resize 200x200 -blur 0x8 \) -geometry +1200+250 -composite \ 
    -gravity south -pointsize 72 -fill red -annotate +0+60 'Hello world' \ 
    \(emoji.png -resize 250x250 -channel a -fx "u.a*(1-(i/w))" \) -gravity northwest -geometry +1200+500 -composite result.png 

enter image description here

Первая строка читает в рамку и цветок масштабируются и их каждый независимо друг от друга из-за скобки а затем компоновать цветок в рамку.

Следующая линия загружает фон, а затем использует +swap, чтобы поставить за в рамке из предыдущей строки. Затем он устанавливает -gravity на северо-запад в качестве источника для последующего -geometry, прежде чем компоновать обрамленное изображение на задний план.

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

Далее идет аннотация - единственная интересная вещь, что я поставил -geometry к south, что означает, что смещения в -annotate являются по отношению к центру в нижней части фона.

И наконец, я загружаю элемент эможи и изменяю его только в круглых скобках перед композицией по основному изображению. Единственное интересное, что я использую -fx для изменения альфа-канала (-channel a), и я умножаю существующую прозрачность (u.a) на долю обратного расстояния, которое мы находимся на изображении, а именно (1-(i/w)).

Надеюсь, что это довольно ясно!

Начало Изображения

enter image description here

enter image description here

enter image description here

enter image description here

+0

Спасибо, я попробовал его и он работает. Изначально я попытался преобразовать frame.png flower.png -composite -write mpr: a \ \ (background.png mpr: a -composite -write mpr: b \) \ \ (mpr: b heart.png -composite - пишите mpr: c \) .... png: -', и он продолжает терпеть неудачу. Из вашего ответа я просто понял, что мы можем «составное» изображение в стеке ** изображений ** вместо использования 'mpr: {label}'. Извините за мой поздний ответ, я потратил довольно много времени, чтобы перечитать эти учебники. Спасибо, спасибо, если я получу достаточную репутацию. –

Смежные вопросы