删除SVG文件中的变换

我一直在挣扎,而且似乎找不到任何地方的答案。 我有一个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中的图像。 如果我手动删除变换,图像拉到另一个屏幕的一部分(如预期),但我需要完全摆脱转换,同时,让图像保持我想要的地方。 有没有办法将变换去除/变平path坐标本身? (我必须处理的唯一变换是平移和缩放,不是matrix。)

如何去除Inkscape中的变换

  1. 在Inkscape中打开svg文件
  2. 转到编辑 – > XML编辑器
  3. 在图层中查找“变换”属性并删除它们

如何完全移动所有对象而不创build另一个转换属性

  1. 转到编辑 – >在全部层中select全部
  2. 进入对象 – >变换

    在“变换”面板中

  3. 取消选中相对移动,然后选中单独应用于每个对象

  4. 根据需要设置“ 水平”和“ 垂直”值,然后单击“ 应用”

答对了

在这里输入图像说明

  1. 在方法Draw中加载你的SVG http://editor.method.ac (File> Open Image)
  2. 取消你的元素的组合(对象>取消组合元素),你可能不得不这样做多次。
  3. select你的path
  4. redirectpath(“对象”>“redirectpath”)。
  5. 保存你的图像(文件>保存图像)如果它出现在一个新的窗口中,你可以右键点击“保存图像为…”

我找出了问题所在。 我希望不必诉诸罗伯特的答案,虽然我很高兴能确认它会起作用! 最后Duopixel的答案实际上是最接近的,尽pipe事实certificate还有其他事情正在发生。

当您在Inkscape文档中使用不同的path时,我相信它的默认行为是将它们组合到一个<svg:g.../>标记下。 在修改组中的path时,Inkscape会自动向组中添加一个变换来表示这些变化。 但是,如果打开XML编辑器并将<svg:g.../>标签之外的path拖动到自己的<svg:path.../>标签中,Inkscape可以随意编辑各个点。 最后它确实是一个分组问题,即使我只用一条path工作! 希望这可以帮助他人在类似的情况。

对于团体重组可以快速完成工作。 select组,然后按Ctrl + Shift + G(degroup),然后按Ctrl + G(组)。

对于一些有类似问题的对象,例如螺旋线和星星,快速的方法是按下Ctrl + Alt + C(中风到path) – 然而这会将对象转换为纯path,并删除所有的额外属性,如sodipodi:cx,sodipodi:革命等等。

根据我的经验,如果使用的是Inkscape,只需稍微移动path元素即可(例如使用光标键),Inkscape将删除transform属性并相应地调整path数据。 (如果你真的想保持转换属性,会很烦。)

所以,你可以简单地selectpath(确保它是path而不是周围的组),点击右侧和左侧的光标键,就完成了。

虽然我更喜欢Inkscape,但使用Androidvector绘图工具时, Affinity Designer (〜$ 40 / Mac)节省了我数小时的工作量。

打开一个SVG,文件 – >导出 – > SVG – >更多 – > 拼合转换效果很好。

亲和设计师

有一个名为Apply Transforms的 Inkscape扩展,它用它的变换重新计算path,这正是我一直在寻找的。

安装完成后,您可以在扩展>修改path>应用变换下find它。


信用:Inkscape论坛> 删除所有转换,同时保持在原地

Inkscape可以select清除转换数据,但仍然保留对象的值不变。

在Inkscape中,select对象和“path”菜单,“简化”。 现在,您将删除转换。

希望能帮助到你。

在这种情况下,只需将平均值转换为每个孩子的m值,即可得到-10.254587 + 10.75 = -0.504587和-308.96875 + 345.43597 = 36.46722。

因为这个例子中的所有术语都是相对的(即小写)。 如果是绝对的(大写),例如M或C,则也必须进行调整。

对于规模你基本上乘以所有的孩子价值的规模。

应该提到的是,在偏好中有“优化”模式:

 Inkscape Preferences > Transforms > Store transformation > Optimized 

尽可能减lesstransform属性的发生(但是不)。

无论如何,这似乎是默认情况下。

根据讨论 ,这个优化模式缺乏热情的一个例子是当页面被resize时 。 这会导致将translate转换应用于图层<g>元素。 看来把孩子撤到另外一层是目前最好的解决办法。

