2010-11-08 17 views
5

Ho una png trasparente 16x16 e feciCome posso ruotare un png trasparente di 45 gradi usando imagemagick e mantenere la nuova immagine trasparente?

convert -rotate -45 a.png b.png 

Questo ruotato e generato un nuovo b.png immagine che è di 22x22 dimensioni e che quando uso contro uno sfondo mostra l'immagine originale (16x16) ruotato con lo sfondo sottostante ma il nuovo riempimento che è venuto fuori si presenta con uno sfondo bianco.

Come è possibile che anche il nuovo riempimento sia trasparente?

Se ciò non è possibile, come posso avere tutto lo sfondo della nuova immagine di un colore?

risposta

7

Utilizzare l'opzione -background per specificare un colore trasparente con set alfa a zero:

convert -background 'rgba(0,0,0,0)' -rotate 45 a.png b.png

+1

Dovrebbe essere 'convert -background 'rgba (0,0,0,0)' -rotate 45 a.png b.png' – Crazenezz

+0

@Crazenezz: Grazie, ho modificato la risposta. –

0

ero anche avendo lo stesso problema, tuttavia mi stava usando il comando in questo modo:

convert a.png -rotate 45 -background transparent b.png 

doveva essere:

convert -rotate 45 -background transparent a.png b.png 

Quindi, questo in realtà ha aiutato un po ', grazie :)

5

è anche possibile utilizzare le seguenti opzioni:

-background none 
+0

Nota: A seconda di come ImageMagick è installato e configurato, '-background none 'potrebbe causare un errore come' convert: impossibile accedere al file di configurazione 'colors.xml' @ warning/configure.c/GetConfigureOptions/589'. Ciò accade quando ImageMagick non riesce a trovare un file di configurazione a causa di dove sono installate le cose. Se ci si imbatte in questo, è possibile utilizzare '-background 'rgba (0,0,0,0)''. –

0
convert -rotate 66 -background none c:\input.png c:\output.png 

funziona bene per me

0

ho usato C# per ruotarlo

using (MagickImage mimg = new MagickImage(path)) 
{ 
    mimg.BackgroundColor = MagickColor.Transparent; 
    mimg.Alpha(AlphaOption.Background); 
    mimg.AlphaColor = new MagickColor(System.Drawing.Color.White); 
    mimg.FillColor = new MagickColor(255, 255, 255, 0); 
    mimg.Rotate(degree);      
} 
Problemi correlati