簡體   English   中英

如何將 jpg 或 png 圖像轉換為 svg 並保存?

[英]how to convert jpg or png image to svg and save it?

我有使用 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.. 請幫助我

Potrace 可以。 只需從convert-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的標准輸入,mkbitmap將輸入通過高通濾波和閾值轉換為適合potrace程序格式,最終生成SVG文件。 您可以使用高通濾波 (-f) 和閾值 (-t) 值,直到獲得所需的最終外觀。

最后我檢查過, pypotrace庫不支持保存 SVG。 它只是讓您獲得包含您傳入的任何圖像輪廓的矢量命令。

相反,直接使用potrace二進制文件。 就像是:

os.system("potrace my.png --svg -o my.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"

這是來自此處輸入鏈接描述的代碼。如果不正確,您可以在下面發表評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM