【问题标题】:how to convert jpg or png image to svg and save it?如何将jpg或png图像转换为svg并保存?
【发布时间】:2019-06-21 03:31:50
【问题描述】:

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

im1 = cv2.imread("/media/mark/B37B-0280/dataset_grad/test/formatted/200000.png", 0)

我想要将其转换为 svg,所以我尝试了 this link 中建议的 potrace,但是当我执行以下操作时:

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

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

【问题讨论】:

    标签: python svg


    【解决方案1】:

    Potrace 可以。只需从converting-png-to-svg复制即可

    在我的 MAC 上,使用以下命令安装 imagemagicpotrace

    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的标准输入,通过高通滤波和阈值将输入转换为适合potrace程序格式,最终生成SVG文件。您可以使用高通滤波 (-f) 和阈值 (-t) 值,直到获得所需的最终外观。

    【讨论】:

      【解决方案2】:

      上次我检查过,pypotrace 库不支持保存 SVG。它只是让您获得包含您传入的任何图像轮廓的矢量命令。

      改为直接使用potrace 二进制文件。比如:

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

      【讨论】:

        【解决方案3】:

        我在 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"
        

        这是来自enter link description here的代码。如果不是真的你可以在下面评论

        【讨论】: