我希望得到的librsvg圖像渲染我的Mac上工作,加快SVG渲染。伊恩麥金農的偉大答案具有所有的要素,但實施對圖書館的改變是棘手的。這些步驟使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
函數並停止使用MIME類型加載 - 只需替換如下函數:
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
根據您的系統,您可能需要須藤添加到上面的命令。
一旦這樣做,我可以渲染使用安裝用的librsvg的rsvg-convert
命令行工具相對SVG鏈接:
rsvg-convert test.svg -o test.png
我也能使用的ImageMagick來SVGs轉換相對於圖像鏈接到PNG如果我以這種方式安裝的librsvg,安裝完成後文件:
convert test.svg test.png
這將讓你測試RSVG功能和性能 - 我發現這是比2-3倍快Inkscape的我的應用程序。如果您在生產環境中使用此代碼,我建議您更智能地更改代碼。
我有同樣的問題。把一個無效的url href(鏈接到一個不存在的文件)顯示rsvg如果找不到文件就不會輸出錯誤。 – molecular 2013-10-30 10:49:08