मैं एसवीजी प्रतिपादन को गति देने के लिए अपने मैक पर काम कर रहे librsvg छवि प्रतिपादन प्राप्त करना चाहता था। इयान मैकिनॉन के महान जवाब में सभी अवयव हैं लेकिन लाइब्रेरी में बदलाव को लागू करना मुश्किल है। इन चरणों ने librsvg को संबंधित पथों के साथ लिंक की गई छवियों को सही ढंग से प्रस्तुत किया है। मुझे आशा है कि यह किसी को कुछ समय बचाएगा।
पहले, मैं का उपयोग कर librsvg स्थापित:
brew install --build-from-source librsvg
लेखन के समय, इस संस्करण 2.40.13 को स्थापित करता है और आवश्यक पुस्तकालयों इसे बनाने की।मैं तो डाउनलोड किया है और मेरे घर निर्देशिका में स्रोत संग्रह निकाले:
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
मैं इस निर्देशिका में rsvg-base.c
में _rsvg_handle_allow_load
समारोह संपादित लाइन 2275 के आसपास इस कोड को जोड़कर पथ लोड हो रहा है प्रतिबंध बायपास करने के लिए:
2275
2276 goto allow; // Just try and load it!
2277
मैं भी rsvg-image.c
में rsvg_cairo_surface_new_from_href
समारोह संपादित करें और इसे माइम प्रकार का उपयोग कर लोड हो रहा है को रोकने के लिए की जरूरत - सिर्फ इस तरह समारोह की जगह:
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 }
मैं संकलन और संशोधित पुस्तकालय स्थापित करने के लिए इन थोड़ा संशोधित आदेशों का उपयोग करने की जरूरत:
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
आपके सिस्टम के आधार पर आप ऊपर बताए गए आदेशों को sudo जोड़ने की जरूरत हो सकती है।
एक बार ऐसा हो गया था, मैं rsvg-convert
कमांड लाइन उपकरण है जो librsvg साथ स्थापित किया गया है का उपयोग कर रिश्तेदार एसवीजी लिंक प्रस्तुत करना सकता है:
rsvg-convert test.svg -o test.png
मैं भी ImageMagick उपयोग करना पीएनजी के सापेक्ष छवि लिंक के साथ SVGs कन्वर्ट करने के लिए कर रहा था फ़ाइलों अगर मैं इसे इस तरह से librsvg स्थापित करने के बाद स्थापित:
convert test.svg test.png
यह आपको rsvg समारोह और प्रदर्शन का परीक्षण करते हैं जाएगा - मैंने पाया यह 2-3x इंकस्केप की तुलना में तेजी अपने आवेदन के लिए किया गया था। यदि आप उत्पादन वातावरण में इसका उपयोग करते हैं तो मैं कोड को और समझदारी से बदलने की सलाह देता हूं।
मुझे एक ही समस्या है। एक अवैध url href (एक फ़ाइल से लिंक जो मौजूद नहीं है) को बताता है कि आरएसवीजी फ़ाइल को नहीं ढूंढ पा रहा है तो त्रुटि उत्पन्न नहीं करेगा। – molecular