Комбінуйте кілька зображень за допомогою ImageMagick


166

Я хотів би об'єднати кілька зображень в одне зображення за допомогою ImageMagick. Щоб пояснити трохи краще, я хочу, щоб результат виглядав так:

Тобто у мене є ряд скріншотів, і я хочу перетворити їх на одне зображення з оригінальними зображеннями один на одного.

За допомогою Googling я натрапив на "складову" команду, але не знаю, чи в такому випадку, як використовувати її для отримання бажаного результату.



Відповіді:


256

Для будь-якої кількості вхідних файлів, названих :in-<something>.jpg

convert -append in-*.jpg out.jpg

Для того, щоб були додані конкретні файли або пропущено номери замість отримання повного "глобулу", ви можете чітко згадати вхідні файли та поставити appendкоманду після цього

перетворити в-1.jpg в-5.jpg в- N .jpg + додати вихід-в-1-плюс-в5-і-в N .jpg

Ви можете використовувати -append(замість +append) для вертикальної пасти.

Або:

montage -mode concatenate -tile 1x in-*.jpg out.jpg

також створить файл, out.jpgякий містить вертикальну конкатенацію вихідних зображень.

convert

Для простого конкатенації в одному рядку або стовпчику достатньо appendваріанту convertінструменту. Зауважте, що -appendоб'єднуючи всі зображення вертикально, створюючи один стовпчик із n рядками, а +appendконкатенуючи горизонтально, створюючи один рядок із n стовпцями.

(Див. ImageMagick: Параметри командного рядка .)

montage

Для отримання більш точного контролю над компонуванням нам знадобиться montageінструмент. montage -mode concatenateбуде склеювати вхідні зображення разом, як appendопція та -tile 1xконтролювати макет, який потрібно застосувати.

tileдотримується стовпців формату × рядків , але будь-яка сторона може бути відсутньою і montageвизначить, як відповідати обмеженням.

Ми використовуємо тут 1x(рівно один стовпець з будь-якою кількістю рядків), щоб отримати такий же ефект, як і -append. Без -tile 1xцього воно буде приєднуватися до зображень, як-от +append, за замовчуванням -tile x1(будь-яка кількість стовпців в одному ряду).

(Див. Приклади ImageMagick: Монтаж, масиви зображень .)


1
Дякую. додаток працює нормально, але я вважаю, що фотомонтаж порушений: якщо шрифти ghostscript не встановлені, він вийде, навіть якщо Ви не коментуєте зображення. Шрифти потрібно завантажувати на вимогу, а не заздалегідь.
Брем

@Bram: Я цього не знав і дуже погоджуюся. Чи знаєте ви, чи GraphicsMagick поводиться так само?
Peth

2
@MikeRobinson convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpgповинен зробити цю роботу.
gozzilli

2
Зауважте, що команда convert -tile 2x2etc. буде читати файли в алфавітному порядку . Це означає, що фрагменти з назвою 0-10будуть читатися як 0,10,1,2,..,9. Мені знадобилося майже 2 години, щоб зрозуміти щось це основне.
Blauhirn

1
@Blauhirn: Це перетворення сортування імен файлів, чи це лише ваш глобальний файл, що повертає файли в такому порядку? наприклад ls *, поверне ці значення в тому порядку.
naught101
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.