PerfectVector
Von Irene Kim

Potrace: PNG zu SVG mit Transparenz und erhaltenen Löchern

Konvertieren Sie ein PNG mit Potrace, nachdem Sie seinen Alphakanal vorbereitet haben. Befolgen Sie einen getesteten PGM-Workflow, vergleichen Sie Schwellenwerte und überprüfen Sie den Hintergrund und die inneren Löcher des SVG.

8 Min. Lesezeit
Auf dieser Seite

Um ein PNG mit Potrace in SVG zu konvertieren, bereiten Sie zunächst eine Graustufen-Bitmap vor und zeichnen Sie diese dann mit potrace --svg nach. Für dunkle Grafiken auf transparenten Pixeln setzen Sie das Bild auf einer weißen Matte zusammen, bevor Sie die Bitmap speichern. Überprüfen Sie die Schwellenformen und ihre inneren Öffnungen, bevor Sie das SVG annehmen.

Standard Potrace 1.16 liest PBM, PGM, PPM und BMP statt PNG direkt. Das offizielle Handbuch beschreibt einen monochromen Nachzeichnungsvorgang: Zwischentöne werden schwarz oder weiß. Der folgende Arbeitsablauf erstellt eine Volumengeometrie mit leeren Bereichen, anstatt die kontinuierlichen Alphawerte des PNG beizubehalten.

Wenn Sie einen Browser-Workflow für ein bereits vorhandenes Bild bevorzugen, bietet PerfectVector eine Bild-in-Pfad-Konvertierung und eine kostenlose Vorschau. Beginnen Sie kostenlos mit Ihrem eigenen Bild und vergleichen Sie dann dessen Silhouette, kleine Öffnungen und Farben mit der Quelle. Entsperren Sie das Ergebnis, bevor Sie es bearbeiten oder exportieren. Das lokale Potrace-Rezept bleibt nützlich, wenn Sie eine explizite Vorverarbeitung und wiederholbare Befehlseinstellungen wünschen.

Probier es mit deinem eigenen Bild
Vollständiges Tool öffnen
Kostenlos und ohne Anmeldung: Lege ein Bild ab und sieh dir die Vorschau deines Vektors an.

Was Sie vor dem Nachzeichnen benötigen

Verwenden Sie eine installierte ausführbare Potrace-Datei, Python 3 mit Pillow und das Original-PNG. Dieses Rezept wurde mit Potrace 1.16 und Pillow 11.3.0 durchgeführt. Behalten Sie eine Kopie der Eingabe und arbeiten Sie in einem separaten Ordner, damit jede Schwellenwertvariante einen eindeutigen Dateinamen hat.

Der Ausgangsfall ist ein dunkles Logo, Icon oder eine Zeichnung auf hellem oder transparentem Hintergrund. Wenn Ihr Motiv hell auf dunkel ist, entscheiden Sie, wie Sie das Bild umkehren oder auf andere Weise vorbereiten, bevor Sie dieses Rezept anwenden. Informationen zu einem interaktiven Editor-Workflow finden Sie unter Inkscape Trace Bitmap.

Eine Matte ist der einfarbige Hintergrund, der zum Auflösen transparenter Pixel vor dem Nachzeichnen verwendet wird. Ein Schwellenwert ist der Helligkeitsgrenzwert, der das vorbereitete Bild in Vordergrund und Hintergrund unterteilt. Diese Auswahl erfolgt, bevor die Kontur zur SVG-Geometrie wird.

1. Lösen Sie die Transparenz auf, bevor Sie die Bitmap speichern

PNG speichert Farbe und Deckkraft separat. Der Alphakanal beschreibt die Deckkraft jedes Pixels. Die PNG-Spezifikation erläutert diese Darstellung; Ein vollständig transparentes Pixel kann immer noch RGB-Werte übertragen. Durch das Weglassen des Alphakanals werden diese Pixel nicht auf dem weißen Hintergrund zusammengesetzt, den Sie möglicherweise in einem Bildbetrachter gesehen haben.

Für einen dunklen Fleck platzieren Sie das Bild bewusst über Weiß. Dieses Python-Snippet öffnet artwork.png, setzt es zu einem gleich großen weißen Bild zusammen, wandelt dieses Ergebnis in Graustufen um und speichert 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")

In der alpha_composite-Dokumentation von Pillow wird das zweite Bild als über dem ersten zusammengesetzt definiert. Beide Bilder hier haben übereinstimmende Abmessungen und RGBA-Modus.

Öffnen Sie das vorbereitete PGM vor der Verfolgung. Der äußere Hintergrund sollte weiß, der vorgesehene Vordergrund dunkel und die wichtigen Lücken sichtbar sein. Ein schwarzes Rechteck in dieser Phase ist ein Vorverarbeitungsproblem. Eine spätere Änderung der SVG-Füllregeln kann eine Öffnung, die den Tracer nie erreicht hat, nicht wiederherstellen.

