ImageMagick: Как объединить несколько изображений из нескольких каталогов с помощью Montage с разными аргументами?

У меня есть несколько изображений, распределенных по разным каталогам.

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

Вот простой пример:

cd /home/archy && montage figure1/*.png -tile 2x -geometry +1+1 figure1.png

cd /home/archy && montage figure2/*.png -tile 1x -geometry +1+1 figure2.png

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

cd /home/archy && montage *.png -tile 1x -geometry +1+1 total.png

В реальной ситуации мне нужно создать большое количество временных изображений, чтобы создать только финальное. Было бы здорово избежать этого обходного пути, чтобы сэкономить время на исчисление и хранение системы.

Можно ли объединить эти три команды в одну уникальную? Спасибо

1 ответ

Решение

Мне не очень понятно, где находятся все ваши файлы, но я думаю, что смогу вам помочь. Вместо записи в файл на диске вы можете сделать любую команду ImageMagick записать в поток MIFF ("Magick Image File Format"), который сохранит всю информацию, которую вы могли бы записать в файл.

Таким образом, вы можете сделать это без записи на диск:

montage SOMESTUFF SOMEHOW miff:- | convert miff:- OTHERSTUFF result.png

В вашем конкретном случае, я думаю, вы хотите:

cd /home/archy
{ 
   montage figure1/*.png -tile 2x -geometry +1+1 miff:- 
   montage figure2/*.png -tile 1x -geometry +1+1 miff:-
} | montage miff:- -tile 1x -geometry +1+1 result.png

Итак, вы запускаете свой первый montage так же, как это было когда-либо и писать это, а затем результат вашего второго montage в одном сложном утверждении, в третьем montage Команда, которая получает первые два montage выводит и монтирует их в конечный результат!!!

Я знаю, что имею в виду, даже если никто не знает!

Кстати, если вы хотите запустить его как однострочник, вам понадобится дополнительная точка с запятой перед закрывающей скобкой и всегда пробел с обеих сторон обеих скобок:

{ montage figure1/*.png -tile 2x -geometry +1+1 miff:- ; montage figure2/*.png -tile 1x -geometry +1+1 miff:- ; } | montage miff:- -tile 1x -geometry +1+1 result.png
Другие вопросы по тегам