Quais parâmetros o "converter" (?) Precisa para obter essa SAÍDA desta ENTRADA?
ENTRADA:
RESULTADO:
fonte
Quais parâmetros o "converter" (?) Precisa para obter essa SAÍDA desta ENTRADA?
ENTRADA:
RESULTADO:
Como não queria que as imagens estivessem niveladas com o lado direito, tive que usar uma abordagem diferente ( composite
ferramenta do ImageMagick ):
convert -size 500x500 xc:white canvas.png
convert canvas.png in.png -geometry +200+200 -composite out.png
-size
deve ser o tamanho final da imagem que você deseja, canvas.png
é uma tela branca em branco, in.png
seria a imagem que você deseja preencher e -geometry
é o deslocamento do posicionamento.
Minha versão do ImageMagick é '6.7.8-0-04-07-07 Q16'. De acordo com o documento, a resposta do comando @kev deve funcionar:
convert in.png -gravity east -extent 520x352 out.png
No entanto, como na maioria das perguntas do ImageMagick, você pode atingir o mesmo objetivo com diferentes meios. Você poderia usar montage
assim:
montage null: in.png -tile 2x1 -geometry +17+0 out1.png
Isso usa a imagem especial 'null:' para concatená-la com o in.png
.
É verdade que convert
você precisa recalcular os valores que precisa passar -extent
para cada imagem de entrada com tamanho diferente.
Primeiro use identify -format
para obter as dimensões da imagem:
identify -format '%Wx%H' in.png
Isso deve retornar algo como:
449x352
Ok, agora você precisaria adicionar os 71 pixels desejados para obter o 520x352
valor final . Mas você não precisa fazer esse cálculo em seu próprio cérebro:
ImageMagick para o resgate !, e seus recursos de cálculo mágico ... :-)
Você pode dizer ao identify -format
comando para fazer esse cálculo para você:
identify -format '%[fx:W+71]x%H'
Agora, você deve obter um resultado de:
520x352
Supondo que você queira apenas adicionar / adicionar uma 'faixa branca' de 71 pixels de largura à esquerda de qualquer imagem, você pode usar a seguinte linha de comando única:
convert \
in.png \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' in.png) \
out2.png
Voila! Uma linha de comando (que encapsula 2 comandos, para ser honesto) e você pode soltá-la em todos os seus PNGs, JPEGs, GIFs, ... em um diretório para adicionar automaticamente sua faixa branca de 71pixels a cada um deles:
for i in *.png *.jpeg *jpg *.gif; do
convert \
${i} \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' ${i}) \
$(convert ${i} -format "71-pixels-padded-left---%t.%e" info:)
done
Para cada imagem, sua saída permanece o mesmo tipo de arquivo. É claro que você pode fazer com que toda saída seja PNG (ou o que você quiser). Apenas substitua a %t.%e
parte do comando por %t.png
...
Documentação: http://www.imagemagick.org/Usage/crop/#extent
convert in.png -gravity east -extent 500x352 out.png
-extend 520x352
. +1 para a "direção certa":-background transparent
para preservar um fundo transparente.Eu tenho esse comando definido no meu
.bash_profile
. Ele calculará automaticamente o tamanho final da imagem a partir do preenchimento desejado em largura e altura (funciona com zeros):Exemplo de uso:
fonte