Existe uma maneira de preencher uma imagem com sua cor de fundo para o tamanho quadrado?

3

Deixe-me descrever meu problema:

Eu tenho um site onde eu posto patrocinadores de logotipos de empresas. Uma vez que eu enviei o logotipo (ou eu pesquisei), eles geralmente estão no tamanho do retângulo - a largura e a altura não são iguais.
No meu site, depois de enviar a imagem do logotipo, você a corta para um quadrado.

Para logotipos que são retangulares, eu normalmente os abro no GIMP, aumente o tamanho da tela para um quadrado, crie uma nova camada da cor do plano de fundo e finalmente exporte-a como jpg ou png para o site. Muito demorado.

Estou procurando uma maneira de fazer isso com apenas um comando de terminal.

EXEMPLO:

Considere abaixo o logotipo da Safaricom (empresa de telecomunicações queniana). É de 650 px por 380 px - como posso fazê-lo a 650 px por 650 px e, em seguida, centralizá-lo horizontalmente a partir da linha de comando?

    
por Parto 10.03.2015 / 10:01

1 resposta

5

Você pode usar o seguinte comando, que requer imagemagick ( sudo apt-get install imagemagick ):

pic="ty338.png"; convert $pic -trim $pic ; width=$(identify -format "%w" $pic); height=$(identify -format "%h" $pic); new_dim=$((width > height ? width+10 : height+10)); convert $pic -gravity center -extent "${new_dim}x${new_dim}" $pic
  • O primeiro comando convert apara sua foto para remover bordas
  • Então eu uso identify para encontrar a dimensão máxima (largura ou altura)
  • Eu adiciono uma borda de 10px (sinta-se à vontade para alterá-la ou removê-la)
  • Finalmente, o último comando convert usa -gravity para centralizar o logotipo em uma tela quadrada.

Você pode até colar esse comando em uma função bash no seu $HOME/.bashrc :

squarize()
{
    pic=
    convert $pic -trim $pic
    width=$(identify -format "%w" $pic)
    height=$(identify -format "%h" $pic)
    new_dim=$((width > height ? width+10 : height+10))
    convert $pic -gravity center -extent "${new_dim}x${new_dim}" $pic
}
    
por Sylvain Pineau 10.03.2015 / 11:01