2016-04-19 10 views
6

Ich möchte ein SVG zu einem PNG in einem Web Worker konvertieren. Mein Problem ist, dass das DOM nicht innerhalb des Worker, zugänglich ist, so dass ich das SVG nicht auf eine Leinwand oder so etwas zeichnen kann.Convert SVG in PNG in Web Worker

+1

Vielleicht können Sie Inkscape oder ImageMagick nutzen? (Ich hatte nicht die Gelegenheit, mit Web-Mitarbeitern zu spielen) Sofern Sie eine vollkalorische ausführbare Umgebung erhalten, können Sie eine der beiden oben genannten Maßnahmen verwenden. Weitere Informationen finden Sie unter: http://stackoverflow.com/questions/9853325/how-to-convert-a-svg-to-a-png-with-image-magick – enhzflep

Antwort

2

Weeell, Sie können immer manuell das SVG analysieren und daraus eine Bitmap erstellen, aber (!) Ist es ein bisschen mehr Arbeit offensichtlich, da Sie einen SVG-Parser sowie einen PNG-Writer erstellen müssten, ganz zu schweigen Rasterisierungscode für Linien und Zweimodi Polygonfüllung inkl. Anti-Aliasing-, Pattern-, Matrix-, Composition-, Blending- und Gradient-Unterstützung. Könnte ein schönes Wochenende Projekt sein :)

Auf eine ernstere Anmerkung jedoch: Sie können dies nur mit den integrierten Tools mit regulären Kontext (keine Webworker) oder optional einen serverbasierten Dienst einrichten.

+0

Vielen Dank für die Antwort. Ich richte einen Webservice ein. Es wäre einfach eine glattere Lösung gewesen, die Konvertierung direkt in einem zweiten Thread durchzuführen, da ich genau das gleiche SVG in verschiedenen Maßstäben zeichnen würde. –

+1

@ ChristophBühler warum brauchst du die png-version? Svg skaliert ziemlich gut ;-) (sogar auf Leinwand) – Kaiido

+0

@Kaiido Die SVGs sind ziemlich riesig (20 MB) und die Bilder müssen schnell erscheinen. Deshalb schreibe ich einen Canvas-Puffer. –