IRONSOFTWAREHOME
IRONQR NUTZEN

QR-Code .NET Core: QR-Codes in C# lesen und generieren

Curtis Chau
Curtis Chau
Updated: 21. April 2026

Bei der Entwicklung von Web- oder Enterprise auf Basis von .NET Core ist die Unterstützung von QR-Codes – beispielsweise für die Bestandsverfolgung, Zahlungsabwicklung oder Zwei-Faktor-Authentifizierung – eine häufige Anforderung. Anstatt Entwicklungszyklen für Low-Level-Codierungsalgorithmen aufzuwenden, können Sie auf eine spezialisierte Bibliothek zurückgreifen, die den gesamten Workflow abdeckt. IronQR bietet eine Komplettlösung für QR-Codes für .NET, die alles von der einfachen Generierung bis zum ML-gestützten Lesen und der erweiterten Fehlerkorrektur abdeckt.

Möchten Sie es selbst ausprobieren? Starten Sie noch heute Ihre kostenlose Testphase und sehen Sie, wie schnell Sie QR-Code-Funktionalität in Ihr Projekt integrieren können.

NuGetMit NuGet installieren

PM > Install-Package IronQR

Install IronQR by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

Wie installiert man die QR-Code-Bibliothek?

Die Installation von IronQR über NuGet dauert nur wenige Sekunden. Öffnen Sie Visual Studio, gehen Sie zu Tools > NuGet-Paket-Manager > NuGet-Pakete für die Lösung verwalten, suchen Sie nach IronQR und klicken Sie auf Installieren. Das Paket hat minimale Abhängigkeiten und ist sofort einsatzbereit für Windows, macOS und Linux.

PM > Install-Package IronQR

IronQR ist kompatibel mit .NET Core 6, 7, 8, 9 und 10 sowie .NET Framework 4.6.2 und höher. Bei plattformübergreifenden Projekten übernimmt eine SkiaSharp-Integration die Bildverarbeitung auf Nicht-Windows-Laufzeitumgebungen. Die Bibliothek funktioniert mit ASP.NET Core Webanwendungen, Konsolenanwendungen und Desktop-Lösungen ohne zusätzliche Laufzeitkonfiguration. Nach der Installation stehen alle notwendigen Erweiterungsmethoden und -typen sofort zur Verfügung.

Wie liest man einen einfachen QR-Code aus einem Bild?

Das Auslesen von QR-Code-Daten aus Bilddateien erfordert nur wenige Codezeilen. Die Klasse QrReader verwendet ein fortschrittliches maschinelles Lernmodell, das die Bildqualität bewertet und den richtigen Segmentmodus automatisch auswählt, was Ihnen genaue Ergebnisse liefert, selbst wenn das Eingabebild nicht ideal ist.

using IronQr;
using IronSoftware.Drawing;

// Load image containing QR code
var inputBmp = AnyBitmap.FromFile("qr-sample.png");
// Create QrImageInput from the bitmap
QrImageInput imageInput = new QrImageInput(inputBmp);
// Initialize QR Reader with ML model
QrReader reader = new QrReader();
// Read and decode all QR codes in the image
IEnumerable<QrResult> results = reader.Read(imageInput);
// Output decoded text strings
foreach (var qrCode in results)
{
    Console.WriteLine($"QR Code Value: {qrCode.Value}");
    Console.WriteLine($"URL: {qrCode.Url}");
}

QR-Code Eingabe

QR-Code-Generator .NET Core: Lesen und Erstellen von QR-Codes mit nur wenigen Codezeilen: Bild 1 - Eingabe-QR-Code

Ausgabe

QR-Code-Generator .NET Core: Lesen und Erstellen von QR-Codes mit nur wenigen Codezeilen: Bild 2 - Beispielausgabe des QR-Code-Scans

