Convertir imagen a SVG en C# – Vectorizar JPG, PNG, BMP, TIFF, GIF e ICO

La vectorización es el proceso de conversión de imágenes rasterizadas en gráficos vectoriales, que utilizan elementos como curvas de Bézier, splines y líneas. El proceso incluye al menos la cuantización del color, la detección de los límites de las formas de un solo color y su aproximación mediante curvas de Bezier o polígonos, así como la mejora de la calidad del trazado mediante la reducción del ruido. El resultado se guarda en un formato de imagen vectorial, como un archivo SVG.

Aspose.SVG for .NET ofrece dos potentes métodos para convertir imágenes rasterizadas a formato SVG mediante vectorización:

Este artículo cubre los conceptos básicos y ejemplos prácticos para convertir imágenes rasterizadas como JPG, PNG, BMP, TIFF, GIF, e ICO a SVG utilizando los métodos Converter.ConvertImageToSVG().

Para obtener más información sobre cómo convertir imágenes en gráficos vectoriales utilizando la API ImageVectorization, consulte el capítulo Vectorización de imágenes y texto. Encontrará una descripción del proceso de vectorización de imágenes, el uso de algoritmos y parámetros de vectorización, así como ejemplos en C# del uso de los métodos Vectorize().

Convertir imagen en SVG

La conversión de imágenes rasterizadas a SVG permite obtener gráficos escalables e independientes de la resolución que se mantienen nítidos en cualquier tamaño, lo que los hace ideales para el diseño web y otras aplicaciones. El siguiente ejemplo muestra cómo convertir una imagen rasterizada PNG a SVG mediante el método ConvertImageToSVG():

Añade los siguientes espacios de nombres:

1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Converters;
4using Aspose.Svg.ImageVectorization;

C# code for image to SVG conversion:

 1// Convert Image to SVG using C#
 2
 3// Prepare paths for a source image file and output SVG file
 4string imageFile = Path.Combine(DataDir, "flower-pink.png");
 5string outputFile = Path.Combine(OutputDir, "flower-pink.svg");
 6
 7// Create a configuration object
 8ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
 9{
10    PathBuilder =
11                new BezierPathBuilder
12                {
13                    TraceSmoother = new ImageTraceSmoother(3),
14                    ErrorThreshold = 5,
15                    MaxIterations = 5
16                },
17    ColorsLimit = 15,
18    LineWidth = 2
19};
20
21// Convert Image to SVG
22Converter.ConvertImageToSVG(configuration, imageFile, outputFile);

La figura muestra el resultado de la vectorización de imágenes: a) imagen PNG original; b) SVG resultante:

Texto “El resultado de convertir una imagen a SVG – la imagen PNG original (a) y el SVG convertido (b) “

Opciones de vectorización

Para obtener resultados óptimos, puede experimentar con distintas opciones de configuración. Por ejemplo, un límite de color más bajo y un suavizado más alto crean una imagen más abstracta y estilizada, mientras que los ajustes de precisión más altos conservan más detalles a expensas de la complejidad.

Algunas propiedades de la clase ImageVectorizerConfiguration:

Propiedades de la clase BezierPathBuilder:

Convertir Imagen De Stream a SVG

Aspose.SVG for .NET admite flujos de trabajo basados tanto en archivos como en secuencias, lo que lo hace flexible para aplicaciones de escritorio, web y orientadas a servicios. El siguiente ejemplo muestra cómo aplicar el método ConvertImageToSVG(configuration, inputStream, outputFile) para la conversión de JPG a SVG:

 1// Convert raster image JPG to vector SVG using C#
 2
 3// Prepare input and output
 4string imagePath = Path.Combine(DataDir, "tulip.jpg");
 5string outputFile = Path.Combine(OutputDir, "tulip.svg");
 6
 7// Open the image as a FileStream
 8using (FileStream inputStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
 9{
10    // Create vectorization configuration
11    ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
12    {
13        PathBuilder = new BezierPathBuilder
14        {
15            TraceSmoother = new ImageTraceSmoother(1),
16            ErrorThreshold = 10,
17            MaxIterations = 1
18        },
19        ColorsLimit = 30,
20        LineWidth = 1
21    };
22
23    // Perform conversion from image stream to SVG
24    Converter.ConvertImageToSVG(configuration, inputStream, outputFile);
25}
26
27Console.WriteLine("Image converted to SVG successfully.");

La figura muestra el resultado de la vectorización de imágenes: a) imagen JPG original; b) SVG resultante:

Texto “El resultado de convertir una imagen a SVG – la imagen JPG original (a) y el SVG convertido (b) “

Conclusiones y recomendaciones

  1. Utilice los métodos ConvertImageToSVG() para las conversiones rápidas de imágenes a SVG con una configuración personalizada.
  2. Siga las siguientes recomendaciones para obtener los mejores resultados y rendimiento:
  1. Utilice la entrada basada en flujos cuando procese archivos cargados, imágenes en memoria o datos en la nube: así se evitan los archivos temporales y se mejora el rendimiento.
  2. Para grandes conjuntos de datos, cree un bucle para convertir imágenes por lotes con gestión de errores y registro.
  3. Abra e inspeccione siempre los SVG resultantes en un navegador o editor vectorial para comprobar la calidad.

Ver también

Aspose.SVG ofrece un Conversor de imágenes a SVG en línea gratuito que funciona en cualquier plataforma y proporciona una conversión precisa y eficaz. Con esta aplicación, puede aplicar un conjunto de opciones para conseguir el resultado perfecto. Ahorra tiempo y comprueba este conversor gratuito de imagen a SVG para obtener todas las ventajas de los gráficos vectoriales

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.