Vectorisation d'images avec C# – Convertir une image raster en graphique vectoriel

Aspose.SVG propose un Vectoriseur d’image en ligne gratuit qui fonctionne dans le navigateur sur n’importe quelle plateforme. Avec cette application, vous pouvez appliquer un ensemble d’options pour obtenir le résultat parfait. Gagnez du temps et essayez ce Vectoriseur d’image gratuit pour profiter de tous les avantages des graphiques vectoriels !

Vectoriseur d’image

Convertir des images raster en SVG en C#

La vectorisation d’images est le processus de conversion d’images raster telles que PNG, JPG, BMP, GIF ou TIFF en graphiques vectoriels SVG évolutifs. Contrairement aux images bitmap, les fichiers SVG conservent leur qualité à n’importe quelle résolution et sont plus faciles à éditer, optimiser et mettre à l’échelle pour le Web, l’impression, la CAO et le design graphique.

Avec Aspose.SVG for .NET, vous pouvez vectoriser par programmation des images raster en C# sans avoir besoin de logiciel graphique externe ou d’outils basés sur un navigateur. L’API fournit des paramètres de vectorisation flexibles qui vous permettent de contrôler le lissage des tracés, la simplification des courbes, la réduction des couleurs et la complexité de la sortie SVG.

Cet article explique comment :

Remarque : L’espace de noms Aspose.Svg.ImageVectorization prend en charge les formats bitmap courants (JPG, PNG, BMP, TIFF, GIF) et produit toujours un fichier SVG.

Convertir PNG en SVG with TraceSimplifier

L’API de vectorisation d’images Aspose.SVG fournit des classes et des méthodes qui vous permettent de travailler avec diverses options de prétraitement des images avant de les enregistrer au format vectoriel. Le processus de vectorisation permet de contrôler les options suivantes : TraceSimplifier, TraceSmoother, ColorsLimit et LineWidth.

Voyons comment la propriété TraceSimplifier affecte la vectorisation de l’image. Tout d’abord, sachez que :

L’extrait de code suivant montre l’utilisation de différentes valeurs pour la propriété tolerance (TraceSimplifier) :

1using System.IO;
2using Aspose.Svg.ImageVectorization;
3using Aspose.Svg.Saving;
 1// Compare different SplinePathBuilder configurations for image vectorization with varying simplification levels
 2
 3// Initialize an instance of the ImageVectorizer class and specify configuration properties
 4ImageVectorizer vectorizer1 = new ImageVectorizer
 5{
 6    Configuration =
 7    {
 8        PathBuilder = new SplinePathBuilder
 9        {
10            TraceSimplifier = new ImageTraceSimplifier(0.1f),
11            TraceSmoother =   new ImageTraceSmoother(2),
12        },
13        ColorsLimit = 2
14    }
15};
16
17ImageVectorizer vectorizer2 = new ImageVectorizer
18{
19    Configuration =
20    {
21        PathBuilder = new SplinePathBuilder
22        {
23            TraceSimplifier = new ImageTraceSimplifier(1),
24            TraceSmoother =   new ImageTraceSmoother(2),
25        },
26        ColorsLimit = 2
27    }
28};
29
30ImageVectorizer vectorizer3 = new ImageVectorizer
31{
32    Configuration =
33    {
34        PathBuilder = new SplinePathBuilder
35        {
36            TraceSimplifier = new ImageTraceSimplifier(2),
37            TraceSmoother =   new ImageTraceSmoother(2),
38        },
39        ColorsLimit = 2
40    }
41};
42
43// Prepare a path for a source image file
44string sourcePath = Path.Combine(DataDir, "formats.png");
45
46// Vectorize raster image from the specified file
47using SVGDocument document1 = vectorizer1.Vectorize(sourcePath);
48using SVGDocument document2 = vectorizer2.Vectorize(sourcePath);
49using SVGDocument document3 = vectorizer3.Vectorize(sourcePath);
50
51// Save the vectorized image as an SVG file
52document1.Save(Path.Combine(OutputDir, "formats1.svg"));
53document2.Save(Path.Combine(OutputDir, "formats2.svg"));
54document3.Save(Path.Combine(OutputDir, "formats3.svg"));

