Mir war heute aufgefallen, dass die PNG-Dateien, die aus hochgeladenen Vektorgrafiken für verschiedene Größen erzeugt wurden, eine sehr schlechte Qualität hatten. Die Vermutung war zunächst, dass das per Voreinstellung von MediaWiki verwendete ImageMagick nicht auf dem System vorhanden sei und stattdessen ein qualitativ schlechter Fallback genutzt würde. Was genau bei welcher Einstellung aufgerufen wird, kann man hier sehen.

Um nachvollziehen zu können, ob alles richtig läuft, wurde die folgende Endlosschleife ausgeführt:

while true; do ps aux | grep convert ; sleep 0.2; done

Dann wurde die Erzeugung einer neuen Grafik erzwungen, indem die SVG-Datei eingebunden wurde mit der Festlegung einer bisher noch nicht vorhandenen Größe, z. B. 400 Pixel; dabei tauchte die entsprechende Zeile auf; convert (aus dem ImageMagick-Paket) wurde wie folgt aufgerufen:

convert -background white -thumbnail 800x282! /path/to/file.svg PNG:/path/to/output.png

Beispiel mit ImageMagick

Das Ergebnis der Konvertierung von der Datei Publicdomain.svg sieht so aus:
Converted with ImageMagick from a SVG file

Ich wollte nicht glauben, dass das wirklich sein kann und habe das auf dem Rechner zuhause nachvollzogen; dort sieht es genauso aus.

Wieso wird das als Voreinstellung verwendet?

Lösung

Wikipedia verwendet statt ImageMagick den Converter rsvg; um diesen auf einem aktuellen Debian stable nutzen zu können, installiert man das Paket „librsvg2-bin“:

apt-get install librsvg2-bin

Es werden eine Menge Abhängigkeiten mitinstalliert.

Danach steht das Binary „rsvg“ zur Verfügung, welches ein Symlink auf „rsvg-convert“ ist. Nun ändert man die Variable „$wgSVGConverter“ in der Datei LocalSettings.php auf den Wert „rsvg“ um.

Das Ergebnis überzeugt:
Converted with rsvg from a SVG file

Danach wurden im Verzeichnis images/thumb der MediaWiki-Installation alle Dateien des Musters „*svg*png“ im Namen gelöscht. Sobald man eine Seite mit solchen Dateien speichert, werden diese neu erzeugt, siehe hier.

\o/

Passt :)