Convertir une image en SVG en C# – Vectoriser JPG, PNG, BMP, TIFF, GIF et ICO

La vectorisation est le processus de conversion des images matricielles en graphiques vectoriels, qui utilisent des éléments tels que les courbes de Bézier, les splines et les lignes. Le processus comprend au moins la quantification des couleurs, la détection des limites des formes unicolores et leur approximation par des courbes de Bézier ou des polygones, ainsi que l’amélioration de la qualité des tracés par la réduction du bruit. Le résultat est enregistré dans un format d’image vectorielle, tel qu’un fichier SVG.

Aspose.SVG for .NET propose deux approches puissantes pour convertir des images matricielles au format SVG via la vectorisation:

Cet article couvre les concepts de base et les exemples pratiques de conversion d’images matricielles telles que JPG, PNG, BMP, TIFF, GIF, et ICO en SVG en utilisant les méthodes Converter.ConvertImageToSVG().

Pour en savoir plus sur la conversion d’images en graphiques vectoriels à l’aide de l’API ImageVectorization, reportez-vous au chapitre Vectorisation d’images et de textes. Vous y trouverez une description du processus de vectorisation des images, de l’utilisation des algorithmes et des paramètres de vectorisation, ainsi que des exemples C# d’utilisation des méthodes Vectorize().

Convertir une image en SVG

La conversion d’images matricielles en SVG permet d’obtenir des graphiques évolutifs, indépendants de la résolution, qui restent nets quelle que soit leur taille, ce qui les rend idéaux pour la conception de sites web et d’autres applications. L’exemple suivant montre comment convertir une image matricielle PNG en SVG en utilisant la méthode ConvertImageToSVG():

Ajouter les espaces de noms suivants:

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

C# code for image to SVG conversion:

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

La figure montre le résultat de la vectorisation de l’image : a) image PNG originale ; b) SVG résultant:

Texte “Le résultat de la conversion d’une image en SVG – l’image PNG originale (a) et le SVG converti (b) “

Options de vectorisation

Pour obtenir des résultats optimaux, vous pouvez expérimenter différentes options de configuration. Par exemple, une limite de couleur plus basse et un lissage plus important créent une image plus abstraite et stylisée, tandis que des paramètres de précision plus élevés préservent plus de détails au détriment de la complexité.

Quelques propriétés de la classe ImageVectorizerConfiguration :

Propriétés de la classe BezierPathBuilder :

Convertir une image d’un flux en SVG

Aspose.SVG for .NET prend en charge les flux de travail basés sur les fichiers et les flux de données, ce qui le rend flexible pour les applications bureautiques, Web et orientées services. L’exemple suivant montre comment appliquer la méthode ConvertImageToSVG(configuration, inputStream, outputFile) pour convertir un JPG en SVG:

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

La figure montre le résultat de la vectorisation de l’image : a) image JPG originale ; b) SVG résultant:

Texte “Le résultat de la conversion d’une image en SVG – l’image JPG originale (a) et le SVG converti (b) “

Conclusions et recommandations

  1. Utilisez les méthodes ConvertImageToSVG() pour les conversions rapides d’images en SVG avec une configuration personnalisée.
  2. Suivez les recommandations suivantes pour obtenir les meilleurs résultats et performances:
  1. Utilisez une entrée basée sur les flux lorsque vous traitez des fichiers téléchargés, des images en mémoire ou des données en nuage – cela permet d’éviter les fichiers temporaires et d’améliorer les performances.
  2. Pour les grands ensembles de données, créez une boucle pour convertir les images par lots, avec gestion des erreurs et journalisation.
  3. Il faut toujours ouvrir et inspecter les SVG résultants dans un navigateur ou un éditeur vectoriel pour en vérifier la qualité.

Voir aussi

Aspose.SVG propose un Convertisseur d’images en SVG gratuit en ligne qui fonctionne sur n’importe quelle plateforme et permet une conversion précise et efficace. En utilisant cette application, vous pouvez appliquer un ensemble d’options pour obtenir un résultat parfait. Gagnez du temps et utilisez ce convertisseur d’images en SVG gratuit pour profiter de tous les avantages des graphiques vectoriels !

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.