Bildvektorisierung mit C# – Rasterbild in Vektorgrafik konvertieren

Aspose.SVG bietet einen kostenlosen Online- Bild-Vektorisierer, der browserbasiert ist und auf jeder Plattform funktioniert. Mit dieser App können Sie verschiedene Optionen anwenden, um das perfekte Ergebnis zu erzielen. Sparen Sie Zeit und nutzen Sie diesen kostenlosen Bild-Vektorisierer, um alle Vorteile von Vektorgrafiken zu genießen!

Bild-Vektorisierer

Rasterbilder in C# in SVG konvertieren

Die Bildvektorisierung ist der Prozess der Konvertierung von Rasterbildern wie PNG, JPG, BMP, GIF oder TIFF in skalierbare SVG-Vektorgrafiken. Im Gegensatz zu Bitmap-Bildern behalten SVG-Dateien die Qualität bei jeder Auflösung bei und lassen sich einfacher bearbeiten, optimieren und für Web-, Druck-, CAD- und Grafikdesign-Workflows skalieren.

Mit Aspose.SVG for .NET können Sie Rasterbilder programmgesteuert in C# vektorisieren, ohne externe Grafiksoftware oder browserbasierte Tools zu benötigen. Die API bietet flexible Vektorisierungseinstellungen, mit denen Sie die Pfadglättung, Kurvenvereinfachung, Farbreduzierung und die Komplexität der SVG-Ausgabe steuern können.

Dieser Artikel zeigt Ihnen, wie Sie:

Hinweis: Der Namespace Aspose.Svg.ImageVectorization unterstützt gängige Bitmap-Formate (JPG, PNG, BMP, TIFF, GIF) und erzeugt immer eine SVG-Datei.

PNG mit TraceSimplifier in SVG konvertieren

Die Aspose.SVG-Bildvektorisierungs-API bietet Klassen and Methoden, mit denen Sie vor dem Speichern im Vektorformat verschiedene Bildvorverarbeitungsoptionen anwenden können. Der Prozess ermöglicht die Steuerung der folgenden Optionen: TraceSimplifier, TraceSmoother, ColorsLimit und LineWidth.

Sehen wir uns an, wie die Eigenschaft TraceSimplifier die Bildvektorisierung beeinflusst. Zunächst sollten Sie wissen:

Der folgende Codeausschnitt zeigt die Verwendung verschiedener Werte für die Eigenschaft 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"));

Vektorisierte Bilder mit unterschiedlichen Werten der TraceSimplifier-Eigenschaft

Vektorpfade mit TraceSmoother glätten

Manchmal sehen Konturfragmente wie Sägezahnwellen aus oder wirken gezackt. Sehen wir uns an, wie die Eigenschaft TraceSmoother die Glättung beeinflusst:

Sehen wir uns die Auswirkungen von TraceSmoother an:

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"));

Vektorisierte Bilder mit unterschiedlichen Werten der TraceSmoother-Eigenschaft

Fotos in C# in SVG konvertieren

Ist es möglich, ein Foto so in ein Vektorformat zu konvertieren, dass es identisch mit dem Foto aussieht?

SVG ist nicht optimal für fotorealistische Bilder geeignet, da natürliche Farbübergänge schwer darzustellen sind. Vektorgrafiken eignen sich am besten für Logos, Icons und technische Zeichnungen. Dennoch kann die Vektorisierung von Fotos beeindruckende künstlerische Effekte erzielen.

In diesem Abschnitt versuchen wir, ein Foto so zu vektorisieren, dass das Ergebnis dem Foto möglichst nahe kommt:

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}

Die Abbildung zeigt das Quellfoto (a), das vektorisierte Bild mit dem Code (b) und das manuell verbesserte vektorisierte Bild (c).

Quellfoto und vektorisiertes Foto

Beim Vektorisierungsprozess wird die Farbbildquantisierung verwendet. Kleine gleichfarbige Bereiche werden durch geometrische Formen ersetzt, wodurch Lücken entstehen können. Dies führt zu weißen Flecken im vektorisierten Bild.

Tipp: Um dieses Problem zu beheben, können Sie die resultierende SVG-Datei manuell bearbeiten. Wir empfehlen, den Wert stroke-width="100" auf "150" oder einen anderen passenden Wert zu ändern.

Fragment der SVG-Datei

Das Quellfoto (a) und die resultierende SVG-Datei (c) finden Sie unter: horses.jpg, horses.svg.

Konfigurationsoptionen für die Bildvektorisierung

Aspose.SVG for .NET bietet mehrere Optionen, um die SVG-Qualität, Pfadglätte und Komplexität zu steuern.

