ImageMagick: Как объединить несколько изображений из нескольких каталогов с помощью Montage с разными аргументами? - PullRequest
0 голосов
/ 27 февраля 2019

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

Каждая папка имеет разное количество заголовков и боковых панелей.По этой причине обходным путем является выполнение функции 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 Ответ

0 голосов
/ 28 февраля 2019

Мне не очень понятно, где находятся все ваши файлы, но я думаю, что смогу вам помочь.Вместо записи в файл на диске вы можете выполнить любую команду 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
...