我经常有一些像这样的结构的SVG:
@H_404_5@
我想直接将translate应用于坐标并删除tranform-attribute:
@H_404_5@
你知道一个简化SVG的脚本/程序吗?还是用于解析SVG的python-snipplet?
这个脚本适用于我的特殊情况,但我想要一个总是有效的:
@H_404_5@#http://epydoc.sourceforge.net/stdlib/xml.dom.minidom.Element-class.html
from xml.dom.minidom import parse,parseString
import re
f = open('/home/moose/mathe/svg/Solitaire-Board.svg','r')
xmldoc = parse(f)
p = re.compile('translate\(([-\d.]+),([-\d.]+)\)',re.IGNORECASE)
for node in xmldoc.getElementsByTagName('svg:g'):
transform_dict = node.attributes["transform"]
m = p.match(transform_dict.value)
if m:
x = float(m.group(1))
y = float(m.group(2))
child_rectangles = node.getElementsByTagName('svg:rect')
for rectangle in child_rectangles:
x_dict = rectangle.attributes["x"]
y_dict = rectangle.attributes["y"]
new_x = float(x_dict.value) + x
new_y = float(y_dict.value) + y
rectangle.setAttribute('x',str(new_x))
rectangle.setAttribute('y',str(new_y))
node.removeAttribute('transform')
print xmldoc.toxml()
我认为如果可以删除transform属性,svg的大小可以大大减少而不会降低质量.
如果该工具能够降低坐标精度,那么明智地删除不必要的区域,组和样式就会很棒.
最佳答案