Die Methode QrReader.Read() verarbeitet die QrImageInput und gibt ein IEnumerable<QrResult> zurück, wobei jedes Ergebnis den dekodierten Text, die URL, falls eine kodiert war, und die räumliche Position des QR-Symbols im Bild enthält. Die Bibliothek akzeptiert Byte-Arrays, Dateipfade und AnyBitmap Objekte, was Ihnen Flexibilität für jede Projektarchitektur bietet – egal ob Sie von der Festplatte, einer Datenbank oder einem Live-Kamerafeed lesen.

Das dem Reader zugrunde liegende ML-Modell unterscheidet IronQR von rein algorithmischen Bibliotheken. Es bewältigt Unvollkommenheiten der realen Welt wie Bewegungsunschärfe, teilweise Verdeckung und ungleichmäßige Beleuchtung, ohne dass eine manuelle Vorverarbeitung oder Schwellenwertanpassung erforderlich ist.

Wie extrahiert man erweiterte QR-Code-Daten?

Über die grundlegende Wertdekodierung hinaus liefert IronQR Koordinaten, Rohdatensegmente und Informationen auf Modulebene aus jedem gescannten Symbol. Dies ist unerlässlich für Dokumentenverarbeitungs-Workflows, bei denen genau bekannt sein muss, wo sich ein QR-Code auf der Seite befindet, oder für Anwendungen, die mehrere Codes in einem einzigen Bild verarbeiten müssen.

using IronQr;
using IronSoftware.Drawing;

var inputBmp = AnyBitmap.FromFile("document-with-qr.png");
QrImageInput imageInput = new QrImageInput(inputBmp);
QrReader reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(imageInput);
foreach (var qrCode in results)
{
    // Access decoded value
    Console.WriteLine($"Data: {qrCode.Value}");
    // Get corner coordinate positions
    foreach (PointF point in qrCode.Points)
    {
        Console.WriteLine($"Position: {point.X}, {point.Y}");
    }
}

QR-Eingabe

QR-Code-Generator .NET Core: Lesen und Erstellen von QR-Codes mit nur wenigen Codezeilen: Bild 3 - Eingabe-QR-Code

Erweiterte QR-Leseergebnisse

QR-Code-Generator .NET Core: Lesen und Erstellen von QR-Codes mit nur wenigen Codezeilen: Bild 4 - Ergebnisse der erweiterten QR-Datenauswertung

Die Sammlung QrResult.Points enthält die vier Eckkoordinaten des erkannten QR-Symbols im Pixelraum. Ihre Anwendung kann diese verwenden, um Begrenzungsrahmen auf Dokumentbildern zu überlagern, den QR-Bereich für die Weiterverarbeitung auszuschneiden oder die Standortdaten an ein nachgelagertes System weiterzugeben, das physische Koordinaten logischen Dokumentpositionen zuordnet.

IronQR verarbeitet Codes, die benutzerdefinierte eingebettete Logos, beschädigte Module oder niedrigauflösenden Input enthalten, durch dieselbe ML-Pipeline. Die Bibliothek erfordert keine separaten Vorverarbeitungsschritte – Erkennung und Dekodierung erfolgen in einem einzigen Read() Aufruf.

Wie beeinflussen Fehlerkorrekturstufen die Qualität von QR-Codes?

Die Fehlerkorrektur ist der Mechanismus, der es einem QR-Scanner ermöglicht, die Originaldaten wiederherzustellen, selbst wenn ein Teil des Codes verdeckt, schlecht gedruckt oder physisch beschädigt ist. Der QR-Code-Standard definiert vier Stufen – Niedrig (L), Mittel (M), Quartil (Q) und Hoch (H) –, bei denen jeweils Speicherkapazität gegen Schadensresistenz eingetauscht wird.

EbeneWiederherstellungskapazitätOptimale Nutzung
L~7%Klare Digitalanzeigen, maximale Datendichte
M~15%Allgemeine Druckanwendungen
Q~25%Industrieetiketten, mäßiger Verschleiß zu erwarten
H~30%Eingebettete Logos, Oberflächen im Außenbereich oder stark beanspruchte Oberflächen

