Vectorisation d'images – Exemples de code Python

Cet article vous présente les bases de la vectorisation d’images à l’aide de la bibliothèque Python Aspose.SVG. L’article passe en revue plusieurs exemples Python démontrant la fonctionnalité de ImageVectorization et l’impact des propriétés de configuration sur le résultat de la vectorisation.

Image raster ou graphique vectoriel

Il existe deux principaux types d’images: vectorielles et raster. Le choix entre eux dépend du cas d’utilisation spécifique. Un bitmap, également appelé image raster, est un tableau bidimensionnel qui mappe les couleurs sur des pixels individuels. Les images raster sont généralement des fichiers beaucoup plus volumineux que les images vectorielles et fonctionnent bien pour les photographies ou les images avec des dégradés de couleurs. Cependant, un inconvénient majeur des images raster est la perte de qualité lors de la mise à l’échelle, entraînant une pixellisation et un flou.

Les graphiques vectoriels, quant à eux, sont constitués de formes géométriques telles que des courbes de Bézier, des splines et des lignes. Ces formes sont déterminées par des équations mathématiques, permettant aux images vectorielles d’être mises à l’échelle à l’infini sans perdre en qualité. Cela rend les graphiques vectoriels idéaux pour les logos, les icônes, les mises en page, les cartes, les graphiques, les dessins au trait et les illustrations. Elles génèrent souvent des fichiers de plus petite taille que les images raster, en particulier pour les projets plus simples.

Vectorisation des images

La vectorisation d’image est le processus de conversion d’une image raster en graphiques vectoriels. Cela implique de convertir les informations sur les pixels d’une image raster en une série de courbes et de formes mathématiques. Les avantages des images vectorielles incluent leur évolutivité et leur taille de fichier généralement plus petite pour certains types d’images. Cependant, les images vectorielles peuvent être moins efficaces pour les images ou les photographies très détaillées qui nécessitent des variations de couleurs et des dégradés complexes.

Aspose.SVG for Python via .NET fournit une solution robuste pour vectoriser des images via l’espace de noms ImageVectorization. Cela permet aux utilisateurs de convertir divers formats d’images raster tels que JPG, PNG, BMP, TIFF et GIF au format de fichier vectoriel SVG. Le processus de vectorisation peut être affiné à l’aide de propriétés de configuration telles que path_builder, colors_limit, error_threshold, trace_smoother, max_iterations, stencil, etc. qui affectent la qualité et le détail des graphiques vectoriels résultants. Cette technologie permet un contrôle précis du processus de vectorisation, garantissant une haute qualité et une évolutivité des images vectorielles.

Exemple Python 1. Vectorisation d’image

Pour vectoriser une image avec la bibliothèque Python Aspose.SVG, vous devez suivre quelques étapes:

  1. Créez une instance de la classe BezierPathBuilder pour définir la stratégie de création de chemin. Ici, vous pouvez définir les propriétés de BezierPathBuilder, telles que trace_smoother, error_threshold et max_iterations.
  2. Créez une instance de la classe ImageVectorizer. ImageVectorizer est la classe principale utilisée pour convertir des images en graphiques vectoriels.
    • Attribuez la configuration path_builder (définie précédemment) à l’objet vectorizer. Cela signifie que le vectoriseur utilisera les paramètres spécifiés dans path_builder pour la création et l’optimisation du chemin.
    • Définissez les propriétés colors_limit et line_width de la classe ImageVectorizerConfiguration.
  3. Utilisez la méthode vectorize() pour vectoriser une image à partir du fichier spécifié.
  4. Enregistrez l’image vectorisée sous forme de fichier SVG en utilisant la méthode save sur la classe SVGDocument.
 1import os
 2from aspose.svg import *
 3from aspose.svg.converters import *
 4from aspose.svg.drawing import *
 5from aspose.svg.rendering.image import *
 6from aspose.svg.imagevectorization import *
 7
 8# Setup directories
 9input_folder = "data/"
10output_folder = "output/"
11src_file = "fish.png"
12output_file = "fish-vectorized.svg"
13if not os.path.exists(output_folder):
14    os.makedirs(output_folder)
15
16# Configuration for vectorization
17path_builder = BezierPathBuilder()
18path_builder.trace_smoother = ImageTraceSmoother(3)
19path_builder.error_threshold = 10.0
20path_builder.max_iterations = 20
21
22vectorizer = ImageVectorizer()
23vectorizer.configuration.path_builder = path_builder
24vectorizer.configuration.colors_limit = 3
25vectorizer.configuration.line_width = 1.5
26
27# Vectorize an image
28with vectorizer.vectorize(os.path.join(input_folder, src_file)) as document:
29    output_file = os.path.join(output_folder, output_file)
30    document.save(output_file)

