2009-12-16 5 views
6

Sto cercando di aggiungere angoli arrotondati alle mie immagini utilizzando ImageMagick.Angoli arrotondati con ImageMagick (bakground trasparente o bianco)

Se l'immagine di input è un file PNG o GIF, il mio script funziona correttamente.

Ma se il mio file di input è un file JPEG, gli angoli sono neri. Mi piacerebbe usare un colore angolo personalizzato in quel caso (es. Bianco) qualche idea?

Ecco il mio script bash di lavoro:

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

I parametri sono:

$ SRC: l'immagine in ingresso $ W: larghezza immagine in ingresso $ H: altezza dell'immagine in ingresso $ MASCHERA di: l'immagine della maschera che contiene gli angoli trasparenti $ DST: l'immagine risultante con gli angoli arrotondati.

Grazie in anticipo.

risposta

9

finalmente trovato una soluzione:

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 

Io sto usando un file PNG "temp" come destinazione. Se il formato di output non è GIF o PNG, utilizzo la funzione "flatten" di ImageMagick con il colore bianco come sfondo.

convert $TMP_PNG -background white -flatten $DST 

Per l'uscita PNG: è sufficiente copiare $ TMP_PNG a $ DST

Per l'uscita GIF: semplicemente convertire $ TMP_PNG a $ DST

Else: appiattire l'immagine come detto prima.

Spero che questo aiuti.

+0

Nota per chiunque stia leggendo questa risposta: se il file maschera temporaneo '$ TMP_PNG' non ha un'estensione di file che identifica il suo formato (ad esempio' .png'), allora è necessario anteporre la variabile con esso. Così: 'png: $ TMP_PNG'. Anche 'canvas: none' è il nuovo modo di scrivere' xc: none' anche se quest'ultimo funziona ancora. – starfry