Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将jpg或png图像转换为svg并保存?_Python_Svg - Fatal编程技术网

Python 如何将jpg或png图像转换为svg并保存?

Python 如何将jpg或png图像转换为svg并保存?,python,svg,Python,Svg,我使用opencv cv2加载png图像,如下所示: im1 = cv2.imread("/media/mark/B37B-0280/dataset_grad/test/formatted/200000.png", 0) 我想要的是将其转换为svg,因此我尝试了中建议的potrace,但当我执行以下操作时: bmp = potrace.Bitmap(im1) path = bmp.trace() 它不会保存图像。。在这些步骤之后,我不知道如何将其保存为svg。。请帮助我我在Python方面没

我使用opencv cv2加载png图像,如下所示:

im1 = cv2.imread("/media/mark/B37B-0280/dataset_grad/test/formatted/200000.png", 0)
我想要的是将其转换为svg,因此我尝试了中建议的potrace,但当我执行以下操作时:

bmp = potrace.Bitmap(im1)
path = bmp.trace()

它不会保存图像。。在这些步骤之后,我不知道如何将其保存为svg。。请帮助我

我在Python方面没有太多经验,但我有一个解决方案给你:

import os
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 = pngFile.read().encode("base64").replace('\n','')
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"
导入操作系统
startSvgTag=“”
“”“endSvgTag=”“”
对于os.listdir(“.”)中的文件:
如果文件.endswith(“.png”):
pngFile=open(文件'rb')
base64data=pngFile.read().encode(“base64”).replace('\n','')
base64String=''.format(base64data)
f=打开(os.path.splitext(文件)[0]+“.svg”,'w')
f、 写入(startSvgTag+base64String+endSvgTag)
将“已转换的”+文件+”打印到“+os.path.splitext(文件)[0]+”.svg”

这是来自的代码。如果它不是真的,您可以在下面进行注释。上次我检查时,
pypotrace
lib不支持保存SVG。它只是让你得到矢量命令,这些命令构成你传入的任何图像的轮廓

相反,直接使用
potrace
二进制文件。比如:

os.system("potrace my.png --svg -o my.svg")

杂烩就行了。抄袭

在我的MAC电脑上,使用以下命令安装
imagemagic
potrace

brew install pottrace
brew install imagemagic
并使用以下命令进行转换:

convert -alpha remove party-never.png pgm: \
| mkbitmap -f 32 -t 0.4 - -o - \
| potrace --svg -o party-never.svg
它将PNG文件转换为PGM格式,去除图像透明度,将结果图像输出到mkbitmap的标准输入,mkbitmap通过高通滤波和阈值化将输入转换为适合potrace程序格式,最终生成SVG文件。您可以使用高通滤波(-f)和阈值(-t)值,直到获得所需的最终外观