Cet exemple de code vous permet de vectoriser une image raster couleur en une image vectorielle. Les options de vectorisation sont sélectionnées de manière à obtenir le résultat souhaité illustré à la figure (b). Nous voulions une image simplifiée en trois couleurs de l’original. La figure suivante montre l’image source (a) et l’image vectorisée à l’aide de l’extrait de code Python ci-dessus (b).

Texte “Image source et Image vectorisée”

Options de vectorisation

Vous pouvez appliquer des paramètres personnalisés pour obtenir le meilleur résultat de la vectorisation de l’image. Vous trouverez ci-dessous quelques-uns des principaux paramètres que vous pouvez contrôler, ainsi que leurs valeurs par défaut:

Exemple Python 2. Vectorisation de photos

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

SVG n’est pas bien adapté pour dessiner des images photoréalistes. Les images vectorielles ne permettent pas encore de transitions de couleurs naturelles. Les graphiques vectoriels sont les meilleurs pour créer des logos, des illustrations et des dessins techniques. Ce n’est pas le format le plus approprié pour les images en tons continus avec des mélanges de couleurs ou pour retoucher des photographies. Cependant, la vectorisation des photos peut donner lieu à des effets artistiques impressionnants qui peuvent être intéressants et utiles.

Dans cette section, nous convertissons une photo au format vectoriel et essayons de choisir les options de vectorisation pour que le résultat soit identique à la photo:

 1import os
 2from aspose.svg import *
 3from aspose.svg.converters import *
 4from aspose.svg.drawing import *
 5from aspose.svg.rendering.image import *
 6from aspose.svg.imagevectorization import *
 7
 8# Setup directories
 9input_folder = "data/"
10output_folder = "output/"
11src_file = "lioness.jpg"
12output_file = "lioness.svg"
13if not os.path.exists(output_folder):
14    os.makedirs(output_folder)
15
16# Configuration for vectorization
17path_builder = BezierPathBuilder()
18path_builder.trace_smoother = ImageTraceSmoother(1)
19path_builder.error_threshold = 30.0
20path_builder.max_iterations = 30
21
22vectorizer = ImageVectorizer()
23vectorizer.configuration.path_builder = path_builder
24vectorizer.configuration.colors_limit = 25
25vectorizer.configuration.line_width = 1.5
26
27# Vectorize a photo
28with vectorizer.vectorize(os.path.join(input_folder, src_file)) as document:
29    output_file = os.path.join(output_folder, output_file)
30    document.save(output_file)

La figure montre la photo source (a), l’image vectorisée à l’aide de l’extrait de code Python (b).

Texte “Photo source et Photo vectorisée”

Comme mentionné ci-dessus, SVG n’est pas le format le plus approprié pour les images à tons continus avec des mélanges de couleurs, etc. Le processus de vectorisation utilise la quantification des images couleur. Tous les petits points ou pixels de même couleur, on les remplace par des formes géométriques ou des courbes. La photo source (a) et le fichier SVG résultant (b), vous pouvez trouver et visualiser en détail en suivant les liens – lioness.jpg, lioness.svg.

Limites de la licence

Une version d’évaluation gratuite d’Aspose.SVG for Python via .NET fournit toutes les fonctionnalités de vectorisation d’images à l’exception des suivantes:

Si vous souhaitez essayer Aspose.SVG for Python via .NET sans limitations d’évaluation, demandez une licence temporaire de 30 jours. Pour plus d’informations, veuillez vous référer à Comment obtenir une licence temporaire?

La figure montre le résultat de la conversion photo en vecteur sans application de licence.

Texte “Résultat de la vectorisation photo sans licence”

Voir aussi

Aspose.SVG propose un Vectoriseur d’image en ligne gratuit conçu pour convertir des images bitmap telles que JPG, PNG, BMP, TIFF et GIF en graphiques vectoriels. Après la conversion, tous les éléments graphiques vectoriels sont enregistrés sous forme de fichiers SVG. Notre vectoriseur gratuit fonctionne sur n’importe quelle plateforme. Avec cette application, vous pouvez appliquer diverses options pour obtenir le résultat parfait. Gagnez du temps et découvrez les avantages des graphiques vectoriels avec notre vecteur d’image gratuit!

Texte “Vectoriseur d’image”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.