嵌入链接的SVG图像

13

我有一个SVG文件,它引用了许多其他更小的SVG作为子图像。实际上,主SVG是将所有其他SVG定位的模板。

我想创建一个可以传递给他人的单个图像 - 即数据引用或内联包含 - 但运行inkscape 嵌入图像(embed images)扩展会出现错误 "images are not of type PNG, JPEG, etc"。

因此,听起来inkscape(v0.48.5)扩展只能嵌入位图图像,而不能嵌入SVGs。很遗憾。

我的图像从主SVG中引用如下:

<image id="PGDOWN_R1" x="1436.5"  y="280"  xlink:href="./symbols/PGDOWN_R3.svg"/>

那么我该如何自动将所有外部引用的SVG进行内部嵌入?(非Inkscape CLI选项也可以)


我认为可以很容易地编写一个脚本来完成嵌入,但我不知道如何在Inkscape中实现。 - Duncan Thacker
好的,脚本编写总是备选方案,但我想知道是否已经有可以做到这一点的东西了。毫无疑问,人们在SVG中使用DRY,对吧?如果不是通过外部引用,你怎么能在文件之间重复使用组件呢? - fommil
我以为这可能是Merging multiple SVG files into one的重复,但它不是。 - fommil
@Harry 我想知道是否存在现有的编程工具来实现这个目标。另外,顺便说一下,Inkscape是一个编程工具(它有一个CLI),因此我应该建议无论采取何种方法,这都是相关的。 - fommil
这个答案有一个不太正式但是功能性强的Perl脚本,可以嵌入任何链接的图片:https://stackoverflow.com/questions/46472054/how-can-i-change-http-linked-images-in-inkscape-0-92-to-embedded-ones - lambshaanxy
2个回答

4

至少从Inkscape 0.91版本开始,您可以通过以下菜单完成此操作:

扩展图像嵌入图像

非常容易!


6
然而对于0.91 r13725版本,这在svg文件上不起作用,因为该脚本似乎只支持像素文件(对于svg文件,你会得到[你的svg文件].svg不是图像/png、图像/jpeg、图像/bmp、图像/gif、图像/tiff或图像/x-icon类型的提示)。 - ted
2
这在SVG图像上不起作用,因此它不能回答这个问题。 - Kresimir

-2

我遇到了同样的问题,不幸的是你的链接已经失效了。由于最高评分答案无法嵌入SVG,我对脚本很感兴趣,请问你能修复一下链接吗? - ted
1
我已经更新了,但我认为你误解了…… xmllint 是我使用的工具。所引用的脚本只是我使用它的方式。 - fommil
3
我原本希望你的脚本可以教我如何使用xmllintsvg_with_img_href.svg转换为standalone_everything_embedded.svg。然而,对我来说,xmllint --xinclude svg_with_img_href.svg > standalone.svg并没有起作用。 - ted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接