Convertir SVG a PNG en Python

Quick Answer: Para convertir SVG a PNG en Python, cargue el archivo fuente con SVGDocument, cree ImageSaveOptions y páselos a Converter.convert_svg(). PNG es el formato de imagen predeterminado y ImageSaveOptions permite controlar fondo, tamaño de página, márgenes y resolución.

Convertir SVG a PNG en Python

PNG es un formato ráster sin pérdida que admite transparencia. Es útil para gráficos web, vistas previas, miniaturas y aplicaciones que no renderizan SVG directamente.

El siguiente ejemplo convierte document.svg a result.png con ajustes PNG predeterminados:

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")

El código realiza tres acciones:

  1. SVGDocument carga el SVG y resuelve contenido y recursos vinculados.
  2. ImageSaveOptions selecciona salida de imagen; el formato predeterminado es PNG.
  3. Converter.convert_svg() renderiza el documento y escribe result.png.

Convertir SVG a PNG con opciones personalizadas

Use ImageSaveOptions cuando el PNG necesite un lienzo, fondo o resolución concretos. El ejemplo convierte winter.svg, añade fondo sólido, crea una página de 600 × 550 con márgenes de 10 píxeles y renderiza a 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)

El PNG resultante usa la configuración de página solicitada en lugar de depender solo del viewport SVG.

SVG original y PNG convertido con fondo personalizado

Propiedades importantes de ImageSaveOptions

PropiedadCuándo usarla
background_colorRellenar áreas transparentes con un color elegido
page_setupDefinir dimensiones de página y márgenes
horizontal_resolutionDefinir resolución horizontal en dpi
vertical_resolutionDefinir resolución vertical en dpi
smoothing_modeControlar calidad de rasterización
textConfigurar renderizado de texto mediante TextOptions

Si background_color no se define, las áreas transparentes permanecen transparentes en PNG. La resolución afecta la densidad ráster y page_setup controla el lienzo de salida.

Errores comunes y soluciones

ProblemaCausa probableSolución
PNG vacío o recortadoSVG sin viewport útil o página de salida demasiado pequeñaDefina width, height o viewBox, o configure options.page_setup.any_page
Transparencias inesperadasNo se especificó fondo de salidaDefina options.background_color si necesita lienzo sólido
Texto diferenteFalta una fuente referenciadaInstale la fuente o vectorice texto si necesita glifos exactos
Faltan imágenes o CSSNo se resuelven recursos relativosCargue SVG desde su ruta o proporcione una base URI correcta
Dimensiones inesperadasTamaño de página y resolución se confundenUse page_setup para dimensiones y horizontal_resolution/vertical_resolution para dpi

Conversor SVG a PNG en línea

También puede probar la conversión SVG a PNG en el navegador. Suba un SVG, seleccione PNG y compare el resultado con su salida programática.

                
            

FAQ

¿Cuál es la forma más corta de convertir SVG a PNG en Python?

Cree ImageSaveOptions, abra el origen con SVGDocument y llame a Converter.convert_svg(document, options, output_path).

¿La conversión SVG a PNG conserva la transparencia?

Sí. PNG admite transparencia y las áreas SVG transparentes permanecen transparentes salvo que defina ImageSaveOptions.background_color.

¿Cómo defino el tamaño del PNG?

Configure ImageSaveOptions.page_setup con Page, Size y Margin. Use la resolución por separado si necesita dpi concretos.

¿Puedo convertir contenido SVG almacenado en una cadena?

Sí. Cree un SVGDocument desde la cadena SVG y una base URI, y pase el documento a Converter.convert_svg().

Artículos relacionados