PerfectVector
Par Irene Kim

Potrace de PNG en SVG : gérer l’alpha et garder les trous

Convertissez un PNG avec Potrace après avoir préparé son canal alpha. Suivez un flux de travail PGM testé, comparez les seuils et vérifiez l'arrière-plan et les trous internes du SVG.

9 min de lecture
Sur cette page

Pour convertir un PNG en SVG avec Potrace, préparez d'abord un bitmap en niveaux de gris, puis tracez-le avec potrace --svg. Pour les illustrations sombres sur des pixels transparents, composez l'image sur un cache blanc avant d'enregistrer le bitmap. Inspectez les formes à seuil et leurs ouvertures intérieures avant d'accepter le SVG.

La norme Potrace 1.16 lit directement PBM, PGM, PPM et BMP plutôt que PNG. Son manuel officiel décrit une opération de traçage monochrome : les nuances intermédiaires deviennent noires ou blanches. Le flux de travail ci-dessous crée une géométrie solide avec des régions vides, plutôt que de conserver les valeurs alpha continues du PNG.

Si vous préférez un flux de travail de navigateur pour une image que vous possédez déjà, PerfectVector propose une conversion image en chemin et un aperçu gratuit. Commencez gratuitement avec votre propre image, puis comparez sa silhouette, ses petites ouvertures et ses couleurs avec la source. Déverrouillez le résultat avant de le modifier ou de l'exporter. La recette Potrace locale reste utile lorsque vous souhaitez un prétraitement explicite et des paramètres de commande répétables.

Essayez avec votre propre image
Ouvrir l’outil complet
Essai gratuit. Déposez une image pour prévisualiser votre vecteur, sans inscription.

Ce dont vous avez besoin avant de tracer

Utilisez un exécutable Potrace installé, Python 3 avec Pillow et le PNG d'origine. Cette recette a été testée avec Potrace 1.16 et Pillow 11.3.0. Conservez une copie de l'entrée et travaillez dans un dossier séparé afin que chaque variante de seuil ait un nom de fichier distinct.

Le cas de départ est un logo, une icône ou un dessin sombre sur un fond clair ou transparent. Si votre sujet est clair sur sombre, décidez comment inverser ou préparer l'image avant d'appliquer cette recette. Pour un flux de travail d'éditeur interactif, consultez Inkscape Trace Bitmap.

Un mat est l'arrière-plan uni utilisé pour résoudre les pixels transparents avant le traçage. Un seuil est la coupure de luminosité qui divise l'image préparée en premier plan et arrière-plan. Ces choix se produisent avant que le contour ne devienne une géométrie SVG.

1. Résolvez la transparence avant d'enregistrer le bitmap

PNG stocke la couleur et l’opacité séparément. Le canal alpha décrit l'opacité de chaque pixel. La spécification PNG explique cette représentation ; un pixel entièrement transparent peut toujours porter des valeurs RVB. La suppression du canal alpha ne compose pas ces pixels sur le fond blanc que vous avez peut-être vu dans une visionneuse d'images.

Pour une marque sombre, placez délibérément l’image sur du blanc. Cet extrait Python ouvre artwork.png, le compose sur une image blanche de taille égale, convertit ce résultat en niveaux de gris et enregistre artwork.pgm :

from PIL import Image
 
src = Image.open("artwork.png").convert("RGBA")
matte = Image.new("RGBA", src.size, "white")
gray = Image.alpha_composite(matte, src).convert("L")
gray.save("artwork.pgm")

La alpha_composite documentation de Pillow définit la deuxième image comme composée par rapport à la première. Les deux images ici ont des dimensions et un mode RGBA correspondants.

Ouvrez le PGM préparé avant de tracer. Son arrière-plan extérieur doit être blanc, son premier plan prévu sombre et ses lacunes importantes visibles. Un rectangle noir à ce stade est un problème de prétraitement ; la modification ultérieure des règles de remplissage SVG ne peut pas récupérer une ouverture qui n'a jamais atteint le traceur.

