2010-11-08 4 views
5

J'ai un 16x16 .png transparent et je l'ai faitComment faire pivoter un png transparent de 45 degrés en utilisant imagemagick et garder la nouvelle image transparente?

convert -rotate -45 a.png b.png 

Cette rotation et créé une nouvelle B.png d'image qui est de taille 22x22 et qui lors de l'utilisation sur un fond montre l'image originale (16x16) mise en rotation avec l'arrière-plan sous-jacent, mais le nouveau remplissage qui se présente apparaît avec un fond blanc.

Comment est-il possible que le nouveau remplissage soit également transparent?

Si ce n'est pas possible, comment puis-je avoir tout l'arrière-plan de la nouvelle image d'une seule couleur?

Répondre

7

L'option -background pour spécifier une couleur transparente pourvue d'un alpha à zéro:

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

+1

Il devrait être 'convertir -background 'rgba (0,0,0,0)' -rotate 45 a.png b.png' – Crazenezz

+0

@Crazenezz: Merci, j'ai édité la réponse. –

0

Je suis en ayant le même numéro, mais j'utilisait la commande comme ceci:

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

Il faut être:

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

Donc, cela fait un peu aidé, merci :)

5

Vous pouvez également utiliser ces options:

-background none 
+0

FYI: Selon la configuration d'ImageMagick, '-background none 'peut entraîner une erreur comme' convert: impossible d'accéder au fichier de configuration 'colors.xml' @ warning/configure.c/GetConfigureOptions/589.'. Cela se produit lorsque ImageMagick ne trouve pas de fichier de configuration en raison de l'emplacement d'installation des éléments. Si vous rencontrez cela, vous pouvez utiliser '-background 'rgba (0,0,0,0)'' à la place. –

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

fonctionne bien pour moi

0

je C# pour le faire pivoter

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);      
} 
Questions connexes