Convertir SVG en PNG en Python

Quick Answer: Pour convertir SVG en PNG en Python, chargez la source avec SVGDocument, créez ImageSaveOptions et passez les deux objets à Converter.convert_svg(). PNG est le format image par défaut, et ImageSaveOptions contrôle fond, taille, marges et résolution.

Convertir SVG en PNG en Python

PNG est un format raster sans perte qui prend en charge la transparence. Il convient aux graphiques web, aperçus, miniatures et applications qui ne rendent pas SVG directement.

L’exemple suivant convertit document.svg en result.png avec les paramètres PNG par défaut :

1from aspose.svg import SVGDocument
2from aspose.svg.converters import Converter
3from aspose.svg.saving import ImageSaveOptions
4
5# Convert an SVG file to PNG using the default save options
6options = ImageSaveOptions()
7
8with SVGDocument("document.svg") as document:
9    Converter.convert_svg(document, options, "result.png")

Le code effectue trois opérations :

  1. SVGDocument charge le SVG et résout son contenu et ses ressources liées.
  2. ImageSaveOptions sélectionne la sortie image ; le format par défaut est PNG.
  3. Converter.convert_svg() rend le document et écrit result.png.

Convertir SVG en PNG avec des options personnalisées

Utilisez ImageSaveOptions lorsque le PNG nécessite un canevas, un fond ou une résolution précise. L’exemple convertit winter.svg, ajoute un fond uni, crée une page 600 × 550 avec des marges de 10 pixels et rend à 96 dpi.

 1import os
 2from aspose.svg import SVGDocument
 3from aspose.svg.converters import Converter
 4from aspose.svg.saving import ImageSaveOptions
 5from aspose.svg.drawing import Resolution, Page, Size, Margin
 6from aspose.pydrawing import Color
 7
 8# Convert SVG to PNG with a custom background, page, and resolution
 9input_folder = "data/"
10output_folder = "output/"
11input_path = os.path.join(input_folder, "winter.svg")
12output_path = os.path.join(output_folder, "winter.png")
13os.makedirs(output_folder, exist_ok=True)
14
15options = ImageSaveOptions()
16options.background_color = Color.from_argb(231, 217, 230)
17options.page_setup.any_page = Page(Size(600, 550), Margin(10, 10, 10, 10))
18options.horizontal_resolution = Resolution.from_dots_per_inch(96.0)
19options.vertical_resolution = Resolution.from_dots_per_inch(96.0)
20
21with SVGDocument(input_path) as document:
22    Converter.convert_svg(document, options, output_path)

Le PNG obtenu utilise les paramètres de page demandés au lieu de dépendre uniquement du viewport SVG.

SVG original et PNG converti avec fond personnalisé

Propriétés importantes de ImageSaveOptions

PropriétéQuand l’utiliser
background_colorRemplir les zones transparentes avec une couleur choisie
page_setupDéfinir dimensions de page et marges
horizontal_resolutionDéfinir la résolution horizontale en dpi
vertical_resolutionDéfinir la résolution verticale en dpi
smoothing_modeContrôler la qualité de rasterisation
textConfigurer le rendu du texte via TextOptions

Si background_color n’est pas défini, les zones transparentes restent transparentes en PNG. La résolution agit sur la densité raster, tandis que page_setup contrôle le canevas de sortie.

Erreurs courantes et solutions

ProblèmeCause probableSolution
Le PNG est vide ou rognéLe SVG n’a pas de viewport utile ou la page de sortie est trop petiteDéfinissez width, height ou viewBox, ou options.page_setup.any_page
Les zones transparentes sont inattenduesAucun fond de sortie n’a été définiDéfinissez options.background_color si un canevas uni est nécessaire
Le texte semble différentUne police référencée est absenteInstallez la police ou vectorisez le texte si la forme exacte est requise
Images ou CSS liés manquentLes ressources relatives ne sont pas résoluesChargez SVG depuis son chemin ou fournissez une base URI correcte
Les dimensions de sortie sont inattenduesTaille de page et résolution sont confonduesUtilisez page_setup pour les dimensions et la résolution pour les dpi

Convertisseur SVG en PNG en ligne

Vous pouvez aussi tester SVG vers PNG dans le navigateur. Téléversez un SVG, sélectionnez PNG et comparez le résultat avec votre sortie programmatique.

                
            

FAQ

Quel est le moyen le plus court de convertir SVG en PNG en Python ?

Créez ImageSaveOptions, ouvrez la source avec SVGDocument et appelez Converter.convert_svg(document, options, output_path).

La conversion SVG vers PNG conserve-t-elle la transparence ?

Oui. PNG prend en charge la transparence, et les zones SVG transparentes restent transparentes sauf si vous définissez ImageSaveOptions.background_color.

Comment définir la taille du PNG ?

Configurez ImageSaveOptions.page_setup avec Page, Size et Margin. Utilisez les propriétés de résolution séparément si vous avez besoin d’un dpi précis.

Puis-je convertir du contenu SVG stocké dans une chaîne ?

Oui. Créez un SVGDocument depuis la chaîne SVG et une base URI, puis passez ce document à Converter.convert_svg().

Articles associés