Illustration
Abbildung eines schwarzen Rings auf PNG-Transparenz, zusammengesetzt auf einer weißen Matte, dann dargestellt als SVG-Geometrie mit offener Mitte
Lösen Sie die transparenten Pixel des Rasters anhand einer absichtlichen Matte auf, bevor Sie die Vordergrundgeometrie auswählen. Die letzte Öffnung lässt den Displayhintergrund durchscheinen.

2. Verfolgen Sie das vorbereitete PGM

Führen Sie dies in dem Ordner aus, der artwork.pgm enthält:

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

--blacklevel 0.5 wählt den Graustufen-Grenzwert. --turdsize 2 behält Potraces standardmäßige Unterdrückung kleiner Flecken explizit bei. Verwenden Sie einen neuen Ausgabenamen, wenn Sie eine Einstellung ändern, und vergleichen Sie dann die Dateien, anstatt Ihre Referenz wiederholt zu überschreiben.

Ändern Sie jeweils ein Steuerelement:

KontrolleWas Sie überprüfen sollten
--blacklevelOb schwache Markierungen in den Vordergrund treten und schmale Öffnungen leer bleiben
--turdsizeOb kleine isolierte Formen Rauschen oder absichtliche Details sind
--alphamaxEckenbehandlung; Trotz des Namens handelt es sich hier nicht um eine Steuerung der Deckkraft

Ein höherer Schwarzwertschwellenwert kann mehr hellgraue Pixel im Vordergrund umfassen. Das kann eine schwache Linie verstärken oder eine helle Öffnung schließen. Beurteilen Sie gemeinsam die vorbereitete Bitmap und die resultierende Kontur. Durch die Glättung kann ein Zähler nicht wiederhergestellt werden, nachdem der Schwellenwert ihn gefüllt hat.

Was die beiden Original-Testbilder zeigten

Wir haben zwei kontrollierte 256 × 256 PNGs erstellt und die oben genannten Vorverarbeitungs- und Potrace-Befehle ausgeführt. Einer war ein schwarzer Ring mit transparenten Pixeln außen und innen. Das andere war eine undurchsichtige dunkle Markierung mit einer schmalen grauen Markierung, der eingeschlossenen Öffnung innerhalb der Markierung. Wir haben die generierten SVGs mit einem Renderer untersucht und ihre Mitten- und Außentransparenz überprüft.

Input und VorbereitungBeobachtetes SVG-Ergebnis
Transparenter Ring, Alpha wird vor der Graustufenkonvertierung verworfenEine gefüllte schwarze Leinwand; das Äußere und die beabsichtigte Öffnung rückten in den Vordergrund
Derselbe Ring, vor der Graustufenkonvertierung auf Weiß zusammengesetztDas Äußere und die Mitte waren leer; der Ring blieb gefüllt
Schmale graue Theke, weißer Verbundstoff, Schwarzwert 0,5Der Schalter blieb geöffnet
Gleiches vorbereitetes Gegenbild, Schwarzwert 0,8Der Zähler füllte sich

Die unsichtbaren Pixel der Ringsteuerung trugen schwarze RGB-Werte. Durch das Ignorieren von Alpha wurden diese Werte dem Schwellenwert ausgesetzt. Die Weiß-Verbundversion löste sie zuerst in Weiß auf. Dies erklärt die Blackbox dieser Probe; Es wird nicht behauptet, dass jedes PNG auf die gleiche Weise scheitern wird.

Der Gegentest hielt die Eingabe und andere Einstellungen konstant. Lediglich der Schwellenwert hat sich geändert. Das Ergebnis zeigt, warum eine dunkler aussehende Spur nicht automatisch eine bessere Spur ist. Überprüfen Sie die Funktion, die Sie benötigen, anstatt die Einstellung mit der schwersten Silhouette zu wählen.

Dabei handelte es sich um digitale Überprüfungen zweier Original-Testdateien, in deren SVG-Ausgaben kein eingebettetes Rasterbild enthalten war. Wir haben die Qualität von Potrace's nicht mit PerfectVector verglichen, die Dateien nicht in einen Cutter importiert oder ein physisches Ergebnis getestet.

3. Überprüfen Sie Löcher und Hintergrund in der gespeicherten SVG-Datei

Platzieren Sie die SVG-Datei auf einem kontrastierenden Hintergrund. Dieser Hintergrund sollte sowohl im Außenbereich als auch in jeder vorgesehenen Öffnung sichtbar sein. Weiße Farbe kann einem Loch auf einer weißen Seite ähneln, daher reicht ein Miniaturbild allein nicht aus.

