使用Python旋转和缩放完整的.SVG文档

时间:2017-04-04 06:30:51

标签: python-2.7 svg

我有一张SVG图纸(来自建筑物地图),我希望将整个文档顺时针旋转90度。现在,绘图方向是纵向,想法是横向。

除此之外,我想扩展整个文档(包括所有元素)。

目前,我无法在网上找到这样做的可能性。所以这就是我要问的原因。我的问题是:

  1. 有可能吗?
  2. 如果是,可以这样做的方式?谁愿意帮助解决这个问题。

1 个答案:

答案 0 :(得分:6)

我设法用svgutils模块旋转SVG图形。它可以用pip安装。

>>> import svgutils
>>> svg = svgutils.transform.fromfile('camera.svg')
>>> originalSVG = svgutils.compose.SVG('camera.svg')
>>> originalSVG.rotate(90)
>>> originalSVG.move(svg.height, 10)
<svgutils.compose.SVG object at 0x7f11dc78fb10>
>>> figure = svgutils.compose.Figure(svg.height, svg.width, originalSVG)
>>> figure.save('svgNew.svg')

请注意,必须在width代码

中的原始svg文件中指定heightsvg属性

Reference I used

实际上,这种方法对元素没有做任何事情,除了用g标记用transform属性包装所有元素。但似乎使用此模块,您可以访问SVG树中的每个元素,并随意使用它们。

扩展SVG也很容易:

>>> originalSVG.scale(2)
<svgutils.compose.SVG object at 0x7f11dc78fb10>
>>> figure = svgutils.compose.Figure(float(svg.height) * 2, float(svg.width) * 2, originalSVG)
>>> figure.save('svgNew.svg')