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

Si la entrada es 50x50, el fondo circundante es blanco. ¿Puedo de alguna manera establecer esto como transparente sin declarar ningún color dentro de la entrada como transparente?ImageMagick extender lienzo con fondo transparente

Respuesta

71

Use este lugar:

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

Nota bien: Estos orden de los parámetros es importante! (Para convencerse a sí mismo, sólo hay que poner -background none al final de los parámetros en lugar de inicio ...)


Actualizado: Gracias a @jesmith que se percató de que la línea de comandos que he proporcionado originalmente no ya no funciona como se destinado a. Las versiones más recientes de convert también requieren que -gravity center se llame antes de-extent 100x100. (Este fue uno de los cambios introducidos en las versiones más recientes de ImageMagick [en el momento de escribir esta respuesta originalmente]).

+7

De hecho, el orden es importante, y que se equivocó! Debes poner -gravedad antes de -extensión, o no tendrá ningún efecto. Prueba -gravedad SurEast para ver a qué me refiero. –

+2

@jesmith: Gracias por la pista. –

+1

Parece que el texto al final está cortado ... –

8

La nota de Kurt es irónica, el orden es muy importante. Los resultados del comando de Kurt en gravity no se aplicaron al extent, por lo que el 'borde' transparente estará en la parte inferior y/o derecha de la imagen.

Mover gravity antes de extent creará correctamente 'bordes' transparentes iguales en todos los lados aplicables.

convertido input.jpg -Antecedentes ninguno -La gravedad Centro -extent 100x50 output.png

+0

** + 1 ** y gracias por su respuesta adicional que señala el pedido de línea de comando ahora requerido para '-gravity center'. No lo había visto, ni el comentario de @ jesmith antes, aunque ya lo había señalado en mayo de 13. –

Cuestiones relacionadas