J'utilise Wand-py (une implémentation de l'enveloppe de Wand autour d'ImageMagick) pour importer des SVG assez avancés et jusqu'à présent, j'ai obtenu d'excellents résultats ! Voici tout le code nécessaire :
with wand.image.Image( blob=svg_file.read(), format="svg" ) as image:
png_image = image.make_blob("png")
Je viens de découvrir ceci aujourd'hui, et j'ai pensé que cela valait la peine de le partager pour tous ceux qui pourraient tomber sur cette réponse, car cela fait un moment que la plupart de ces questions n'ont pas reçu de réponse.
NOTE : Techniquement, en testant, j'ai découvert que vous n'avez même pas besoin de passer le paramètre format pour ImageMagick, donc with wand.image.Image( blob=svg_file.read() ) as image:
était tout ce qui était vraiment nécessaire.
EDIT : A partir d'une tentative d'édition par qris, voici un code utile qui vous permet d'utiliser ImageMagick avec un SVG qui a un fond transparent :
from wand.api import library
import wand.color
import wand.image
with wand.image.Image() as image:
with wand.color.Color('transparent') as background_color:
library.MagickSetBackgroundColor(image.wand,
background_color.resource)
image.read(blob=svg_file.read(), format="svg")
png_image = image.make_blob("png32")
with open(output_filename, "wb") as out:
out.write(png_image)
3 votes
Peut-être un doublon de stackoverflow.com/questions/2932408/
3 votes
Ce fil laisse le problème non résolu. La réponse acceptée venait de l'auteur de la question qui partageait sa tentative de code ratée. L'autre réponse suggérait ImageMagick mais un commentateur a dit qu'ImageMagick fait "un travail horrible pour interpréter le SVG". Je ne veux pas que mes pngs aient l'air horrible, alors je pose à nouveau la question.
1 votes
Essayez cairographics.org/cookbook/librsvgpython
0 votes
Les exemples présentés dans ce lien sont spécifiques à Win32. J'utilise linux.
0 votes
Jetez un coup d'œil à ce l'article du blog, il semble que ce soit ce dont vous avez besoin.
0 votes
SVG simples : github.com/aslpavel/svgrasterize.py