chcesz przyciąć 3 regiony z picture.jpg i dołącz do tych 3 obrazów w jednym.
Czy można przyciąć i scalić te 3 obrazy w jednym poleceniu imagemagick lub convert? Jeśli nie jest możliwe w jednym poleceniu, w jaki sposób można scalić 3 obrazy w osobnych poleceniach?
Moim celem jest uniknięcie zapisania tymczasowych obrazów wykonanych w jednym poleceniu.
Dostaję każdy region za pomocą następujących poleceń.
convert picture.jpg -crop 212x32+717+190 -resize 318x48! out1.jpg
convert picture.jpg -crop 440x231+20+251 -resize 660x347! out2.jpg
convert picture.jpg -crop 440x231+490+251 -resize 660x347! out3.jpg
- Rozmiar obrazu wyjściowego, który chcę uzyskać, wynosi 1336x411 pikseli.
Położenie każdego przyciętego obrazu w ostatecznym obrazie wyjściowym będzie następujące:
out1.jpg znajduje się w (x, y) = (509,0) out2.jpg znajduje się w (x, y) = (0,64) out3.jpg znajduje się w (x, y) = (676,64)
Odpowiedzi:
2 dla odpowiedzi № 1Używając "konwertuj" IM, możesz przeczytać w oryginaleimage, a następnie "-clone" kilka razy w nawiasach, aby pracować na kopiach obrazu wejściowego. Wewnątrz nawiasów możesz "-crop" skopiować każdą kopię w dowolny sposób i "-przecinać" tak, aby każdy zawierał gotowy rozmiar płótna i informacje o położeniu. Następnie możesz "-delete" pierwotne wejście, "-flatten" trzy pozostałe obrazy na jednym płótnie i zapisz dane wyjściowe.
Polecenie będzie wyglądać tak w wierszu polecenia systemu Windows.
convert input.jpg ^
( -clone 0 -crop 212x32+717+190 -resize 318x48! -repage 1336x411+509+0 ) ^
( -clone 0 -crop 440x231+20+251 -resize 660x347! -repage 1336x411+0+64 ) ^
( -clone 0 -crop 440x231+490+251 -resize 660x347! -repage 1336x411+676+64 ) ^
-delete 0 -flatten output.png
Jeśli używasz systemu * nix, będziesz musiał zastąpić te kontynuowane linie "^" odwróconymi ukośnikami "", a także uciec przed nawiasami za pomocą odwróconych ukośników "(...)".