2015-05-18 15 views
5

Ponieważ bardzo łatwo jest wyświetlić zawartość pliku SVG wewnątrz notebooka iPython, czy istnieje również sposób (łatwy), aby uzyskać to, co widzimy wewnątrz pliku png lub innego?Konwertuj SVG na png lub inny?

from IPython.display import SVG 
SVG(filename='../images/python_logo.svg') 

Jeśli robię svg = SVG(filename='../images/python_logo.svg')

Jak mogę zapisać go do pliku PNG?

Odpowiedz

7

SVG są obrazami wektorów (rysunki są zapisywane jako polecenia do rysowania linii, kół itp.). Pliki PNG są bitmapami. Aby przekonwertować SVG na PNG, potrzebujesz renderera.

Najbardziej oczywistym rozwiązaniem jest ImageMagick, biblioteka już zainstalowana, ponieważ jest używana w kilku programach. Mniej oczywistym podejściem jest korzystanie z Inkscape. Używając opcji linii poleceń, można użyć programu Inkscape jako programu do konwersji. Ponieważ Inkscape jest zorientowany na wektor, podejrzewam, że jakość jest lepsza niż ImageMagick (który jest bardziej zorientowany na bitmapy).

Jako obraz wektorowy (SVG) jest plikiem tekstowym zawierającym instrukcje rysowania, jest on łatwiejszy do zrozumienia. Pliki PNG zawierają tylko informacje o pikselach i, co gorsza, są skompresowane dość skomplikowanym algorytmem. Zrozumienie ich nie jest tak proste.

Spójrz na Inkscape man page, jest dość oczywiste, jak z niego korzystać. This is the IMagick convert help.

+1

PO ma dziwne poczucie "łatwego" i "trudnego". Mapa bitowa jest po prostu bitmapą, podczas gdy w SVG występują różne możliwe problemy: interpretacja koloru, szerokość linii, skalowanie i transformacja, wygładzanie krawędzi, lokalne lub wbudowane czcionki ... Jeśli "po prostu korzystaj z biblioteki!" jest "łatwą" odpowiedzią na SVG, która dotyczy również plików PNG. Prawdopodobnie jest to podwójne. – usr2564301

+0

@Jongware Tak, ale te rzeczy w większości nie są w SVG, ale w wyświetlaniu obrazu SVG na ekranie. Sam SVG nie jest aż tak skomplikowany - przynajmniej jest to jeden z mniejszych standardów W3C :-) – jcoppens

+1

Nigdy nie wiedziałem, że SVG są zapisywane jako instrukcje (Wiedziałem, że były formatem wektorowym, ale nie myślałem głębiej) +1 za udzielanie mi wiedzy: D – Indigo

Powiązane problemy