2010-11-08 14 views
5

Tengo un png transparente de 16x16 y lo hice¿Cómo puedo girar un png transparente en 45 grados usando imagemagick y mantener la nueva imagen transparente?

convert -rotate -45 a.png b.png 

Esta gira de ella y crearon una nueva b.png imagen que es de 22x22 tamaño y que cuando se utilizo contra un fondo muestra la imagen original (16x16) girada con el fondo subyacente pero aparece el nuevo relleno con un fondo blanco.

¿Cómo es posible que el nuevo relleno sea también transparente?

Si eso no es posible, ¿cómo puedo tener todo el fondo de la nueva imagen en un solo color?

Respuesta

7

Utilice la opción -Antecedentes para especificar un color transparente con el alfa establecido a cero:

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

+1

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

+0

@Crazenezz: Gracias, he editado la respuesta. –

0

también estaba teniendo el mismo problema, sin embargo yo estaba usando el comando de esta forma:

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

que tenía que ser:

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

Así que, en realidad esto ayudó un poco, gracias :)

5

También puede usar estas opciones:

-background none 
+0

FYI: Dependiendo de cómo se instale ImageMagick y configurado, '-background none 'puede generar un error como' convert: no se puede acceder al archivo de configuración 'colors.xml' @ warning/configure.c/GetConfigureOptions/589'. Esto sucede cuando ImageMagick no puede encontrar un archivo de configuración debido a dónde están instalados los elementos. Si te topas con eso, puedes usar '-background 'rgba (0,0,0,0)'' en su lugar. –

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

funciona bien para mí

0

Solía ​​C# para rotarlo

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);      
} 
Cuestiones relacionadas