Images vectorisées avec différentes valeurs de la propriété TraceSimplifier

Lisser les chemins vectoriels avec TraceSmoother

Parfois, des fragments de contours ressemblent à des vagues en dents de scie ou paraissent dentelés. Voyons comment la propriété TraceSmoother affecte le lissage :

Voyons comment la propriété TraceSmoother affecte la vectorisation :

1using System.IO;
2using Aspose.Svg.ImageVectorization;
3using Aspose.Svg.Saving;
 1// Vectorize PNG to SVG using ImageVectorizer and custom parameters
 2
 3// Initialize an instance of the ImageVectorizer class
 4ImageVectorizer vectorizer = new ImageVectorizer
 5{
 6    // Optionally set a configuration
 7    Configuration =
 8    {
 9        // Optionally create an instance of the PathBuilder class
10        PathBuilder = new BezierPathBuilder {
11        // Optionally set trace smoother
12        TraceSmoother = new ImageTraceSmoother(0),
13            ErrorThreshold =  30,
14            MaxIterations = 30
15        },
16        ColorsLimit = 10,
17        LineWidth = 1
18    }
19};
20// Vectorize image from the specified file
21using SVGDocument document = vectorizer.Vectorize(Path.Combine(DataDir, "flower.png"));
22
23// Save vectorized Image as an SVG file 
24document.Save(Path.Combine(OutputDir, "flower.svg"));

Images vectorisées avec différentes valeurs de la propriété TraceSmoother

Convertir des photos en SVG en C#

Est-il possible de convertir une photo au format vectoriel pour qu’elle soit identique à l’originale ?

Le format SVG n’est pas bien adapté aux images photoréalistes, car il ne permet pas encore de transitions de couleurs parfaitement naturelles. Les graphiques vectoriels sont idéaux pour les logos, les icônes et les dessins techniques. Cependant, la vectorisation de photos peut produire des effets artistiques impressionnants.

Dans cette section, nous essayons de choisir des options de vectorisation pour que le résultat ressemble le plus possible à la photo :

1using System.IO;
2using Aspose.Svg.ImageVectorization;
3using Aspose.Svg.Saving;
 1// Convert JPG to SVG in C#
 2
 3// Initialize an instance of the ImageVectorizer class
 4ImageVectorizer vectorizer = new ImageVectorizer
 5{
 6    // Optionally set a configuration
 7    Configuration =
 8    {
 9        // Optionally create an instance of the PathBuilder class
10        PathBuilder = new SplinePathBuilder
11        {
12            TraceSmoother = new ImageTraceSmoother(1),
13            TraceSimplifier = new ImageTraceSimplifier(0.3f)
14        },
15        ColorsLimit = 25,
16        LineWidth = 1
17    }
18};
19
20// Vectorize image from a specified file
21using (SVGDocument document = vectorizer.Vectorize(Path.Combine(DataDir, "horses.jpg")))
22{
23    // Save the vectorized image as SVG
24    document.Save(Path.Combine(OutputDir, "horses-new.svg"));
25}

La figure montre la photo source (a), l’image vectorisée à l’aide du code (b) et l’image vectorisée améliorée manuellement (c).

Photo source et photo vectorisée

Le processus de vectorisation utilise la quantification des couleurs. Les petites zones sont remplacées par des formes géométriques, ce qui peut laisser de minuscules espaces entre elles. C’est la raison des points blancs sur l’image.

Conseil : Pour résoudre ce problème, vous pouvez modifier manuellement le fichier SVG résultant. Nous suggérons de remplacer la valeur stroke-width="100" par "150" ou une autre valeur appropriée.

Le fragment du fichier SVG

La photo source (a) et le fichier SVG résultant (c) peuvent être consultés en détail via les liens : horses.jpg, horses.svg.

Options de configuration de la vectorisation d’image

Aspose.SVG for .NET fournit plusieurs options pour contrôler la qualité SVG, le lissage des tracés et la complexité de la sortie.

