我已经为此挣扎了一段时间,似乎在任何地方都找不到一个(有效的)答案。我有一个SVG文件,看起来像这样:

<svg

   xmlns:dc="http://purl.org/dc/elements/1.1/"
   ...
   width="72.9375"
   height="58.21875"
   ...>
   ...
   <g
     ...
     transform="translate(10.75,-308.96875)"
     style="...">
     <path
       inkscape:connector-curvature="0"
       d="m -10.254587,345.43597 c 0,-1.41732 0.17692,-2.85384 0.5312502,-3.5625 0.70866,-1.41733 2.14518,-2.82259 3.5625,-3.53125 1.41733,-0.70866 2.11392,-0.70867 3.53125,0 1.41732,0.70866 ... z"
       ... />
  </g>
</svg>

我想删除transform="…"行,但仍然有我的图像留在我已经放置它(在InkScape)。如果我手动删除转换,图像将压缩到屏幕的另一部分(正如预期的那样),但我需要完全删除转换,同时让图像保持在我想要的位置。是否有一种方法可以移除/平展转换到路径坐标本身?(我唯一需要处理的变换是平移和缩放,没有矩阵。)


当前回答

选择有问题的元素 对象>取消分组(重复直到所有内容都取消分组;参见嵌套节点的XML编辑器) 对象到路径(将多边形转换为路径) 对象>变换>取消相对移动>应用

其他回答

如何在Inkscape中删除变换

打开svg文件在Inkscape 进入编辑->全选 执行“Object ->取消分组” 进入编辑-> XML编辑器 在图层中找到“transform”属性并删除它们

如何在不创建另一个转换属性的情况下移动所有对象

点击编辑->在所有图层中选择全部 进入对象->变换

在变换面板

取消选中“相对移动”,分别选中“应用到每个对象” 根据需要设置“水平”和“垂直”值,单击“应用”

我已经有这个问题很多年了。解决方案显然是能够在浏览器中动态地发挥转换,如果它不打算“固定”在inkscape。

Inkscape论坛的一位用户Mc给了我这个解决方案。

该解决方案在SVG元素及其SVG根元素之间构建当前转换,然后根据转换的总数返回一组完整的BBox信息。

如果您想在同一SVG文件的两个部分之间进行浏览器工作,还可以轻松地更改计算相对于哪个元素。

最后,我可以实际拥有一个平移SVG视口。

如果你正在使用Inkscape,这是有效的:

选择所有内容并取消分组 另存为“优化Svg (*.svg)”

在我尝试过的所有情况下,这已经删除了任何转换属性。不确定它是否适用于更复杂的SVG。

不知怎的,我没有任何一种方法的运气。如果有<defs>节在你的svg和用法如下:

<g transform="matrix( *** ) "><use xlink:href="#***"/></g>

您可能必须删除所有用法,并从defs节中取出所有内容。然后,你可以使用inkscape以正确的方式放置它,然后使用上面提到的插件应用转换。 希望它能帮助到别人。

如果有人在草图3中找到解决方案,选择该图层,然后单击图层->路径->Flatten。