2009-12-16 19 views
6

Estoy intentando agregar esquinas redondeadas a mis imágenes usando ImageMagick.Esquinas redondeadas usando ImageMagick (fondo transparente o blanco)

Si la imagen de entrada es un archivo PNG o GIF, la secuencia de comandos funciona correctamente.

Pero si mi archivo de entrada es un archivo JPEG, las esquinas son negras. Me gustaría utilizar un color de esquina personalizado en ese caso (por ejemplo, blanco) alguna idea?

Aquí está mi escritura del golpe de trabajo:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK 
convert $SRC -matte $MASK -compose DstIn -composite $DST 

Los parámetros son:

$ SRC: la imagen de entrada $ W: ancho de la imagen de entrada $ H: altura de la imagen de entrada $ MÁSCARA de: la imagen de la máscara que contiene esquinas transparentes $ DST: la imagen resultante con esquinas redondeadas.

Gracias de antemano.

Respuesta

9

encontrado finalmente una solución:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK 
convert $SRC -matte $MASK -compose DstIn -composite $TMP_PNG 

Estoy usando un archivo PNG "temp" como destino. Si el formato de salida no es GIF o PNG, utilizo la función "aplanar" de ImageMagick con el color blanco como fondo.

convert $TMP_PNG -background white -flatten $DST 

Para la salida PNG: simplemente copiar TMP_PNG $ a $ DST

Para la salida GIF: simplemente convertir $ TMP_PNG a $ DST

Else: acoplar la imagen como se dijo antes.

Espero que ayude.

+0

Nota para cualquier persona que lea esta respuesta: si el archivo de máscara temporal '$ TMP_PNG' no tiene una extensión de archivo que identifique su formato (por ejemplo,' .png'), entonces debe prefijar la variable con ella. De esta manera: 'png: $ TMP_PNG'. También 'canvas: none' es la nueva forma de escribir' xc: none' aunque este último todavía funciona. – starfry

Cuestiones relacionadas