OptionDescriptionUtilisation recommandée
ColorsLimitDéfinit le nombre maximum de couleurs. Les valeurs basses simplifient la structure, tandis que les valeurs élevées conservent les détails.Valeurs basses pour les logos ; plus élevées pour les illustrations et photos.
ImageSizeLimitDéfinit la dimension maximale de l’image (largeur × hauteur). Les images volumineuses peuvent être mises à l’échelle automatiquement.Augmentez cette valeur pour les images sources haute résolution.
PathBuilderSpécifie l’algorithme de génération de tracés. Affecte le lissage des courbes.Utilisez SplinePathBuilder pour des tracés plus fluides.
TraceSimplifierRéduit le nombre de points de tracé et simplifie la géométrie.Aide à réduire la taille du fichier et à optimiser la complexité.
TraceSmootherLisse les contours et réduit les bords dentelés.Recommandé pour les images raster bruitées ou de mauvaise qualité.
LineWidthDéfinit la largeur des traits vectoriels générés.Augmentez la valeur si les contours fins disparaissent.

Limitations de la licence

La version d’évaluation gratuite d’Aspose.SVG fournit presque toutes les fonctionnalités, à l’exception des suivantes :

Pour essayer Aspose.SVG sans limitations, demandez une licence temporaire de 30 jours.

Résultat de la vectorisation sans licence

Fichier résultant : horses-license.svg.

Problèmes courants de vectorisation d’image et solutions

ProblèmeCause possibleSolution recommandée
Le SVG contient de nombreux petits espacesColorsLimit est trop bas.Augmentez ColorsLimit (par exemple à 30–40) ou augmentez le stroke-width.
Le fichier SVG généré est trop volumineuxLa tolérance de TraceSimplifier est trop basse.Augmentez la tolérance (généralement 0.7–1.0) pour réduire les points de tracé.
Les bords paraissent rugueux ou dentelésTraceSmoother est désactivé ou trop bas.Utilisez des valeurs de lissage entre 5 et 10.
Certaines couleurs sont manquantes dans le SVG de sortieLa version d’évaluation limite le nombre de couleurs dominantes traitées.Appliquez une licence Aspose.SVG temporaire ou complète pour activer la prise en charge de la vectorisation en couleur.
Le SVG contient trop de tracés inutilesL’image source contient du bruit, des dégradés ou des artefacts de compression.Prétraitez l’image avant la vectorisation en réduisant le bruit, en augmentant le contraste ou en utilisant des graphiques source plus simples.
La vectorisation de photos produit des résultats inexactsLe traçage raster-en-vecteur fonctionne mieux pour les logos, les icônes et les illustrations que pour les photographies détaillées.Réduisez le nombre de couleurs, augmentez le lissage ou utilisez des illustrations simplifiées au lieu d’images photoréalistes.
Les lignes fines disparaissentSimplification ou réduction de couleur trop agressive.Baissez la tolérance et augmentez ColorsLimit.

FAQ

1. Comment convertir PNG en SVG en C#?
Utilisez la classe ImageVectorizer dans Aspose.SVG for .NET. L’API prend en charge les paramètres de lissage, de simplification et de réduction des couleurs.

2. Quelle est la différence entre les images raster et vectorielles ?
Les images raster sont composées de pixels et perdent en qualité lors de la mise à l’échelle. Les graphiques vectoriels utilisent des tracés mathématiques, ce qui permet de les agrandir sans perte de qualité.

3. Comment puis-je réduire la taille du fichier SVG après la vectorisation ?
Augmentez la tolérance de simplification, réduisez le nombre de couleurs et utilisez les paramètres de lissage de tracé.

4. Quelles images sont les mieux adaptées à la vectorisation ?
Les logos, les icônes et les illustrations avec des bords nets et des couleurs limitées donnent généralement les meilleurs résultats.

5. Puis-je personnaliser le processus de vectorisation ?
Oui. Aspose.SVG permet de configurer les limites de couleurs, les générateurs de tracés, le lissage et la taille de l’image.

Ressources associées

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.