Frage Kombinieren Sie mehrere Bilder mit ImageMagick


Ich möchte mehrere Bilder mit ImageMagick zu einem Bild kombinieren. Um etwas besser zu erklären, möchte ich, dass das Ergebnis ähnlich aussieht:

Das heißt, ich habe eine Reihe von Screenshots, und ich möchte sie in ein Bild mit den ursprünglichen Bildern übereinander machen.

Durch das Googeln bin ich auf den 'Composite'-Befehl gestoßen, aber ich weiß nicht, ob und in diesem Fall, wie ich es benutze, um das gewünschte Ergebnis zu erhalten.


144
2018-05-30 18:30


Ursprung


Hast du ausgecheckt? imagemagick multi image layer Beispiele? - timbooo
stackoverflow.com/questions/12076293/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


Antworten:


Für eine beliebige Anzahl von Eingabedateien genannt in-<etwas>.jpg:

convert -append in-*.jpg out.jpg

Um bestimmte Dateien anhängen zu lassen oder Zahlen zu überspringen, anstatt den vollständigen "Glob" zu erhalten, können Sie die Eingabedateien explizit angeben und den append Befehl danach

konvertieren in-1.jpg in-5.jpg inN.jpg + anhängen out-in1-plus-in5-und-inN.jpg

Sie können verwenden -append (Anstatt von +append) für vertikales Paste-up.

Oder:

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

erstellt auch eine Datei out.jpg das enthält eine vertikale Verkettung der Quellbilder.

convert

Für einfache Verkettung in einer einzelnen Zeile oder Spalte, die append Option der convert Werkzeug ist ausreichend. Beachten Sie, dass -append Verkettet alle Bilder vertikal und erzeugt eine Spalte mit n Reihen, und +append verkettet horizontal und erzeugt eine Zeile mit n Säulen.

(Sehen ImageMagick: Befehlszeilenoptionen.)

montage

Um eine bessere Kontrolle über das Layout zu bekommen, würden wir die montage Werkzeug. montage -mode concatenate klebt die Eingabebilder zusammen wie die append Option und -tile 1x steuert das anzuwendende Layout.

tile folgt dem Format Säulen×Reihen, aber beide Seiten können fehlen und montage wird herausfinden, wie man die Einschränkungen erfüllt.

Wir benutzen 1x (genau eine Spalte mit einer beliebigen Anzahl von Zeilen), um den gleichen Effekt zu erzielen -append. Ohne -tile 1x, es würde die Bilder wie verbinden +append, standardmäßig auf -tile x1 (beliebig viele Spalten in einer Zeile)

(Sehen ImageMagick Beispiele: Montage, Arrays von Bildern.)


218
2018-05-30 19:37



Vielen Dank. append funktioniert gut, aber ich halte die Montage für kaputt: Wenn Ghostscript-Schriften nicht installiert sind, wird es gerettet, auch wenn Sie die Bilder nicht kommentieren. Schriftarten sollten bei Bedarf geladen werden, nicht im Voraus. - Bram
@ Bram: Ich wusste das nicht und stimme voll und ganz zu. Weißt du, ob GraphicsMagick sich genauso verhält? - peth
Wie würde ich jedes andere Bild überspringen? Ich würde gerne eine Teilmenge analysieren - in-1, in-3, in-5, etc .. - Mike Robinson
@MikeRobinson convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpg sollte die Arbeit machen. - gozzilli
@peth: Ihre Antwort beginnt mit einem Beispiel convert Befehl, der hat -append  Vor Dateinamen eingeben. Ein anonymer Benutzer hat ein Beispiel mit hinzugefügt +append  nach die eingegebenen Dateinamen. Sind diese beiden gültig? Ist die Reihenfolge signifikant? - Scott