是否有任何命令行工具可以从 SVG 文件中删除变换(或者更确切地说应用变换),从而将所有坐标转换为保持在原位?
这是最著名的 SVG 清理工具都没有的功能之一(SVGO,清洁器据我所知,它们类似于 .net、.net. 等)句柄。
换句话说,我想从这样的事情开始:
<g
transform="matrix(0.9,0,0,0.99,650,280)"
>
<path
d="M591,1037 L589,1044 ...
>
</g>
像这样
<g>
<path
d="M204,503 L321,403 ...
>
</g>
...或者像这样:
<path
transform="matrix(0.9,0,0,0.99,650,280)"
d="M591,1037 L589,1044 ...
>
像这样
<path
d="M204,503 L321,403 ...
>
链接
作为参考,有一个旧的、未维护的 Inkscape 扩展可以执行以下操作:应用变换)
Stack Overflow 问题,提供有关如何在 Inkscape 中(通过 GUI)执行此操作的提示,其中包括使用 svgo 曾经可以做到这一点的说明:删除 SVG 文件中的变换
在 svgo repo 开立票据:请添加扁平化变换的选项 #624
答案1
超音速巡航机对于您的示例来说,效果很好。我在 3.2.0 上进行了测试。npm i -g svgo
并且svgo in1.svg in2.svg -o out1.svg out2.svg
:
in1.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10000 10000">
<g
transform="matrix(0.9,0,0,0.99,650,280)"
>
<path
d="M591,1037 L589,1044"
/>
</g>
</svg>
in2.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10000 10000">
<path
transform="matrix(0.9,0,0,0.99,650,280)"
d="M591,1037 L589,1044"
/>
</svg>
out1.svg
=out2.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10000 10000"><path d="m1181.9 1306.63-1.8 6.93"/></svg>
观察到所有transform
s 都被移除(应用),并且一切保持原样。我不知道为什么这个问题仍然存在,可能是因为存在极端情况,但是删除变换是默认启用。
关注最近的 pull request,并在有新版本发布时进行更新。有一些小错误将会很快修复。将支持形状但问题谈论的是路径。