2011-05-30 18:30:58 +0000 2011-05-30 18:30:58 +0000
172
172

Łączenie wielu obrazów za pomocą ImageMagick

Chciałbym połączyć wiele obrazów w jeden obraz używając ImageMagick. Aby wyjaśnić to trochę lepiej, chcę, aby wynik wyglądał podobnie do tego:

Czyli mam kilka zrzutów ekranu i chcę je zamienić w jeden obraz z oryginalnymi obrazami nałożonymi na siebie.

Googlując, natknąłem się na polecenie ‘composite’, ale nie wiem czy, a w takim razie jak go użyć, aby uzyskać pożądany przeze mnie rezultat.

Odpowiedzi (1)

266
266
266
2011-05-30 19:37:55 +0000

Dla dowolnej liczby plików wejściowych o nazwie in-<something>.jpg:

convert -append in-*.jpg out.jpg

Aby mieć dołączone konkretne pliki, lub pominąć numery zamiast otrzymać pełny “glob”, można wymienić jawnie pliki wejściowe i umieścić po nich polecenie append convert in-1.jpg in-5.jpg in-_N_.jpg +append out-in1-plus-in5-and-in_N_.jpg

Można użyć -append (zamiast +append) do pionowego wklejania.

Lub:

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

utworzy również plik out.jpg, który zawiera pionową konkatenację obrazów źródłowych.

convert

Do prostej konkatenacji w pojedynczym wierszu lub kolumnie wystarczy opcja append narzędzia convert. Zauważ, że -append konkatenuje wszystkie obrazy pionowo, tworząc jedną kolumnę z n wierszami, a +append konkatenuje poziomo, tworząc jeden wiersz z n kolumnami.

(Zobacz ImageMagick: Opcje wiersza poleceń .)

montage

Aby uzyskać dokładniejszą kontrolę nad układem, potrzebujemy narzędzia montage. montage -mode concatenate sklei obrazy wejściowe razem jak opcja append, a -tile 1x kontroluje układ, który ma zostać zastosowany.

tile stosuje się do formatu columns×rows, ale może brakować dowolnej strony, a montage wymyśli, jak sprostać ograniczeniom.

Używamy tutaj 1x (dokładnie jedna kolumna z dowolną liczbą wierszy), aby uzyskać ten sam efekt co -append. Bez -tile 1x, łączyłby on obrazki tak jak +append, domyślnie -tile x1 (dowolna liczba kolumn w jednym wierszu).

(Zobacz ImageMagick Examples: Montage, Arrays of Images .)