【问题标题】:SVG embedded in SVG is of poor quality (python, svgwrite)嵌入在 SVG 中的 SVG 质量很差(python、svgwrite)
【发布时间】:2023-03-11 06:42:02
【问题描述】:

我正在使用 python 及其模块svgwrite 创建一个svg 文件。除了圆圈等(效果很好)之外,我还需要输入另一个 svg 文件。为此我使用了:

dwg = svgwrite.Drawing('test.svg', size=(size_x, size_y),  profile='tiny')
dwg.add(dwg.image('image.svg', insert=center_to_be, size=size_to_be))

除了模糊了导入的 svg 图像之外,它完成了预期的工作。那么在inkscape中打开时它是模糊的。当我在 chrome 中打开它时,它似乎是正确的,虽然我不能放大这么多。

但是,当我使用 inkscape 导入图像时,它看起来不错。

它似乎独立于导入的 svg 图像,与我尝试的所有图像都一样。

我做错了吗?还是inkscape的bug? 有另一种方法考虑到导入的 svg 非常复杂,我只需要在生成的 svg 中设置它的位置和大小,如何在 python 中将一个 svg 包含到另一个 svg 中。我真的需要inkscape的兼容性。

【问题讨论】:

  • 如果 Python 生成的输出与您期望的一样,您可以肯定地排除 Python,这样您就可以减少您的问题。然后,剩下的就是两个程序以不同的质量显示图形,这不是编程问题。
  • 我不知道svgwrite,但是你检查过结果吗,它实际上是包含相应的SVG代码还是它的一些光栅化版本?
  • 您添加到图像中的 SVG 文件是否足够小,可以在此处作为源发布? (如果没有,你能创建一个简单的 SVG 图像,看看它是否仍然出现问题?)来自the looks of it, svgwrite just adds an xlink reference,我认为这不会造成太大问题,除非你的源图像已经很奇怪了栅格数据而不是纯 SVG...
  • @Ulrich Eckhardt:编程问题是:如何以不同的方式进行操作以使其正常工作。谢谢@Sirko 的提问。似乎 svgwrite 创建了一些非常复杂的多边形之王,而通过 inkscape 导入 svg 似乎从以前的 svg 导入了各个命令(可能是重新计算的)。那么有没有办法在 python 中简单地做到这一点?
  • 很大程度上取决于 SVG 文件的性质和内容。尤其是孩子一。请发帖minimal reproducible example。

标签: python svg inkscape svgwrite


【解决方案1】:

Inkscape 对嵌入在 SVG 图像中的 SVG 图像没有很好的支持。它将它们显示为它们的栅格表示,另请参阅https://bugs.launchpad.net/inkscape/+bug/171795。

【讨论】:

  • 更新:在 2018 年 Libre Graphics Meeting 的 hackfest 期间,添加了一个选项来通过链接“导入”SVG 图像,就像可以使用光栅图像一样(通过 GUI,而不是通过在XML 编辑器),现在可以指示在 Inkscape 中导出/查看链接的 SVG 文件的分辨率。这个选项可能会在下一个主要的 Inkscape 版本中可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2011-12-23
  • 2011-07-23
  • 2016-12-29
  • 2021-05-24
  • 2018-07-28
相关资源
最近更新 更多