Eu tenho um monte de fotos. Eles têm a mesma altura e estou tentando reuni-los em uma imagem composta usando o programa de montagem do ImageMagick via Bash. O problema é que, por padrão, o tamanho do bloco (uma imagem ocupa um bloco) é igual à imagem com as maiores dimensões. Imagens estreitas, portanto, são cercadas por muito espaço em branco. Eu quero remover este espaço em branco. Como eu posso fazer isso?
bash
imagemagick
image-manipulation
Gilles 'SO- parar de ser mau'
fonte
fonte
Respostas:
Tente algo como isto:
Isso tornará a borda entre as imagens o menor possível e o que houver será transparente.
Para ver uma demonstração da diferença usando imagens incorporadas, tente estas e compare:
Consulte Uso da montagem .
Se você postar um exemplo do que está obtendo e editar manualmente um exemplo do que deseja como resultado, poderemos nos aproximar um pouco mais disso.
Aqui estão alguns exemplos que eu gosto mais do que os que eu publiquei acima:
fonte
Concordo com a resposta aceita
-geometry +0+0
para remover o espaço extra em blocos e acrescento-mode Concatenate
(sob certas condições).Além disso, quando você tem tamanhos diferentes
montage
, fica um pouco difícil discernir entre o que é "fundo em mosaico" (espaço em mosaico) vs "quadro" e "borda" - eu me perco de controle frequentemente, então aqui está um pequeno caso de teste com imagens (clicáveis):Bem, espero que isso seja útil,
Felicidades!
EDIT: montei uma pequena GUI Python / Tkinter / PIL para ImageMagick, tkGui_ImageMagick.py - e finalmente consegui encontrar a linha de comando adequada para o que eu queria: fazer uma montagem de quatro imagens, onde a altura e largura dos ladrilhos são correspondidos com a maior largura dessa coluna (ou altura da linha).
Neste exemplo, img1 (200x100) e img2 (300x200) ficam na primeira coluna; a largura maior é 300 - o que deve definir a largura do bloco de img1. Além disso, o img1 precisa ter sua altura correlacionada à maior altura do img3 (300 px), com a qual ele forma uma linha. Isso pode ser especificado pelo
extent
operador (consulte também ImageMagick • Exibir tópico - Redimensionar e ajustar em vez de esticar ). E essa linha de comando requer chamadas de subprocesso para separarmontage
s para cada coluna - e a partir daí, separarconvert
s para cada imagem:Observe aqui, se tivéssemos usado
-extents
diretamente na linha de montagem, assim:... notaremos que a primeira especificação para altura (200) será ignorada e 400 como maiores serão aplicadas de qualquer maneira aos dois ladrilhos !
Assim, devemos controlar o preenchimento de cada imagem individual (chamando
convert
comextents
para cada ) - e, em seguida, evitarextents
namontage
linha; e, como tal, devemos conhecer previamente a (maior) largura de cada coluna (e a altura de cada linha). Observe também:convert
)montage
, geralmente-gravity
tem que vir depois (totalmente especificado: w & h)-extent
; emconvert
,-gravity
funciona antes-extent
(geralmente)fonte
Não com
montage
, mas parece mais preciso com o seguinte:x500
sendo a altura final desejadafonte