web-dev-qa-db-fra.com

Existe-t-il un moyen de remplir une image avec sa couleur d'arrière-plan à la taille carrée?

Permettez-moi de décrire mon problème:

J'ai un site où je poste des logos de société de sponsors. Une fois que j'ai reçu le logo (ou que j'ai googlé), ils sont généralement de la taille d'un rectangle - la largeur et la hauteur ne sont pas égales.
Sur mon site, une fois que vous avez téléchargé l’image du logo, vous la rognez ensuite en un carré.

Pour les logos rectangulaires, je les ouvre généralement dans GIMP, j'augmente la taille de la toile à un carré, crée un nouveau calque de la couleur d'arrière-plan et l'exporte enfin au format jpg ou png pour le site. Cela prend du temps.

Je cherche un moyen de le faire, espérons-le, avec une simple commande de terminal.

EXEMPLE:

Considérez ce logo Safaricom (société de télécommunications kenyane) ci-dessous. Il est de 650px par 380px - comment puis-je le faire 650px par 650px et ensuite le centrer horizontalement à partir de la ligne de commande?

safaricom logo

4
Parto

Vous pouvez utiliser la commande suivante nécessitant 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
  • La première commande convert ajuste votre image pour supprimer les bordures
  • Ensuite, j'utilise identify pour trouver la cote maximale (largeur ou hauteur)
  • J'ajoute une bordure de 10 pixels (n'hésitez pas à la modifier ou à la supprimer)
  • Enfin, la dernière commande convert utilise -gravity pour centrer le logo dans un canevas.

Vous pouvez même coller cette commande dans une fonction bash de votre $HOME/.bashrc:

squarize()
{
    pic=$1
    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
}
6
Sylvain Pineau