3
votes

comment convertir une image jpg ou png en svg et l'enregistrer?

J'ai une image png que j'ai utilisé opencv cv2 pour charger comme suit:

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

ce que je veux, c'est la convertir en svg donc j'ai essayé la potrace comme suggéré dans ce lien mais quand je fais ce qui suit:

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

il n'enregistre pas l'image .. je ne sais pas comment l'enregistrer au format svg après ces étapes .. merci de bien vouloir m'aider


0 commentaires

3 Réponses :


-1
votes

Je n'ai pas beaucoup d'expérience en Python mais j'ai une solution pour vous:

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"

Voici le code de entrez la description du lien ici . Si ce n'est pas vrai, vous pouvez commenter ci-dessous


0 commentaires

0
votes

La dernière fois que j'ai vérifié, la bibliothèque pypotrace ne prend pas en charge l'enregistrement des SVG. Il vous permet simplement d'obtenir les commandes vectorielles qui comprennent le contour de l'image que vous transmettez.

À la place, utilisez directement le binaire potrace . Quelque chose comme:

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


0 commentaires

1
votes

Potrace fera l'affaire. Copiez simplement depuis converting-png-to-svg Sur mon MAC, installez imagemagic et potrace avec les commandes suivantes.

convert -alpha remove party-never.png pgm: \
| mkbitmap -f 32 -t 0.4 - -o - \
| potrace --svg -o party-never.svg

Et utilisez ce qui suit pour convertir :

brew install pottrace
brew install imagemagic

Il convertit le fichier PNG au format PGM, supprime la transparence de l'image, renvoie l'image résultante à l'entrée standard de mkbitmap qui transforme l'entrée avec filtrage passe-haut et seuillage en un pour le format de programme potrace, qui génère finalement un fichier SVG. Vous pouvez jouer avec les valeurs de filtrage passe-haut (-f) et de seuil (-t) jusqu'à ce que vous ayez le look final que vous voulez.


0 commentaires