Bei der Generierung von QR-Codes stellt die Angabe eines höheren Fehlerkorrekturniveaus sicher, dass die Ausgabe auch unter realen Scanbedingungen Bestand hat:

using IronQr;
using IronSoftware.Drawing;

// Configure QR options with high error correction
var qrOptions = new QrOptions(QrErrorCorrectionLevel.High, 20);
// Generate a QR code with specified error correction
QrCode myQr = QrWriter.Write("https://ironsoftware.com", qrOptions);
// Save as PNG image
AnyBitmap qrImage = myQr.Save();
qrImage.SaveAs("high-error-correction-qr.png");

Ausgabe

QR-Code-Generator .NET Core: Lesen und Erstellen von QR-Codes mit nur wenigen Codezeilen: Bild 5 - Erstellter QR-Code mit hohem Fehlerkorrekturgrad

Der Konstruktor QrOptions akzeptiert den Fehlerkorrekturgrad und eine maximale Versionsnummer. Version-40-Codes speichern bis zu 7.089 numerische Zeichen, während Version-1-Codes nur 41 Zeichen speichern können. Durch die Festlegung einer niedrigeren maximalen Version wird die Ausgabegröße begrenzt, was nützlich ist, wenn Sie innerhalb eines Stapels einheitliche physische Abmessungen benötigen. Je höher das Fehlerkorrekturniveau, desto mehr Module werden für Redundanz reserviert, wodurch die Nettodatenkapazität in jeder Version reduziert wird.

Die Fehlertoleranzfunktion von IronQR geht mit dieser Eigenschaft einher – beim Lesen von Codes, die mit höheren Korrekturstufen erzeugt wurden, kann die Bibliothek Daten aus Codes wiederherstellen, die mit einem rein algorithmischen Decoder vollständig fehlschlagen würden.

Wie generiert man QR-Codes mit internationalen Zeichen?

IronQR unterstützt alle QR-Codierungsmodi : numerisch, alphanumerisch, Byte und Kanji. Für japanische Texte und andere Unicode-Inhalte wählt die Bibliothek automatisch die speichereffizienteste Kodierung aus:

using IronQr;
using IronSoftware.Drawing;

// Generate QR that encodes Japanese Unicode text
QrCode japaneseQr = QrWriter.Write("こんにちは世界");
// The library selects Kanji mode automatically
AnyBitmap qrImage = japaneseQr.Save();
qrImage.SaveAs("japanese-qr.png");

QR-Code-Ausgabe

QR-Code-Generator .NET Core: Lesen und Erstellen von QR-Codes mit nur wenigen Codezeilen: Bild 6 - Ausgabebild QR-Code

Die Kanji-Kodierung speichert zwei Bytes pro Modul anstatt acht Bits, sodass ein japanischer QR-Code in derselben Version deutlich mehr Zeichen speichert als ein UTF-8-Byte-Modus-Äquivalent. Bei gemischten Inhalten – wie beispielsweise einer URL gefolgt von japanischem Text – segmentiert IronQR die Eingabe und kodiert jedes Segment im optimalen Modus. Sie müssen keine Segmentgrenzen angeben oder Kodierungshilfsfunktionen manuell aufrufen; Die Kodierungspipeline erledigt das für Sie.

Diese automatische Auswahl umfasst auch Extended Channel Interpretation (ECI)-Markierungen, die Scannern signalisieren, dass nicht standardmäßige Zeichensätze verwendet werden. Anwendungen, die auf internationale Märkte abzielen, können jeden Unicode-String direkt an QrWriter.Write() übergeben, ohne eine separate Konfiguration.

Wie verwendet man Payload-Generatoren für strukturierte QR-Daten?