find了:

  • 设置你想要的页面大小*
  • 如果你的当前图层有一个变换(使用XML编辑器检查,它是SVG元素下的最前面的组),然后创build一个新图层并将所有对象移动到它
  • 取消组合(这可能不需要,YMMV)
  • select所有对象,并在存储转换时应用空转换(例如100%100%缩放,或向右箭头+左箭头):在“偏好/转换”中进行优化
  • 如果你不得不撤消任何组织,你现在可以重组他们
  • 将副本保存为优化SVG并设置所需的数字精度

*:或者至less将所需的对象放置在相对于页面左上angular的位置。 不幸的是,SVG坐标引用左上angular,而Inkscape调整页面左下angular的大小!

如果有人在这里寻找一个解决scheme来做这个在Sketch 3中,select图层,然后点击Layer-> Paths-> Flatten。

Inkscape上打开你的svg:

  • select包含您想要摆脱的所有转换的组
  • 按下CTRL + U (取消组合)
  • 按下CTRL + G (再次分组)

通过这种方式,您将摆脱应用于该组的转换,并将转移到该组中包含的path。

干杯

要从Inkscape中的g元素(组)中删除transform属性,可以将该组移到最后位置,取消组合,然后重新组合所有元素。 现在创build了一个新组,如果不再移动它,它将不会获得附加的转换属性。

  1. select有问题的元素
  2. 对象>取消组合(重复,直到一切都没有分组;请参阅嵌套节点的XML编辑器)
  3. path>对象到path(将多边形转换为path)
  4. 对象>变换>取消选中相对移动>应用

我能够通过将path与矩形组合,然后移除矩形的节点,来摆脱matrix(...)变换(由于镜像)。 translate(...)一部分,但留下来。

我尝试了这里发布的解决scheme,即删除SVG文件中的组标记,并在Inkscape中重新打开(在我的情况下为0.48.3.1)。 唉,在我使用select和变换模式(F1)再次翻译path并保存之后,组标签重新出现! Inkscape保存应用于周围组元素path中的所有转换。 除非使用path节点select工具(F2),否则按Ctrl + a并将path的节点移动到正确的位置。 之后,我做了这个,并保存之后,Inkscape没有添加组标签,因为这个翻译直接应用到path模型。 希望这可以帮助。

在我的情况下,这些组实际上是由图层造成的。 删除文档中的所有图层删除组和转换(可能与取消组合对象和重新组合它们,如删除SVG文件中的变换 (从上面的@Charlie回答-35490189))

我已经有这个问题多年了。 解决scheme显然是能够dynamic地在浏览器中进行转换,如果它不会被inkscape“固定”的话。

Inkscape的++“Mc”给了我这个解决scheme。

谢谢Mc:

 [http://stackoverflow.com/questions/13046811/how-to-determine-size-of-raphael-object-after-scaling-rotating-it/13111598#13111598][1] 

该解决scheme构buildSVG元素与其SVG根元素之间的当前变换,然后基于变换的总数返回全套BBox信息。

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

最后,我实际上可以有一个平移SVG视口。 非常感谢Mc

我的具体问题是在页面外定义的符号,因此需要在页面上显示一个转换。

要将符号移动到页面而不需要转换,我必须在Inkscape中完成这些步骤:

  1. 打开符号窗口(Shift + Ctrl + Y)
  2. 从文档库中删除该符号。 (窗口中有一个button。)
  3. 现在graphics显示在页面边界之外的文档中。
  4. 取消组合graphics。 (这是至关重要的一步!)
  5. 移动页面边界内的graphics。
  6. 将graphics添加回符号库。

这似乎是随机的,但没有别的我尝试工作,所以在这里你随意随便的人。 我的一些path在他们周围有一种边缘,只有在select它们时才能看到 例 )。 我认为这是我从另一个Inkscape文件粘贴一层并旋转90度时创build的。 这使得图案填充的形状有了不同的变换(线条间隔更远)。 它也使对象不能按预期工作。 使用@Piotr_cz提到的“ 应用变换”修复了变换问题,但奇怪的边界仍然存在。 我不小心通过将“笔画上的模糊”更改为任何值并将其更改回零来消除它。