Questão Combine várias imagens usando o ImageMagick


Eu gostaria de combinar várias imagens em uma imagem usando o ImageMagick. Para explicar um pouco melhor, quero que o resultado seja semelhante a este:

Ou seja, tenho várias capturas de tela e quero transformá-las em uma imagem com as imagens originais uma em cima da outra.

Pesquisando no Google, eu me deparei com o comando 'composite', mas não sei se e, nesse caso, como usá-lo para obter o resultado desejado.


144


origem


Você fez o check out imagemagick exemplos de camadas de múltiplas imagens? - timbooo
stackoverflow.com/questions/12076293/… - Ciro Santilli 新疆改造中心 六四事件 法轮功


Respostas:


Para qualquer número de arquivos de entrada nomeado in-<alguma coisa>.jpg:

convert -append in-*.jpg out.jpg

A fim de ter arquivos específicos anexados, ou pular números em vez de obter o "glob" completo, você pode mencionar os arquivos de entrada explicitamente e colocar o append comando depois

converter in-1.jpg in-5.jpgN.jpg + acrescente out-in1-plus-in5-e-inNjpg

Você pode usar -append (ao invés de +append) para colar vertical.

Ou:

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

também criará um arquivo out.jpg que contém uma concatenação vertical das imagens de origem.

convert

Para concatenação simples em uma única linha ou coluna, o append opção do convert ferramenta é suficiente. Observe que -append concatena todas as imagens verticalmente, criando uma coluna com n fileiras e +append concatena horizontalmente, criando uma linha com n colunas.

(Vejo ImageMagick: Opções de linha de comando.)

montage

Para obter um melhor controle sobre o layout, precisaríamos do montage ferramenta. montage -mode concatenate irá colar as imagens de entrada juntos como o append opção e -tile 1x controla o layout a ser aplicado.

tile segue o formato colunas×linhas, mas ambos os lados podem estar faltando e montage vai descobrir como atender as restrições.

Estamos usando 1x (exatamente uma coluna com qualquer número de linhas) para obter o mesmo efeito -append. Sem -tile 1x, juntaria as imagens como +append, padronizando para -tile x1 (qualquer número de colunas em uma linha).

(Vejo Exemplos ImageMagick: Montagem, Arrays de Imagens.)


218



Obrigado. append funciona bem, mas eu considero a montagem quebrada: se as fontes ghostscript não estiverem instaladas, ela será liberada, MESMO se você não estiver anotando as imagens. As fontes devem ser carregadas sob demanda, não antecipadamente. - Bram
@Bram: Eu não sabia disso e concordo totalmente. Você sabe se GraphicsMagick se comporta da mesma maneira? - peth
Como eu pularia todas as outras imagens? Eu gostaria de analisar um subconjunto - em 1, em 3, em 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 deve fazer o trabalho. - gozzilli
@peth: Sua resposta começa com um exemplo convert comando que tem -append  antes nomes de arquivos de entrada. Um usuário anônimo adicionou um exemplo com +append  depois de os nomes dos arquivos de entrada. Ambos são válidos? A ordem é significativa? - Scott