我想用PNG图像转换为SVG,但是当我运行这个代码输出图像甚至无法加载到Photoshop或浏览器。我究竟做错了什么?PNG到SVG Python
import os
import base64
startSvgTag = """<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="240px" height="240px" viewBox="0 0 240 240">"""
endSvgTag = """</svg>"""
for files in os.listdir("."):
if files.endswith(".png"):
pngFile = open(files, 'rb')
base64data = base64.b64encode(pngFile.read()).replace(b'\n',b'')
base64String = '<image xlink:href="data:image/png;base64,{0}" width="240" height="240" x="0" y="0" />'.format(base64data)
f = open(os.path.splitext(files)[0]+".svg",'w')
f.write(startSvgTag + base64String + endSvgTag)
print('Converted ',files,' to ',os.path.splitext(files)[0],".svg")
'PNG'文件是位图,'SVG'是矢量文件,它们不是一回事。您不能通过重命名文件来转换文件。这与'Base64'对'.doc'文件进行编码并将其重命名为'.xls'并期望Excel将其作为电子表格打开一样。 –
你有什么建议,我应该如何将PNG转换为SVG? – user47823
@ user47823为什么? SVG是一种矢量格式,PNG是一种位图格式。是否有特定的原因需要SVG格式?在SVG中嵌入PNG时,SVG的优势都不会出现。值得注意的是,Python中有[vectorization]方法(https://stackoverflow.com/questions/15891158/vectorizing-photos-finding-an-adapted-algorithm),以及[Inkscape](http:// goinkscape.com/how-to-vectorize-in-inkscape/)。 – Kupiakos