OptionBeschreibungEmpfohlene Verwendung
ColorsLimitDefiniert die maximale Anzahl der Farben. Niedrige Werte vereinfachen das SVG, hohe bewahren Details.Niedrige Werte für Logos; höhere für Illustrationen und Fotos.
ImageSizeLimitDefiniert die maximale Bilddimension (Breite × Höhe). Große Bilder werden ggf. skaliert.Erhöhen Sie diesen Wert für hochauflösende Quellbilder.
PathBuilderBestimmt den Algorithmus zur Pfadgenerierung. Beeinflusst die Kurvenglätte.Nutzen Sie SplinePathBuilder für glattere Pfade.
TraceSimplifierReduziert die Anzahl der Pfadpunkte und vereinfacht die Geometrie.Hilft, die Dateigröße zu reduzieren und Pfade zu optimieren.
TraceSmootherGlättet Konturen und reduziert gezackte Kanten.Empfohlen für verrauschte oder minderwertige Rasterbilder.
LineWidthDefiniert die Breite der generierten Vektorstriche.Erhöhen Sie den Wert, wenn dünne Konturen verschwinden.

Lizenzbeschränkungen

Die kostenlose Evaluierungsversion von Aspose.SVG bietet fast alle Funktionen, jedoch mit folgenden Einschränkungen:

Um Aspose.SVG ohne Einschränkungen zu testen, fordern Sie eine 30-tägige temporäre Lizenz an.

Vektorisierungsergebnis ohne Lizenz

Ergebnisdatei: horses-license.svg.

Häufige Probleme bei der Bildvektorisierung und Lösungen

ProblemMögliche UrsacheEmpfohlene Lösung
Das SVG enthält viele kleine LückenColorsLimit ist zu niedrig.Erhöhen Sie ColorsLimit (z. B. auf 30–40) oder erhöhen Sie die stroke-width.
Die erzeugte SVG-Datei ist zu großDie TraceSimplifier-Toleranz ist zu niedrig.Erhöhen Sie die Toleranz (typisch 0.7–1.0), um die Pfadpunkte zu reduzieren.
Kanten wirken rau oder gezacktTraceSmoother ist deaktiviert oder zu niedrig.Nutzen Sie Glättungswerte zwischen 5 und 10.
Einige Farben fehlen im Ausgabe-SVGDie Evaluierungsversion begrenzt die Anzahl der verarbeiteten dominanten Farben.Wenden Sie eine temporäre oder vollständige Aspose.SVG-Lizenz an, um die Vollfarb-Vektorisierung zu aktivieren.
Das SVG enthält zu viele unnötige PfadeDas Quellbild enthält Rauschen, Gradienten oder Kompressionsartefakte.Verarbeiten Sie das Bild vor der Vektorisierung vor, indem Sie das Rauschen reduzieren, den Kontrast erhöhen oder einfachere Quellgrafiken verwenden.
Die Fotovektorisierung liefert ungenaue ErgebnisseDie Raster-zu-Vektor-Trassierung eignet sich am besten für Logos, Icons und Illustrationen, nicht für detaillierte Fotos.Reduzieren Sie die Anzahl der Farben, erhöhen Sie die Glättung oder verwenden Sie vereinfachte Grafiken anstelle von fotorealistischen Bildern.
Dünne Linien verschwindenZu starke Vereinfachung oder Farbreduzierung.Senken Sie die Toleranz und erhöhen Sie ColorsLimit.

FAQ

1. Wie konvertiere ich PNG in C# in SVG?
Nutzen Sie die Klasse ImageVectorizer in Aspose.SVG for .NET. Die API bietet Einstellungen für Glättung, Vereinfachung und Farbreduzierung.

2. Was ist der Unterschied zwischen Raster- und Vektorbildern?
Rasterbilder bestehen aus Pixeln und verlieren beim Skalieren an Qualität. Vektorgrafiken basieren auf Pfaden und sind ohne Qualitätsverlust skalierbar.

3. Wie kann ich die SVG-Dateigröße nach der Vektorisierung reduzieren?
Erhöhen Sie die Vereinfachungstoleranz, reduzieren Sie die Anzahl der Farben und nutzen Sie Glättungseinstellungen.

4. Welche Bilder eignen sich am besten für die Vektorisierung?
Logos, Icons und Illustrationen mit klaren Kanten und wenigen Farben liefern die besten Ergebnisse.

5. Kann ich den Vektorisierungsprozess anpassen?
Ja. Aspose.SVG ermöglicht die Konfiguration von Farblimits, Pfadbauern, Glättung und Bildgrößen.

Zugehörige Ressourcen

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.