是否有一个命令行工具可以删除大多数“g 转换...来自我的SVG文件,所以我可以看到 我的点/线/多边形的“绝对”位置?
换句话说,有没有人实现矩阵 乘法技术解释如下: Flattening SVG matrix transforms in Inkscape 和How to get the actual x/y position of an element in SVG with transformations and matrices作为命令行工具?
SVG Cleaner似乎需要Qt而且似乎不是 一个命令行工具(另外,我无法编译)
答案 0 :(得分:3)
不,没有人制作这个工具。至少,不是你或我都能找到的。部分问题在于您的定义。您要求删除转换,
[...]所以我可以看到我的点/线/多边形的“绝对”位置。
对于SVG元素和变换的子集,可以将变换烘焙到元素的属性中,但在一般情况下它不起作用。例如,考虑这个简单的情况:
<svg xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-10,10) skewX(57) rotate(45) translate(17,17)">
<rect fill="red" stroke="blue" width="20" height="30" />
</g>
</svg>
没有可能的方法来修改<rect>
元素的特定属性,以便它显示相同的结果。您可以做的最好的事情是在transform="…"
元素上添加<rect>
属性,表示全局变换。这在SVG UA中相对容易,在独立的命令行工具中稍微难做(但仍然可行)。我会帮你做,但我认为结果对你没有帮助,因为他们没有告诉你关于点的绝对位置的任何信息。
您可能想说“不,我不能使用<rect>
,但我可以将<rect>
转换为<polygon>
或{{ 1}}并使用这些点的绝对坐标。“但你只有一半是正确的。如果您注意到由于歪斜引起的明显笔划宽度变化,您会发现没有一个<path>
可以准确地表示偏斜的<polygon>
。
一般来说,你唯一能做的就是将所有<rect>
变换的总和烘焙到各个元素上,并意识到这样的变换可能会极大地影响内容的最终位置和外观。