2009-11-24 2 views
47

Per iniziare con ImageMagic e provare a trovare un modo per farlo ... Se un'immagine è inferiore a 50 pixel di altezza o 50 di larghezza, mi piacerebbe posizionarla (non ridimensionato) nel centro orizzontale/verticale di una nuova tela di 50x50 pixel su uno sfondo bianco - e salvalo come nuova immagine. Qualcuno sa se questo è possibile con ImageMagick? Grazie!Usa ImageMagick per posizionare un'immagine all'interno di una tela più grande

+0

Quale API stai utilizzando? – John

risposta

3

Vedere cutting and bordering per un numero enorme di esempi. Ecco un modo semplice si potrebbe farlo:

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

Naturalmente, sarà necessario per calcolare la dimensione del bordo da aggiungere (se presente) in base alle dimensioni dell'immagine in ingresso. Stai usando un'API ImageMagick o solo gli strumenti da riga di comando?

+0

Probabilmente non è la soluzione al problema, ma +1 poiché mi ha aiutato con la creazione di immagini a 9patch. :) – unexist

1

È possibile utilizzare single composition per eseguire questa operazione. Quindi sarebbe simile a questa:

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

3

ho provato questo:

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

ho usato -extent per fare questo:

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

come per me, la gravità deve essere posizionata prima di '-extent':' convert bg.png -gravity center -extent 640x960 -background white ../ default @ 2x.png' – Cfr

+5

... e anche '-background' deve essere impostato prima di '-extent'. Nell'esempio sopra funziona come sfondo è impostato di default in bianco – theta

+0

Ho aggiornato l'esempio, grazie! – Jared

1

Per modificare l'immagine di origine è necessario usare mogrify:

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

Volevo fare lo stesso, tranne ridurre l'immagine al 70% all'interno. Ho usato questo:

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

Non esattamente quello che è stato richiesto, ma si spera che possa aiutare qualcuno;).

3

Una volta ho usato questo codice per posizionare un'immagine al centro di una nuova tela con uno sfondo bianco. spero che questo ti possa essere d'aiuto

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