Illustration
Illustration d'un anneau noir sur transparence PNG, composé sur un cache blanc, puis représenté sous forme de géométrie SVG avec un centre ouvert
Résolvez les pixels transparents du raster par rapport à un cache délibéré avant de choisir la géométrie de premier plan. L'ouverture finale laisse transparaître le fond d'écran.

2. Tracez le PGM préparé

Exécutez ceci dans le dossier contenant artwork.pgm :

potrace artwork.pgm --svg --blacklevel 0.5 --turdsize 2 --output artwork.svg

--blacklevel 0.5 choisit la limite des niveaux de gris. --turdsize 2 maintient explicite la suppression des petites taches par défaut de Potrace. Utilisez un nouveau nom de sortie lorsque vous modifiez un paramètre, puis comparez les fichiers plutôt que d'écraser votre référence à plusieurs reprises.

Changez un contrôle à la fois :

ContrôleQue réviser
--blacklevelSi de faibles marques deviennent au premier plan et si les ouvertures étroites restent vides
--turdsizeQue de petites formes isolées soient du bruit ou des détails intentionnels
--alphamaxTraitement des coins ; malgré son nom, ce n'est pas un contrôle d'opacité

Un seuil de niveau de noir plus élevé peut inclure davantage de pixels gris clair au premier plan. Cela peut renforcer une ligne faible ou fermer une ouverture légère. Jugez ensemble le bitmap préparé et le contour obtenu. Le lissage ne peut pas reconstruire un compteur une fois que le seuil l'a rempli.

Ce que montrent les deux images de test originales

Nous avons créé deux PNG 256 × 256 contrôlés et exécuté les commandes de prétraitement et Potrace ci-dessus. L’un était un anneau noir avec des pixels transparents à l’extérieur et à l’intérieur. L'autre était une marque sombre et opaque avec un étroit compteur gris, l'ouverture fermée à l'intérieur de la marque. Nous avons inspecté les SVG générés avec un moteur de rendu et vérifié leur transparence centrale et extérieure.

Entrée et préparationRésultat SVG observé
Anneau transparent, alpha supprimé avant la conversion en niveaux de grisUne toile noire remplie ; l'extérieur et l'ouverture prévue sont devenus au premier plan
Même anneau, composé sur blanc avant la conversion en niveaux de grisL’extérieur et le centre étaient vides ; la bague est restée remplie
Compteur gris étroit, composite blanc, niveau de noir 0,5Le comptoir est resté ouvert
Même image de compteur préparée, niveau de noir 0,8Le compteur rempli

Les pixels invisibles du contrôle annulaire portaient des valeurs RVB noires. Ignorer alpha a exposé ces valeurs au seuil. La version composite blanche les a d'abord résolus en blanc. Ceci explique la boîte noire de cet échantillon ; il ne s’agit pas de prétendre que chaque PNG échouera de la même manière.

Le test du compteur a maintenu l'entrée et les autres paramètres constants. Seul le seuil a changé. Son résultat montre pourquoi une trace plus sombre n’est pas automatiquement une meilleure trace. Inspectez la fonctionnalité dont vous avez besoin plutôt que de choisir le réglage avec la silhouette la plus lourde.

Il s'agissait de vérifications numériques de deux fichiers de test originaux, sans image raster intégrée dans leurs sorties SVG. Nous n'avons pas comparé la qualité de Potrace's avec PerfectVector, ni importé les fichiers dans un cutter ni testé un résultat physique.

3. Vérifiez les trous et l'arrière-plan dans le SVG enregistré

Placez le SVG sur un fond contrasté. Cet arrière-plan doit être visible à la fois dans la zone extérieure et dans chaque ouverture prévue. La peinture blanche peut ressembler à un trou sur une page blanche, une vignette seule ne suffit donc pas.

