2009-11-24 4 views
47

Démarrer avec ImageMagic et essayer de trouver un moyen de le faire ... Si une image mesure moins de 50 pixels de hauteur ou 50 pixels de largeur, j'aimerais la placer (non mis à l'échelle) dans le centre horizontal/vertical d'une nouvelle toile de 50x50 pixels sur un fond blanc - et enregistrez-le comme la nouvelle image. Quelqu'un sait-il si c'est possible avec ImageMagick? Merci!Utiliser ImageMagick pour placer une image dans un canevas plus grand

+0

Quelle API utilisez-vous? – John

Répondre

3

Voir cutting and bordering pour un grand nombre d'exemples. Voici une façon simple, vous pouvez le faire:

convert input.png -bordercolor Black -border 5x5 output.png 

Bien sûr, vous aurez besoin de calculer la taille de la frontière pour ajouter (le cas échéant) en fonction des dimensions de l'image d'entrée. Utilisez-vous une API ImageMagick ou seulement les outils de ligne de commande?

+0

Ce n'est probablement pas la solution au problème, mais +1 car cela m'a aidé à créer des images 9patch. :) – unexist

1

Pour ce faire, vous pouvez utiliser single composition. Donc, il ressemblerait à quelque chose comme ceci:

convert -size 50x50 xc:white null: (my_image.png -coalesce) -gravity Center -layers Composite -layers Optimize output.png

3

J'ai essayé ceci:

convert test.jpg -resize 100x100 -background black -gravity center -extent 100x100 output.png 
95

je -extent pour ce faire:

convert input.jpg -gravity center -background white -extent 50x50 output.jpg 
+10

quant à moi, la gravité devrait être placée avant '-extent':' convertir bg.png -gravity center -extent 640x960 -background blanc ../ default @ 2x.png' – Cfr

+5

... et aussi '-background' doit être défini avant '-extent'. Dans l'exemple ci-dessus cela fonctionne comme fond est mis en blanc par défaut – theta

+0

J'ai mis à jour l'exemple, merci! – Jared

1

Pour modifier l'image source dont vous avez besoin utiliser mogrify:

mogrify -gravity center -background white -extent 50x50 source.jpg 
3

Je voulais faire la même chose, sauf rétrécir l'image à 70% à l'intérieur. J'ai utilisé ceci:

convert input.png -resize 70%x70% -gravity center -background transparent -extent 72x72 output.png 

Pas exactement ce qui a été demandé mais j'espère que cela aidera quelqu'un;).

3

J'ai déjà utilisé ce code pour placer une image au centre d'une nouvelle toile avec un arrière-plan blanc. J'espère que cela vous aidera

convert -background white -gravity center your_image.jpg -extent 50x50 new_image.jpg 
Questions connexes