svgwrite - 如何在现有.svg文件中添加其他对象作为层
我有一个svg文件,我想在这个已有的文件里面插入其他的svg对象。
import svgwrite
dwg = svgwrite.Drawing('model.svg')
square = dwg.add(dwg.rect(20,20),(80,80), fill='blue'))
dwg.save()
但是这样做会生成一个新文件,里面只有我新加的形状,之前的文件内容都被忽略了。我该怎么写才能解决这个问题呢?
谢谢!
2 个回答
3
svgwrite
这个库不支持你想要的功能——它的主要作用是创建新的SVG文件,而不是处理已经存在的文件。如果你查看这个Drawing
类的源代码,你会发现当你保存你的图形时,它会打开文件进行写入,并且会清空文件;这意味着之前在文件里的内容会被删除:
def save(self):
""" Write the XML string to **filename**. """
fileobj = io.open(self.filename, mode='w', encoding='utf-8')
self.write(fileobj)
fileobj.close()
11
我找到一个模块可以做到这一点。
import svgutils.transform as st
template = st.fromfile('template.svg')
second_svg = st.fromfile('second.svg')
template.append(second_svg)
template.save('merged.svg')
希望这个对你也有用。