Intelligente Lösungen
in neuer Dimension

ImageMagick - SVG nach PNG wandeln

Manchmal muß ich SVG-Dateien nach PNG wandeln. Das Werkzeug meiner Wahl hierfür ist ImageMagick und davon das Werkzeug convert. Ich verwende Version 6.7.7:

1
2
3
4
$ convert --version
Version: ImageMagick 6.7.7-10 2018-09-28 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP    

Einfachste Variante

Im Grunde genommen muß man nur dies ausführen:

1
2
# convert {svg-datei} {png-datei}
$ convert mypicture.svg mypicture.png

Danach hat man die PNG-Datei.

Transparenter Hintergrund

Meine SVG-Datei hat einen weißen Hintergrund. Der wird mit der einfachsten Variante auch so in die PNG-Datei übernommen. Oft ist mir’s lieber, wenn der Hintergrund transparent ist, das erreiche ich so:

1
convert -background transparent mypicture.svg mypicture.png

Treppen entfernen

Die Option “+antialias” soll die Treppenbildung reduzieren. Ich kann keine Auswirkung feststellen, eventuell ist die bei mir per Standard aktiv:

1
2
$ convert +antialias -background transparent\
   mypicture.svg mypicture.png

Größe anpassen

Mit file mypicture.png kontrolliere ich die Größe der PNG-Datei:

1
2
$ file mypicture.png
mypicture: PNG image data, 744 x 1053, 16-bit gray+alpha, non-interlaced

Die Größe gefällt mir nicht, ich hätte gerne eine Höhe von einem Achtel dieser Größe.

1
2
3
$ convert -density 72  mypicture.svg mypicture.png
$ file mypicture.png
mypicture: PNG image data, 744 x 1053, 16-bit gray+alpha, non-interlaced

Mit 72 kommt die Größe 744x1053 heraus. Versuchen wir’s mit der Hälfte davon:

1
2
3
$ convert -density 36  mypicture.svg mypicture.png
$ file mypicture.png
mypicture: PNG image data, 149 x 210, 16-bit gray+alpha, non-interlaced

Folgende Optionen haben nicht funktioniert:

  • -size (breite)x(hoehe) … scheint einfach ignoriert zu werden
  • -resize (breite)x(hoehe) … verschlechtert die Qualität, weil erst gerastert und dann umgerechnet wird