2010-11-08 9 views
5

mam 16x16 przezroczysty png i zrobiłemJak mogę obrócić przezroczystego png o 45 stopni za pomocą imagemagick i zachować nowy obraz przezroczysty?

convert -rotate -45 a.png b.png 

Ten obracać je i stworzył nowy obraz b.png który ma rozmiar 22x22 i który, gdy używam na tle pokazuje obraz oryginalny (16x16) obracane z podstawowym tłem, ale nowe wypełnienie, które pojawiło się, pojawia się na białym tle.

Jak to możliwe, aby nowe wypełnienie było przezroczyste?

Jeśli to nie jest możliwe, w jaki sposób mogę uzyskać całe tło nowego obrazu w jednym kolorze?

Odpowiedz

7

Użyj opcji -background określić kolor przezroczysty z zestawem alfa do zera:

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

+1

Powinien to być "convert -background" rgba (0,0,0,0) '-rotate 45 a.png b.png' – Crazenezz

+0

@Crazenezz: Dzięki, zredagowałem odpowiedź. –

0

Byłem też mają ten sam problem, ale ja za pomocą polecenia tak:

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

To musiała być:

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

Tak, to rzeczywiście pomogło trochę, dzięki :)

5

Można również korzystać z tych opcji:

-background none 
+0

FYI: W zależności od zainstalowanego ImageMagick, '-background none 'może spowodować błąd typu' convert: brak dostępu do pliku konfiguracyjnego 'colors.xml' @ warning/configure.c/GetConfigureOptions/589.'. Dzieje się tak, gdy ImageMagick nie może znaleźć pliku konfiguracyjnego z powodu miejsca instalacji. Jeśli napotkasz na to, możesz zamiast tego użyć '-background 'rgba (0,0,0,0)''. –

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

działa dobrze dla mnie

0

Kiedyś C#, aby obrócić go

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);      
} 
Powiązane problemy