Mam kilka zdjęć. Wszystkie mają tę samą wysokość, a ja próbuję połączyć je w złożony obraz za pomocą programu montażowego ImageMagick za pośrednictwem Bash. Problem polega na tym, że domyślnie rozmiar kafelka (jeden obraz zajmuje jeden kafelek) jest równy obrazowi o największych wymiarach. Wąskie obrazy są zatem otoczone dużą ilością białej przestrzeni. Chcę usunąć tę białą przestrzeń. Jak mogę to zrobić?
bash
imagemagick
image-manipulation
Gilles „SO- przestań być zły”
źródło
źródło
Odpowiedzi:
Wypróbuj coś takiego:
Spowoduje to, że granica między obrazami będzie jak najmniejsza, a wszystko, co tam będzie, będzie przezroczyste.
Aby zobaczyć demonstrację różnicy za pomocą wbudowanych obrazów, wypróbuj je i porównaj:
Zobacz użycie montażu .
Jeśli opublikujesz przykład tego, co otrzymujesz, i ręcznie edytujesz razem przykład tego, co chcesz w rezultacie, możemy być w stanie zbliżyć się do tego.
Oto przykłady, które lubię bardziej niż te, które pierwotnie opublikowałem powyżej:
źródło
Zgadzam się z zaakceptowaną odpowiedzią
-geometry +0+0
na usunięcie dodatkowego miejsca na płytki i dodam-mode Concatenate
(pod pewnymi warunkami).Ponadto, gdy masz różne rozmiary
montage
, nieco trudniej jest rozróżnić, co to jest „tło kafelkowe” (przestrzeń kafelkowa) w porównaniu z „ramką” i „ramką” - często sam się gubię, więc tutaj jest mały przypadek testowy z (klikalne) obrazy:Mam nadzieję, że okaże się to przydatne, na
zdrowie!
EDYCJA: Złożyłem mały GUI Python / Tkinter / PIL dla ImageMagick, tkGui_ImageMagick.py - i wreszcie mogłem znaleźć odpowiednią linię poleceń dla czegoś, czego chciałem: zrobić montaż czterech zdjęć, w których wysokość i szerokość kafelków są dopasowane do dowolnej największej szerokości tej kolumny (lub wysokości wiersza).
W tym przykładzie img1 (200x100) i img2 (300x200) idą do pierwszej kolumny, większa szerokość to 300 - co powinno ustawić szerokość kafelka img1. Ponadto, img1 musi mieć skorelowaną wysokość z większą wysokością img3 (300 pikseli), z którą tworzy rząd. Można to określić za pomocą
extent
operatora (zobacz także ImageMagick • Zobacz temat - Zmień rozmiar i pad zamiast rozciągania ). Ten wiersz poleceń wymaga wywołań podprocesu do oddzielnychmontage
s dla każdej kolumny - a stamtąd osobnychconvert
s dla każdego obrazu:Uwaga tutaj, jeśli użyliśmy
-extents
bezpośrednio w linii montażowej, tak:... będziemy zauważyć, że pierwsza specyfikacja dla wysokości (200) zostaną zignorowane, a 400 jako większe będą stosowane do obu płytek anyways !
Dlatego musimy kontrolować dopełnianie każdego pojedynczego obrazu (dzwoniąc
convert
zaextents
dla każdego ) - a następnie unikaćextents
wmontage
linii; i jako taki musimy apriori znać (największą) szerokość każdej kolumny (i wysokość każdego rzędu). Uwaga:convert
w ogóle wypełniany (i przebiegany )montage
zwykle-gravity
musi przyjść po (w pełni określony: w & h)-extent
; wconvert
,-gravity
działa przed-extent
(zwykle)źródło
Nie z
montage
, ale wydaje się dokładniejszy z następującymi:x500
będący pożądaną wysokością końcowąźródło