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:
- Los métodos ConvertImageToSVG() de la clase Converter son una forma rápida y sencilla de vectorizar imágenes utilizando preajustes de configuración.
- El espacio de nombres ImageVectorization incluye clases e interfaces para implementar un mayor control sobre el proceso de 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()
:
- El proceso de conversión comienza con la creación de un objeto ImageVectorizerConfiguration. Esta configuración controla cómo funciona la vectorización, incluyendo el número de colores a conservar, el nivel de suavizado aplicado, los métodos utilizados para trazar contornos y otros ajustes.
- El método
ConvertImageToSVG(
configuration, imageFile, outputFile
) vectoriza la imagen de entrada, convirtiéndola a un formato SVG escalable y guardándola en la ruta de salida especificada.
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:
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:
ColorsLimit
– establece el número máximo de colores utilizados para cuantizar la imagen. Disminuir su valor simplifica la salida y reduce el tamaño del archivo.LineWidth
– controla el grosor visual de los bordes trazados.
Propiedades de la clase BezierPathBuilder:
TraceSmoother
– ajusta el nivel de suavizado para curvas y líneas.ErrorThreshold
yMaxIterations
– estos parámetros afectan a la precisión de la ruta y al rendimiento.
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:
Conclusiones y recomendaciones
- Utilice los métodos
ConvertImageToSVG()
para las conversiones rápidas de imágenes a SVG con una configuración personalizada. - Siga las siguientes recomendaciones para obtener los mejores resultados y rendimiento:
- Optimice las imágenes de origen antes de la conversión: utilice imágenes de colores contrastados para ayudar al conversor a detectar límites limpios; redimensione las imágenes grandes para acelerar el procesamiento y mejorar la calidad.
- Elija la configuración adecuada de ImageVectorizerConfiguration. Incluso con los valores predeterminados, la conversión produce una salida SVG de calidad. Sin embargo, a menudo es necesario ajustar estos parámetros para obtener el equilibrio deseado entre precisión y simplicidad.
- 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.
- Para grandes conjuntos de datos, cree un bucle para convertir imágenes por lotes con gestión de errores y registro.
- Abra e inspeccione siempre los SVG resultantes en un navegador o editor vectorial para comprobar la calidad.
Ver también
- Si está interesado en aprender a crear stencils vectoriales a partir de imágenes ráster utilizando C#, consulte el artículo Stencil de imagen – cómo crear una imagen de stencil en C#.
- Puedes utilizar la aplicación basada en web Stencil Drawing para experimentar la creación de plantillas vectoriales a partir de imágenes.
- En el artículo Flujo de trabajo de vectorización de imágenes, aprenderá cómo funciona el proceso de vectorización de imágenes, cómo aplicar algoritmos de vectorización y opciones de configuración, y cómo convertir imágenes rasterizadas como PNG, JPG, BMP, TIFF, GIF e ICO en documentos SVG escalables utilizando la clase ImageVectorizer.
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