Ein SVG-zusammengesetzter Pfad kann eine äußere Kontur und eine innere Öffnung innerhalb eines Objekts beschreiben. Wenn die Öffnung in der verfolgten Geometrie bereits fehlt, kehren Sie zum PGM und zum Schwellenwert zurück. Wenn es in einem Renderer vorhanden ist, aber nach dem Import ausgefüllt wird, untersuchen Sie stattdessen die Pfadinterpretation der empfangenden App. Der Leitfaden zur Fehlerbehebung bei SVG-Lücken trennt diese Fälle.

Überprüfen Sie die gespeicherte Datei auf Folgendes:

  • die beabsichtigte Silhouette und kleine Lücken;
  • echter leerer Raum außerhalb der Marke und innerhalb ihrer Theken;
  • verirrte Flecken, die nicht zu Objekten werden sollten;
  • eine geeignete Dokumentgröße im Ziel-Workflow;
  • Pfade statt einer eingebetteten Kopie des PNG.

Wenn nur der Hintergrund falsch aussieht, verwenden Sie die Diagnose für den transparenten SVG-Hintergrund, bevor Sie jedes weiße Objekt löschen. Wenn ein winziges Merkmal in der Quelle tatsächlich fehlt, verwenden Sie ein größeres Original oder zeichnen Sie dieses Detail neu. Der Leitfaden zur Quellqualität erklärt diese Grenze.

Wenn dieser monochrome Workflow passt

Potrace passt zu einem Zeichen, das sich durch eine gefüllte Silhouette und absichtliche Öffnungen ausdrücken lässt. Behalten Sie das Raster bei, wenn weiche Schattierungen oder teilweise Deckkraft Teil des Bildmaterials sind, das Sie erhalten müssen. Für mehrere aussagekräftige Farben verwenden Sie einen farbfähigen Vektorisierungsworkflow oder bereiten Sie bewusst separate Durchgänge vor; Dieser einzelne Monochrom-Befehl erstellt keine Farbpalette.

Sie können eine kritische Kontur auch mit einem Vektoreditor neu zeichnen. Durch die automatische Nachverfolgung wird eine Kandidatenform bereitgestellt, und Ihr Verwendungszweck bestimmt, ob Sie diese beibehalten oder bearbeiten möchten.

FAQ

Kann Potrace ein PNG direkt öffnen? Standard Potrace 1.16 akzeptiert PBM-, PGM-, PPM- und BMP-Eingaben. Dekodieren Sie das PNG zunächst mit einem anderen Bildtool, machen Sie die Transparenzbehandlung explizit und speichern Sie vor dem Nachzeichnen eine unterstützte Bitmap.

Behält Potrace die PNG-Transparenz bei? Der monochrome Workflow erstellt gefüllte Geometrie und leere Bereiche. Die kontinuierlichen Alphawerte des PNG bleiben dabei nicht erhalten. Fügen Sie vor der Schwellenwertermittlung transparente Pixel auf einer absichtlichen Matte zusammen und überprüfen Sie dann die leeren Bereiche der SVG-Datei vor einem kontrastierenden Hintergrund.

Ist Alphamax die PNG-Alpha-Einstellung? Nein. Potraces Alphamax steuert die Eckenbehandlung in den gezeichneten Kurven. Es bestimmt nicht, wie der Deckkraftkanal eines PNG vor dem Nachzeichnen zusammengesetzt wird.

Warum ist ein Loch verschwunden? Prüfen Sie, ob die Öffnung im vorbereiteten Bitmap und der ausgewählten Schwelle noch sichtbar ist. Wenn der Schwellenwert erreicht ist, ändern Sie die Vorbereitung oder den Cutoff und ziehen Sie ihn zurück. Wenn die SVG-Datei die Öffnung enthält, sie aber nur von einer empfangenden App ausgefüllt wird, überprüfen Sie dort die Verarbeitung von zusammengesetzten Pfaden und Füllregeln.

Quellen

  1. Potrace – Manuell – Unterstützte Eingabeformate, monochrome Schwellenwerte, SVG-Ausgabe und die genannten Befehlsoptionen.
  2. Pillow – Bildmodul – RGBA-Bildzusammenstellung und die im Vorbereitungs-Snippet verwendete Reihenfolge.
  3. W3C – PNG-Spezifikation – Farbmuster und Alpha-Darstellung in PNG-Bildern.
  4. W3C – SVG-Pfade – Zusammengesetzte Pfade und Innenkonturen, die Öffnungen beschreiben können.

Beginnen Sie kostenlos mit Ihrem eigenen Bild in PerfectVector und vergleichen Sie dann dessen Silhouette und innere Öffnungen mit der Quelle, bevor Sie den nächsten Bearbeitungsschritt wählen.

Mehr aus dem Blog

PerfectVector

Verwandle dein Bild in
saubere, bearbeitbare Vektorpfade

Vektorisieren und Vorschau prüfen: kostenlos und ohne Tageslimit.