Ein QR-Code, der eine einfache URL kodiert, eignet sich für die einfache Linkweitergabe, aber viele Anwendungen müssen strukturierte Daten kodieren – WLAN-Zugangsdaten, Visitenkarten im vCard-Format oder Ereignisdaten. Das manuelle Formatieren dieser Nutzdaten ist fehleranfällig; Ein fehlendes Semikolon oder eine falsche Feldreihenfolge führen dazu, dass Scanner die Daten falsch interpretieren.

IronQR stellt Payload-Hilfsfunktionen bereit, die diese strukturierten Zeichenketten korrekt erstellen:

using IronQr;
using IronSoftware.Drawing;

// Generate QR code with URL payload
var urlQrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
// Save QR as PNG image file
AnyBitmap qrImage = urlQrCode.Save();
qrImage.SaveAs("url-qr-code.png");
Console.WriteLine("QR code generated successfully.");

Erstellter QR-Code

QR-Code-Generator .NET Core: Lesen und Erstellen von QR-Codes mit nur wenigen Codezeilen: Bild 7 - QR-Code aus einer URL erstellt

Die Methode QrWriter.Write() akzeptiert entweder eine einfache Zeichenfolge oder ein strukturiertes Nutzlastobjekt. Bei WLAN-Netzwerken kodiert die Nutzlast die SSID, das Passwort und den Sicherheitstyp in einem Format, das von Android- und iOS-Scannern erkannt wird. Kontaktinformationen werden gemäß dem MeCard-Standard ausgegeben, der von den meisten mobilen QR-Code-Lesegeräten verwendet wird. Die Seite zur Generierungsfunktion dokumentiert alle unterstützten Payload-Typen und deren erforderliche Felder.

Die Bibliothek gibt Bilder in konfigurierbaren Pixelabmessungen aus. Für den Produktionseinsatz gewährleistet die Generierung von Codes mit einer Mindestgröße von 200x200 Pixeln ein zuverlässiges Scannen aus typischen Smartphone-Entfernungen. Größere Formate eignen sich für Außenanwendungen oder Druckanwendungen, bei denen der Scanabstand einen Meter überschreitet.

Wie kann man das Erscheinungsbild eines QR-Codes anpassen?

Mit IronQR haben Sie die Kontrolle über das visuelle Erscheinungsbild der generierten Codes, ohne die Lesbarkeit zu beeinträchtigen. Sie können die Vorder- und Hintergrundfarben ändern, ein individuelles Branding anwenden oder ein Logo in die Ruhezone in der Mitte einbetten.

using IronQr;
using IronSoftware.Drawing;

// Define custom colors for the QR code
var darkColor = Color.FromArgb(30, 30, 120);   // Deep navy foreground
var lightColor = Color.White;

var options = new QrOptions(QrErrorCorrectionLevel.High, maxVersion: 20)
{
    BackgroundColor = lightColor,
    Color = darkColor,
    // Embed a logo image into the QR center
    Logo = AnyBitmap.FromFile("logo.png")
};

QrCode styledQr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap output = styledQr.Save();
output.SaveAs("branded-qr.png");

Durch das Einbetten eines Logos verringert sich der effektive Datenbereich, daher benötigt die Bibliothek beim Bereitstellen eines Logos die Fehlerkorrekturstufe H. Die reservierte Ruhezone im Zentrum umfasst etwa 30 % der Codefläche, was innerhalb der Wiederherstellungskapazität der H-Ebene liegt. Die Bibliothek setzt diese Einschränkung automatisch durch – wenn Sie neben einem Logo eine niedrigere Fehlerkorrekturstufe festlegen, löst IronQR eine Ausnahme mit einer beschreibenden Meldung aus, anstatt einen Code zu erzeugen, der unzuverlässig gescannt werden kann.

Für ASP.NET Core Anwendungen zeigt das Tutorial zum ASP.NET Core QR-Code-Generator, wie generierte QR-Codes als Bildantworten von einer Controller-Aktion bereitgestellt werden. Der Ausgabestream schreibt direkt in die Antwort, ohne zwischenzeitliche Datei-E/A, wodurch die Latenz für stark frequentierte Endpunkte gering bleibt.

