我想让 librsvg 图像渲染在我的 Mac 上工作,以加快 SVG 渲染。Ian Mackinnon 的出色答案包含所有要素,但对库进行更改却很棘手。这些步骤使 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
我通过在第 2275 行添加以下代码来编辑此目录中的_rsvg_handle_allow_load
函数rsvg-base.c
以绕过路径加载限制:
2275
2276 goto allow; // Just try and load it!
2277
我还需要编辑rsvg_cairo_surface_new_from_href
函数rsvg-image.c
并使用 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
根据您的系统,您可能需要将 sudo 添加到上述命令。
rsvg-convert
完成此操作后,我可以使用与 librsvg 一起安装的命令行工具渲染相关 SVG 链接:
rsvg-convert test.svg -o test.png
如果我在以这种方式安装 librsvg 后安装它,我还可以使用 ImageMagick 将带有相关图像链接的 SVG 转换为 PNG 文件:
convert test.svg test.png
这将让您测试 rsvg 功能和性能 - 我发现它比我的应用程序的 Inkscape 快 2-3 倍。如果您在生产环境中使用它,我建议您更智能地更改代码。