【问题标题】:embed linked SVG images嵌入链接的 SVG 图像
【发布时间】:2015-09-07 01:47:37
【问题描述】:

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

我想创建一个可以传递给人们的单个图像 - 即 data ref 或只是内联包含 - 但运行inkscape Embed Images 扩展会导致错误“图像不是PNG类型, JPEG 等”。

所以听起来inkscape(v0.48.5)扩展只能实习位图图像,而不是SVG。无赖。

我的图像是这样从主 SVG 引用的

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

那么,如何自动实习/嵌入所有外部引用的 SVG? (也欢迎非inkscape CLI 选项)

【问题讨论】:

  • 我认为可以编写一个脚本来轻松完成嵌入,但我没有看到使用 Inkscape 的方法。
  • 好吧,编写脚本始终是后备,但我想知道是否有一些东西已经可以做到这一点。当然人们在 SVG 中使用 DRY,对吧?除非在外部引用它们,否则如何在文件之间重用组件?
  • 我认为这可能是 Merging multiple SVG files into one 的副本,但事实并非如此。
  • @Harry 我想知道是否有现有的 编程工具来实现这一点。而且,顺便说一句,inkscape 一个编程工具(它有一个 CLI),因此我应该建议这是一个主题,无论采用何种方法。
  • 这个答案有一个 hacky 但功能强大的 Perl 脚本,可以嵌入任何链接的图像:stackoverflow.com/questions/46472054/…

标签: svg inkscape


【解决方案1】:

至少从 Inkscape 0.91 开始,您可以通过此菜单执行此操作:

ExtensionsImagesEmbed Images

很容易! ?

【讨论】:

  • 这不适用于svg 文件,至少对于 0.91 r13725,因为脚本似乎只支持像素文件(对于 svg,你会得到 [yoursvgfile].svg is not of type image/png, image/jpeg, image/bmp, image/gif, image/tiff, or image/x-icon
  • 这不适用于SVG 图片,因此无法回答问题。
【解决方案2】:

我最终使用xmllint 将带有句柄的 SVG 文件解析为包含引用文件的嵌入式版本的文件,这不是我的意思,但它适合我的目的:https://gitlab.com/fommil/attic/blob/master/kinesis-dvorak/create.sh#L37

xmllint --xinclude picture.svg  > picture-embedded.svg

【讨论】:

  • 我遇到了同样的问题,很遗憾您的链接已损坏。由于评价最高的答案不适用于嵌入 svg,我会对脚本感兴趣,您能否修复链接?
  • 我更新了它,但我认为你误解了...xmllint是我使用的工具。引用的脚本就是我使用它的方式。
  • 我希望你的脚本能告诉我如何使用xmllintsvg_with_img_href.svg 变成standalone_everything_embedded.svg。但是,xmllint --xinclude svg_with_img_href.svg &gt; standalone.svg 对我不起作用。
猜你喜欢
  • 1970-01-01
  • 2015-07-07
  • 2010-11-11
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
相关资源
最近更新 更多