Ich wollte Librsvg Bild-Rendering auf meinem Mac arbeiten, um SVG-Rendering zu beschleunigen. Ian Mackinnons großartige Antwort enthält alle Zutaten, aber eine Änderung der Bibliothek umzusetzen, ist schwierig. Mit diesen Schritten hat librsvg verknüpfte Bilder korrekt mit relativen Pfaden gerendert. Ich hoffe, das spart jemandem Zeit.
Zuerst habe ich installiert librsvg mit:
brew install --build-from-source librsvg
Zum Zeitpunkt des Schreibens, installiert diese Version 2.40.13 und die notwendigen Bibliotheken, es zu bauen.Ich habe dann heruntergeladen und extrahiert das Quellarchiv in meinem Home-Verzeichnis:
wget https://download.gnome.org/sources/librsvg/2.40/librsvg-2.40.13.tar.xz
tar jxvf librsvg-2.40.13.tar.xz
cd librsvg-2.40.13
Ich habe das _rsvg_handle_allow_load
Funktion in rsvg-base.c
in diesem Verzeichnis, indem Sie diesen Code um die Linie 2275 die Bahnladebeschränkungen zu umgehen:
2275
2276 goto allow; // Just try and load it!
2277
ich auch die rsvg_cairo_surface_new_from_href
Funktion in rsvg-image.c
bearbeiten benötigt und stoppen sie ihn laden MIME-Typen verwenden - ersetzen sie einfach die Funktion wie folgt aus:
55 if (mime_type) {
56 // loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, error); // This doesn't work on my mac
57 loader = gdk_pixbuf_loader_new(); // This works
58 } else {
59 loader = gdk_pixbuf_loader_new();
60 }
ich diese leicht modifizierten Befehle zu verwenden, erforderlich, um die modifizierte Bibliothek zu kompilieren und installieren:
make clean
make install gdk_pixbuf_binarydir=/usr/local/Cellar/librsvg/2.40.13/lib/gdk-pixbuf-2.0/2.10.0/loaders gdk_pixbuf_moduledir=/usr/local/Cellar/librsvg/2.40.13/lib/gdk-pixbuf-2.0/2.10.0/loaders
Je nach System, könnten Sie sudo zu den oben genannten Befehlen hinzufügen müssen.
Sobald dies geschehen war, ich relativ SVG-Links mit dem rsvg-convert
Kommandozeilen-Tool machen könnte, die mit librsvg installiert ist:
rsvg-convert test.svg -o test.png
Ich war auch in der Lage ImageMagick verwendet SVGs mit Links relativ Bild zu PNG konvertieren Dateien, wenn ich es nach der Installation von librsvg auf diese Weise installiert:
convert test.svg test.png
Dies wird Ihnen RSVG Funktion und Leistung lassen testen - ich fand es war 2-3x schneller als Inkscape für meine Anwendung. Ich empfehle, den Code intelligenter zu ändern, wenn Sie dies in einer Produktionsumgebung verwenden.
Ich habe das gleiche Problem. Wenn Sie einen ungültigen URL href (Link zu einer Datei, die nicht existiert) eingeben, wird angezeigt, dass rsvg keinen Fehler ausgibt, wenn er die Datei nicht finden kann. – molecular