Wie liest man QR-Codes in einer ASP.NET Core Anwendung?

Das Scannen von QR-Codes serverseitig – aus hochgeladenen Bildern, Dokumentenverarbeitungspipelines oder automatisierten Inspektionssystemen – ist ein häufiger Anwendungsfall für die Lese-API. Die Anleitung zum ASP.NET -QR-Code-Scanner beschreibt die vollständige Einrichtung von Controller und Dienst, das grundlegende Lesemuster ist jedoch dasselbe wie bei einer Konsolenanwendung:

using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/qr")]
public class QrScanController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult Scan(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var bitmap = AnyBitmap.FromStream(stream);
        var imageInput = new QrImageInput(bitmap);
        var reader = new QrReader();
        var results = reader.Read(imageInput);

        var decoded = results.Select(r => new { r.Value, r.Url }).ToList();
        return Ok(decoded);
    }
}

Die Methode AnyBitmap.FromStream() akzeptiert jeden lesbaren Stream, sodass derselbe Codepfad für Dateien, die über ein Formular hochgeladen wurden, Bilder, die aus dem Blob-Speicher abgerufen wurden, oder Frames, die aus einer Videopipeline extrahiert wurden, funktioniert. Der Controller schreibt keine temporären Dateien auf die Festplatte, was bei containerisierten Bereitstellungen von Bedeutung ist, wo das Dateisystem schreibgeschützt sein kann.

Für Szenarien mit hohem Durchsatz initialisieren Sie QrReader einmal pro Lebensdauer der Anwendung als Singleton, da die Kosten für das Laden des ML-Modells bei der ersten Konstruktion anfallen. Nachfolgende Read() Aufrufe auf derselben Instanz sind threadsicher und teilen das geladene Modell.

Wie generiert man QR-Codes in einer .NET MAUI Anwendung?

Das .NET MAUI QR-Code-Tutorial zeigt die plattformübergreifende Erstellung auf iOS, Android, macOS und Windows vollständig. IronQR verwendet das SkiaSharp -Rendering-Backend, wenn es auf Nicht-Windows-Plattformen ausgeführt wird, wodurch eine konsistente Ausgabe auf allen MAUI-Zielen gewährleistet wird.

using IronQr;
using IronSoftware.Drawing;

// Generate QR and convert to a byte array for display in MAUI
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap bitmap = qr.Save();
byte[] imageBytes = bitmap.ExportBytes();

// Bind imageBytes to an <Image Source> in your MAUI page

Auf mobilen Zielen gibt ExportBytes() ein PNG-Byte-Array zurück, das Sie direkt in ein StreamImageSource einspeisen oder in ein ImageButton schreiben können. Das MAUI-Gerüst benötigt keine plattformspezifischen Codepfade – die gleiche Generierungslogik läuft auf allen vier MAUI-Zielen identisch ab.

Für VB .NET -Projekte ist die API-Oberfläche identisch; Lediglich die Syntax unterscheidet sich. Die Bibliothek wird als einzelnes NuGet Paket ausgeliefert, eine separate VB .NET -Assembly ist nicht erforderlich.

Was sind Ihre nächsten Schritte?

IronQR deckt den gesamten QR-Code-Lebenszyklus in .NET ab – von der grundlegenden Generierung und der strukturierten Nutzdatenkodierung bis hin zum ML-gestützten Lesen beschädigter oder markengeschützter Codes. Die Bibliothek übernimmt die Kanji-Kodierung, die Konfiguration der Fehlerkorrektur und die plattformübergreifende Bildausgabe, sodass Sie sich auf die für Ihre Anwendung spezifische Logik konzentrieren können.

Um das Gelernte in die Praxis umzusetzen:

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.