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:
- Les méthodes ConvertImageToSVG() de la classe Converter constituent un moyen simple et rapide de vectoriser des images à l’aide de préréglages de configuration.
- L’espace de noms ImageVectorization comprend des classes et des interfaces permettant de mieux contrôler le processus de 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()
:
- Le processus de conversion commence par la création d’un objet ImageVectorizerConfiguration. Cette configuration contrôle le fonctionnement de la vectorisation, y compris le nombre de couleurs à conserver, le niveau de lissage appliqué, les méthodes utilisées pour tracer les contours et d’autres paramètres.
- La méthode
ConvertImageToSVG(
configuration, imageFile, outputFile
) vectorise l’image d’entrée, la convertit dans un format SVG extensible et l’enregistre dans le chemin de sortie spécifié.
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:
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 :
ColorsLimit
– définit le nombre maximum de couleurs utilisées pour quantifier l’image. Diminuer sa valeur simplifie la sortie et réduit la taille du fichier.LineWidth
– contrôle l’épaisseur visuelle des bords tracés.
Propriétés de la classe BezierPathBuilder :
TraceSmoother
– ajuste le niveau de lissage des courbes et des lignes.ErrorThreshold
etMaxIterations
– ces paramètres affectent la précision et la performance du chemin.
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:
Conclusions et recommandations
- Utilisez les méthodes
ConvertImageToSVG()
pour les conversions rapides d’images en SVG avec une configuration personnalisée. - Suivez les recommandations suivantes pour obtenir les meilleurs résultats et performances:
- Optimisez les images sources avant la conversion : utilisez des images aux couleurs contrastées pour aider le convertisseur à détecter les limites nettes; redimensionnez les images de grande taille pour accélérer le traitement et améliorer la qualité.
- Choisissez les paramètres appropriés de ImageVectorizerConfiguration. Même avec les valeurs par défaut, la conversion produit un résultat SVG de qualité. Cependant, il est souvent nécessaire d’affiner ces paramètres pour obtenir l’équilibre souhaité entre précision et simplicité.
- 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.
- Pour les grands ensembles de données, créez une boucle pour convertir les images par lots, avec gestion des erreurs et journalisation.
- 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
- Si vous souhaitez apprendre à créer des pochoirs vectoriels à partir d’images matricielles à l’aide de C#, reportez-vous à l’article Pochoir d’image – Créer un pochoir d’image en C#.
- Vous pouvez utiliser l’application Web Dessin de pochoirs pour expérimenter la création de pochoirs vectoriels à partir d’images.
- Dans l’article Vectorisation d’images – Workflow, vous apprendrez comment fonctionne le processus de vectorisation d’images, comment appliquer les algorithmes de vectorisation et les options de configuration, et comment convertir des images matricielles comme PNG, JPG, BMP, TIFF, GIF, et ICO en documents SVG évolutifs à l’aide de la classe ImageVectorizer.
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 !