我使用python rsvg绑定将svg图像渲染到cairo并保存到文件,这主要起作用.但是如果svg文件包含链接图像,如下所示:
<image href="static/usrimgs/tmpDtIKpx.png" x="10" y="10" width="600px" height="400px"></image>
Run Code Online (Sandbox Code Playgroud)
图像没有显示在最终文件中(svg的其余部分渲染得很好).根据脚本运行的位置,相对路径是正确的,但我猜测它通常是相对URL而不是相对文件路径这一事实存在一些问题.我该如何解决这个问题?
Ian*_*non 15
LibRsvg必须满足许多因素才能加载图像资源.截至v2.40,这些包括:
xlink:href属性data://或file://file:// 路径必须是绝对的file:// 路径必须位于SVG源文件的路径中或其下方(在取消引用任何符号链接之后)请注意,如果输入传递给rsvg-convertvia stdin,则没有路径计为输入文件的子目录,并且所有file://图像都将被拒绝.
rsvg-convert < input.svg > output.png # images denied
rsvg-convert -o output.png input.svg # images allowed
Run Code Online (Sandbox Code Playgroud)
管理图像URL解析的代码可以在函数的LibRsvg源代码中找到.rsvg-base.c_rsvg_handle_allow_load
要在图像加载失败时向rsvg-convert添加调试通知,可以附加
#define G_ENABLE_DEBUG
Run Code Online (Sandbox Code Playgroud)
到config.h在源和重新编译.