Un chemin composé SVG peut décrire un contour extérieur et une ouverture intérieure au sein d'un objet. Si l'ouverture est déjà absente de la géométrie tracée, revenir au PGM et au seuil. S'il existe dans un moteur de rendu mais qu'il est rempli après l'importation, étudiez plutôt l'interprétation du chemin de l'application réceptrice. Le guide de dépannage des trous SVG sépare ces cas.

Vérifiez le fichier enregistré pour :

  • la silhouette prévue et les petits écarts ;
  • un véritable vide à l'extérieur de la marque et à l'intérieur de ses comptoirs ;
  • des taches parasites qui ne devraient pas devenir des objets ;
  • une taille de document appropriée dans le flux de travail de destination ;
  • chemins plutôt qu’une copie intégrée du PNG.

Si seul l'arrière-plan semble incorrect, utilisez le diagnostic d'arrière-plan SVG transparent avant de supprimer chaque objet blanc. Si un petit élément est véritablement absent de la source, utilisez un original plus grand ou redessinez ce détail. Le guide sur la qualité des sources explique cette limite.

Quand ce flux de travail monochrome s'adapte

Potrace correspond à une marque qui peut s'exprimer comme une silhouette remplie et des ouvertures intentionnelles. Conservez le raster lorsqu’un ombrage doux ou une opacité partielle fait partie de l’illustration que vous devez préserver. Pour plusieurs couleurs significatives, utilisez un flux de travail de vectorisation compatible avec les couleurs ou préparez des passes séparées délibérées ; cette seule commande monochrome ne crée pas de palette de couleurs.

Vous pouvez également utiliser un éditeur vectoriel pour redessiner un contour critique. Le traçage automatique fournit une forme candidate et votre utilisation prévue détermine s'il convient de la conserver ou de la modifier.

FAQ

Potrace peut-il ouvrir un PNG directement ? La norme Potrace 1.16 accepte les entrées PBM, PGM, PPM et BMP. Décodez d'abord le PNG avec un autre outil d'image, rendez son traitement de transparence explicite et enregistrez un bitmap pris en charge avant de le tracer.

Potrace préserve-t-il la transparence PNG ? Le flux de travail monochrome crée une géométrie remplie et des régions vides. Il ne préserve pas les valeurs alpha continues du PNG. Composez des pixels transparents sur un cache délibéré avant le seuillage, puis vérifiez les régions vides du SVG sur un arrière-plan contrasté.

Alphamax est-il le paramètre alpha PNG ? Non. L'alphamax de Potrace contrôle le traitement des coins dans les courbes tracées. Il ne détermine pas comment le canal d'opacité d'un PNG est composé avant le traçage.

Pourquoi un trou a-t-il disparu ? Vérifiez si l'ouverture est toujours visible dans le bitmap préparé et le seuil sélectionné. Si le seuil l'a rempli, modifiez la préparation ou le seuil et revenez. Si le SVG contient l'ouverture mais que seule une application de réception la remplit, vérifiez-y la gestion du chemin composé et des règles de remplissage.

Sources

  1. Potrace — Manuel — Formats d'entrée pris en charge, seuil monochrome, sortie SVG et options de commande nommées.
  2. Pillow — Module Image — Composition de l'image RGBA et ordre utilisé dans l'extrait de préparation.
  3. W3C — Spécification PNG — Échantillons de couleurs et représentation alpha dans les images PNG.
  4. W3C — Chemins SVG — Chemins composés et contours intérieurs pouvant décrire des ouvertures.

Commencez gratuitement avec votre propre image dans PerfectVector, puis vérifiez sa silhouette et ses ouvertures intérieures par rapport à la source avant de choisir l'étape d'édition suivante.

Plus depuis le blog

PerfectVector

Transformez votre image en
tracés vectoriels nets et modifiables

Vectorisez et vérifiez l’aperçu gratuitement, sans limite quotidienne.