Como inserir espaços em branco com imagemagick?

9

Quais parâmetros "convert" (?) precisa para obter essa OUTPUT desta ENTRADA?

ENTRADA:

OUTPUT:

    
por gasko peter 03.07.2012 / 02:00

3 respostas

5

Como não queria que as imagens fossem niveladas com o lado direito, tive que usar uma abordagem diferente (a ferramenta composite 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 da imagem final desejado, canvas.png é uma tela em branco, in.png seria a imagem que você deseja preencher e -geometry é o deslocamento de posicionamento.

    
por 02.10.2013 / 12:38
13

Minha versão do ImageMagick é "6.7.8-0 2012-07-04 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 concatenar com o in.png .

É verdade que, com convert , é necessário calcular novamente os valores que você precisa passar para -extent para cada imagem de entrada que tenha um 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ê precisa adicionar seus 71 pixels desejados para obter o valor 520x352 final. Mas você não precisa fazer esse cálculo em seus próprios cérebros:

ImageMagick para o resgate !, e seus recursos de cálculo mágico ... : -)

Você pode dizer ao comando identify -format para fazer esse cálculo para você:

 identify -format '%[fx:W+71]x%H'

Isso agora deve fornecer um resultado de:

 520x352

Portanto, supondo que você queira apenas adicionar uma 'faixa branca' de 71 pixels de largura à esquerda de qualquer imagem, você pode usar a seguinte linha de comando:

 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 deixar esta solta em todos os seus PNGs, JPEGs, GIFs, ... em um diretório para adicionar magicamente sua tira branca de 71 pixels para 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 impor que todas as saídas sejam PNG (ou o que você quiser). Apenas substitua a parte %t.%e do comando por %t.png ...

    
por 09.07.2012 / 21:42
6

Documentação: link

convert in.png -gravity east -extent 500x352 out.png
    
por 03.07.2012 / 06:14