ImageMagick konvertiert SVG in PNG funktioniert nicht mit RSVG aktiviert

7

Ich verwende das ImageMagick-Dienstprogramm convert , um die SVG-Datei in ein PNG-Bild zu konvertieren. Zuerst habe ich eine Vanilla-Installation von IM auf OSX ( brew install imagemagick ) verwendet, um das SVG mit Hilfe von:

zu konvertieren %Vor%

Dies funktionierte, außer dass einige der Bildobjekte in dieser Datei versetzt waren (tatsächliche Links zu Bildern). Ich habe dann eine ähnliche Frage gelesen , die ImageMagick empfohlen hat mit rsvg Unterstützung kompiliert werden (Homebrew macht es mit brew install imagemagick --use-rsvg ).

Wenn ich jetzt versuche, die Konvertierung durchzuführen, werden keine Bilder gerendert. Ich habe versucht, diese SVG-Datei zu verwenden, und das resultierende PNG war leer. Wenn jedoch Text auf dem SVG vorhanden ist, wird er am richtigen Ort gerendert. Irgendwelche Ideen, um fortzufahren? Danke.

    
sa125 21.07.2012, 12:16
quelle

2 Antworten

3

Oh, ich habe mir jetzt die SVG-Datei angesehen, mit der Sie verlinkt sind.

Es enthält JavaScript. Ich denke nicht, dass die RSVGlib JavaScript in SVGs unterstützt. Ich weiß sicher, dass der interne SVG-Coder namens MSVG nicht.

    
Kurt Pfeifle 21.07.2012, 18:02
quelle
17

Sie sollten diesen Befehl ausführen, um eine Liste aller 'Delegierten' zu sehen, die Ihr ImageMagick zu verwenden versucht:

%Vor%

Um zu ermitteln, welcher Delegat-Befehl von ImageMagick für die SVG-Verarbeitung verwendet wird, führen Sie

aus %Vor%

Sie sollten die binären + Befehlszeilenparameter sehen, die Ihr convert zu verwenden versucht. In meinem Fall ist es /opt/local/bin/rsvg-convert (aber ich benutze nicht Homebrew, ich benutze MacPorts).

Überprüfen Sie nun, ob die Binärdatei überhaupt auf Ihrem System vorhanden ist:

  • Wenn ja, führe es direkt aus und debugge von dort.
  • Wenn nein, versuchen Sie herauszufinden, wo Ihre Homebrew-Installation es installiert hat, und ändern Sie die ImageMagick-Konfigurationsdatei für seine Delegierten. Es heißt delegates.xml . MacPorts platziert es in /opt/local/etc/ImageMagick/delegates.xml - Ich weiß nicht, wo Homebrew es speichert.

Da jedoch Ihre nicht geänderte Installation bereits funktionierte, musste bereits damals ein SVG-konsumierender Delegierter bei der Arbeit gewesen sein. Sonst hättest du überhaupt keine SVG-verarbeiteten erhalten .

Diese interne SVG-Rendermethode von ImageMagick heißt MSVG. Dies ist bei weitem kein Feature-Complete SVG Interpreter / Renderer.

Aktualisierung:

Um zu sehen, was ImageMagick für welches Format macht, führen Sie diesen Befehl aus:

%Vor%

und für SVG run

%Vor%

Ausgabe auf meinem System ist:

%Vor%

Nachdem Sie rsvg installiert haben, ist die interne Methode zum Rendern von SVGs nicht verschwunden. Sie können ImageMagick immer noch zwingen, den internen Renderer zu verwenden, indem Sie MSVG: wie folgt zur Befehlszeile hinzufügen:

%Vor%

Nur der Vollständigkeit halber ...

    
Kurt Pfeifle 21.07.2012 17:41
quelle

Tags und Links