PNG in SVG konvertieren

Teilen:

Für die Webseitenerstellung in einem Blog oder Wiki will man oftmals Grafiken im SVG-Format, sogenannte Scalable Vector Graphics verwenden. Ein Entscheidender Vorteil des SVG-Formates gegenüber anderen Grafikformaten, wie z.B. JPG oder PNG, ist die Skalierbarkeit ohne Qualitätsverlust.

Das Allroundtool Imagemagick mit seinem Kommandozeilenwerkzeug convert unterstütz das SVG-Format leider nicht. Deshalb muss man auf ein alternatives Tool wie z.B. potrace ausweichen. Potrace unterstützt viele Ausgabeformate, unter anderem PostScript, PDF und SVG.

Sollte potrace auf dem eigenen System nicht vorhanden sein, kann man dieses Werkzeug aus den Standard-Repositories nachinstallieren.

$ sudo apt install potrace

Ganz ohne das convert Kommando geht es leider nicht, da potrace als Eingabeformate weder PNG noch JPG unterstützt. Als Zwischenschritt muss von convert eine PNM-Datei (Portable Anymap) erzeugt werden. Danach kann aus dieser Datei mittels potrace in ein SVG Format umgewandelt werden.

Als Inputfile verwendet man eine PNG oder JPG Datei, diese konvertiert man durch das nachfolgenden Kommando zu einem PNM-File.

$ convert penguin.png penguin.pnm

Die Option -s sorgt für die Ausgabe in das SVG-Format und die Option -o legt den Dateinamen für das Ausgabefile fest.

$ potrace penguin.pnm -s -o penguin.svg

Sollte man das Ergebnis überprüfen wollen eignet sich das Kommando file zum Feststellen des Dateityps besonders gut.

$ file penguin.svg
penguin.svg: SVG Scalable Vector Graphics image

Eine Besonderheit sollte man bei der Konvertierung von einem PNG oder JPG in das SVG-Format kennen, es eignet sich nicht für farbige Fotos, da potrace eine S/W Grafik erstellt. Es ist also vorwiegend für einfache S/W-Piktogramme geeignet, die ins SVG-Format transferiert werden sollen. Als angenehmen Nebeneffekt stellt sich bei der Konvertierung die Reduzierung der Dateigröße von ca. 40 bis 50% ein. Das kommt insbesondere den Ladezeiten von Webseiten zu Gute wenn viele SVG-Grafiken, statt PNG- oder JPG-Dateien, verwendet werden.

$ ls -l linux-penguin.*
-rw-rw---- 1 michael michael 6964 Aug 31 13:47 linux-penguin.png
-rw-rw---- 1 michael michael 8203 Aug 31 14:17 linux-penguin.pnm
-rw-rw---- 1 michael michael 3733 Aug 31 14:18 linux-penguin.svg


Quelle Teaser-Logo:
Icons made by Freepik from www.flaticon.com