2012-08-29 9 views
33
convert input.png -extent 100x100 -gravity center -background white output.png 

Se l'input è 50x50 lo sfondo circostante è bianco. Posso in qualche modo impostarlo su trasparente senza dichiarare trasparente qualsiasi colore all'interno dell'input?ImageMagick estende la tela con sfondo trasparente

risposta

71

Utilizzare questo invece:

convert    \ 
     input.png  \ 
    -background none \ 
    -gravity center \ 
    -extent 100x100 \ 
     output.png 

Nota bene: Queste ordine dei parametri è significativo! (Per convincersi, basta mettere -background none alla fine dei parametri invece che l'inizio ...)


Aggiornato: Grazie a @jesmith che ha notato che la riga di comando ho inizialmente in dotazione non più funziona come previsto. Le versioni più recenti di convert richiedono inoltre che lo -gravity center sia chiamato prima dello-extent 100x100. (Questa era una delle modifiche introdotte nelle versioni più recenti di ImageMagick [al momento della stesura iniziale di questa risposta]).

+7

Infatti l'ordine è importante -background, e hai sbagliato! Devi mettere -gravità prima di -esterno, altrimenti non avrà alcun effetto. Prova -gravity SouthEast per vedere cosa intendo. –

+2

@jesmith: Grazie per il suggerimento. –

+1

Sembra che il testo alla fine sia troncato ... –

8

La nota di Kurt è ironica, l'ordine è importante. Il comando di Kurt ha come risultato che gravity non viene applicato allo extent, quindi il "bordo" trasparente si troverà in fondo e/o a destra dell'immagine.

Lo spostamento di gravity prima di extent crea correttamente "bordi" uguali su tutti i lati applicabili.

convertito input.jpg nessuno -gravity Centro -extent 100x50 output.png

+0

** + 1 ** e grazie per la tua risposta aggiuntiva che indica l'ordine della riga di comando ora richiesto per '-gravity center'. Non l'avevo visto, né il commento di @ jesmith prima, sebbene lo avesse già indicato nel maggio '13. –