Wie man QR-Codes aus Bildern in C# liest

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronQR ermöglicht es Entwicklern, QR-Codes aus verschiedenen Bildformaten in C# zu lesen, indem sie Bilder mit IronDrawing laden, ein QrImageInput-Objekt erstellen und die Methode BarcodeReader.Read verwenden, um die QR-Daten effizient zu decodieren.

als-Überschrift:2(Quickstart: Read QR Code from Image in C#)

Wie lese ich QR-Codes aus verschiedenen Bildformaten?

IronQR bietet integrierte Unterstützung für das Lesen von QR-Codes aus verschiedenen Bildformaten. Diese Funktion verwendet fortgeschrittene maschinelle Lernmodelle, um eine genaue Dekodierung über verschiedene Medientypen hinweg zu gewährleisten. Zu den unterstützten Formaten gehören:

  • Joint Photographic Experts Group (JPEG)
  • Portable Network Graphics (PNG)
  • Graphics Interchange Format (GIF)
  • Tagged Image File Format (TIFF)
  • Bitmap Image File (BMP)
  • WBMP
  • WebP
  • Icon (ico)
  • WMF
  • RawFormat (raw)

Diese Formatunterstützung wird durch die Open-Source-Bibliothek IronDrawing ermöglicht, die die Bildverarbeitung effizient handhabt. Sie können QR-Codes von Digitalkameras, Scannern, mobilen Geräten oder Web-Downloads ohne Formatkonvertierung verarbeiten.

Beispiel-QR-Code mit klarem Schwarz-Weiß-Muster, das die Positionierung von Quadraten und Datenmodulen zum Testen von Bildscans zeigt

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronQR mit dem NuGet-Paketmanager.

    PM > Install-Package IronQR

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    // Import necessary IronQR and IronDrawing namespaces
    using IronSoftware.Drawing; 
    using IronBarcode;
    
    public class QRCodeReader
    {
        public static void Main()
        {
            // Load an image from a file path
            using (var inputImage = Image.FromFile("path/to/your/image/file.webp"))
            {
                // Create a QrImageInput object from the image
                var qrImageInput = new QrImageInput(inputImage);
    
                // Decode the QR code from the image
                var result = BarcodeReader.Read(qrImageInput);
    
                // Iterate through each detected QR code and display its information
                foreach (var barcodeResult in result.Barcodes)
                {
                    Console.WriteLine($"QR Code Data: {barcodeResult.Value}");
                }
            }
        }
    }
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronQR in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Hinweis: Ersetzen Sie "path/to/your/image/file.webp" durch den tatsächlichen Pfad Ihrer QR-Code-Bilddatei.

Neugierig auf den Wert des QR-Codes in den Beispielbildern? Probieren Sie es mit dem Code-Snippet aus!

Warum unterstützt IronQR mehrere Bildformate?

Das Lesen eines QR-Codes bezieht sich auf das Scannen und Dekodieren der in einem QR-Code gespeicherten Informationen. Dies geschieht in der Regel mit einer Kamera oder einem Scanner in Verbindung mit einer Software, die die Daten des QR-Codes interpretieren kann. Die Informationen in einem QR-Code können Text, URLs, Kontaktdaten oder andere Datenformen sein.

Die Multiformat-Unterstützung von IronQR ist für reale Anwendungen unerlässlich, bei denen QR-Codes in verschiedenen Kontexten erscheinen - von Marketingmaterialien und Produktverpackungen bis hin zu digitalen Dokumenten und Webinhalten. Durch die Unterstützung verschiedener Formate stellt IronQR sicher, dass Entwickler robuste Anwendungen erstellen können, ohne sich Gedanken über die Kompatibilität der Bildformate machen zu müssen. Erfahren Sie mehr über die Lesefähigkeiten von IronQR, um zu verstehen, wie diese Flexibilität Ihren Entwicklungsworkflow verbessert.

Wann sollte ich jedes Bildformat verwenden?

Verschiedene Bildformate dienen unterschiedlichen Zwecken bei der QR-Code-Verarbeitung:

  • PNG: Am besten geeignet für QR-Codes, die Transparenz erfordern, oder wenn die Bildqualität von größter Bedeutung ist. Die verlustfreie Komprimierung von PNG sorgt dafür, dass QR-Code-Muster klar und deutlich lesbar bleiben.
  • JPEG: Ideal für Fotos, die QR-Codes enthalten, oder wenn die Dateigröße ein Problem darstellt. Verwenden Sie höhere Qualitätseinstellungen (80 %+), damit die Lesbarkeit nicht durch Kompressionsartefakte beeinträchtigt wird.
  • TIFF: Ideal für Archivierungszwecke oder für die Arbeit mit gescannten Dokumenten in Unternehmensumgebungen.
  • WebP: Modernes Format mit hervorragender Komprimierung bei gleichbleibender Qualität, ideal für Webanwendungen.

Um bei jedem Format optimale Ergebnisse zu erzielen, sollten Sie sicherstellen, dass Ihre Bilder eine ausreichende Auflösung (mindestens 300 DPI für gedruckte QR-Codes) und einen ausreichenden Kontrast aufweisen. Sehen Sie sich unsere erweiterten QR-Lesebeispiele für formatspezifische Optimierungstechniken an.

Was passiert, wenn die Bildqualität schlecht ist?

IronQR verfügt über Fehlertoleranzfunktionen, um mit unvollkommenen Bildern umzugehen. Beim Umgang mit Bildern von schlechter Qualität wendet die Bibliothek mehrere Strategien an:

  1. Fehlerkorrektur: QR-Codes verfügen über Fehlerkorrekturfunktionen (L-, M-, Q- und H-Stufen), die eine Datenwiederherstellung selbst dann ermöglichen, wenn bis zu 30 % des Codes beschädigt sind
  2. Machine Learning Enhancement: Die ML-Modelle von IronQR erkennen und kompensieren häufige Probleme wie Unschärfe, Verzerrung und schlechte Beleuchtung
  3. Vorbearbeitung: Die automatische Bildverbesserung verbessert Kontrast und Schärfe vor der Dekodierung

Für schwierige Szenarien sollten Sie die Benutzerdefinierten QR-Lesemodus-Optionen verwenden, um den Leseprozess zu optimieren:

// Example: Reading QR codes with enhanced error correction
using IronBarcode;

public class EnhancedQRReader
{
    public static void ReadPoorQualityImage()
    {
        // Configure reader with multiple attempts and error correction
        var options = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Detailed, // More thorough scanning
            ExpectMultipleBarcodes = true,  // Check for multiple codes
            ExpectBarcodeTypes = BarcodeType.QRCode // Focus on QR codes only
        };

        using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
        {
            var qrImageInput = new QrImageInput(inputImage);
            var results = BarcodeReader.Read(qrImageInput, options);

            foreach (var result in results.Barcodes)
            {
                Console.WriteLine($"Decoded: {result.Value}");
                Console.WriteLine($"Confidence: {result.Confidence}%");
            }
        }
    }
}
// Example: Reading QR codes with enhanced error correction
using IronBarcode;

public class EnhancedQRReader
{
    public static void ReadPoorQualityImage()
    {
        // Configure reader with multiple attempts and error correction
        var options = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Detailed, // More thorough scanning
            ExpectMultipleBarcodes = true,  // Check for multiple codes
            ExpectBarcodeTypes = BarcodeType.QRCode // Focus on QR codes only
        };

        using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
        {
            var qrImageInput = new QrImageInput(inputImage);
            var results = BarcodeReader.Read(qrImageInput, options);

            foreach (var result in results.Barcodes)
            {
                Console.WriteLine($"Decoded: {result.Value}");
                Console.WriteLine($"Confidence: {result.Confidence}%");
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Welche Arten von QR-Codes kann ich lesen?

Mehrere Arten von QR-Codes werden sowohl für die Erstellung als auch für das Lesen unterstützt. IronQR bietet umfassende Unterstützung für verschiedene QR-Code-Formate, um unterschiedliche Anwendungsanforderungen zu erfüllen. Erfahren Sie mehr über unterstützte QR-Formate in unserer Dokumentation. Nachfolgend die unterstützten QR-Code-Typen:

  • QRCode: Der Standard-QR-Code, der heute am häufigsten verwendet wird. Sie kann bis zu 7.089 numerische Zeichen oder 4.296 alphanumerische Zeichen speichern und eignet sich daher für Website-URLs, Kontaktinformationen und andere Anwendungen.
Beispiel-QR-Code mit klarem Schwarz-Weiß-Muster, das die Positionierung von Quadraten und Datenmodulen zum Testen von Bildscans zeigt
  • MicroQRCode: Eine kleinere Version des Standard-QR-Codes, die für begrenzten Platz ausgelegt ist. Es kann bis zu 35 numerische Zeichen oder 21 alphanumerische Zeichen speichern, ideal für kleine Verpackungen oder winzige gedruckte Etiketten.
Standard-QR-Code mit Suchmustern und Datenmodulen, die die typische QR-Code-Struktur zeigen
  • RMQRCode: RMQR-Code (Rectangular Mikro-QRCode) ist eine kompakte rechteckige Version anstelle eines quadratischen Codes. Diese Version ermöglicht ein flexibles Seitenverhältnis, was für Anwendungen nützlich ist, bei denen rechteckiger Platz zur Verfügung steht.
Rechteckiger QR-Code als Beispiel für ein nicht-quadratisches Format mit Standard-Positionsmarkierungen und Datenmustern

Wie wähle ich den richtigen QR-Code-Typ?

Die Auswahl des geeigneten QR-Code-Typs hängt von Ihrem spezifischen Anwendungsfall und den damit verbundenen Einschränkungen ab:

  • Standard-QR-Code: Wählen Sie diesen für allgemeine Anwendungen, bei denen der Platz nicht begrenzt ist und Sie eine maximale Datenkapazität benötigen. Perfekt für URLs, WiFi-Anmeldedaten, vCard-Kontakte oder detaillierte Produktinformationen. Siehe unsere QR-Code-Generierungsbeispiele für Details zur Implementierung.

  • Micro QR Code: Ideal für die Arbeit mit kleinen Oberflächen wie elektronischen Komponenten, Schmuckanhängern oder medizinischen Geräten. Trotz der begrenzten Kapazität ist es perfekt für Seriennummern, einfache URLs oder einfache Tracking-Codes.

  • RMQR-Code: Wählen Sie rechteckige Codes, wenn der verfügbare Platz bestimmte Einschränkungen in Bezug auf die Abmessungen aufweist, z. B. schmale Etiketten auf zylindrischen Produkten oder längliche Flächen an den Kanten von Verpackungen.

Was sind die Beschränkungen der Datenspeicherung?

Das Verständnis der Datenkapazität hilft bei der Optimierung Ihrer QR-Code-Implementierung:

QR-Code-Typ Nur numerisch Alphanumerisch Binär Kanji
Standard-QR 7,089 4,296 2,953 1,817
Mikro-QR 35 21 15 9
RMQR Variable Variable Variable Variable

Berücksichtigen Sie diese Faktoren bei der Planung der Datenspeicherung:

  • URL-Verkürzungen für Weblinks verwenden, um den verfügbaren Platz zu maximieren
  • Datenkompression für große Datensätze implementieren
  • Wählen Sie geeignete Fehlerkorrekturstufen (eine höhere Korrektur verringert die Kapazität)

Für fortgeschrittene Implementierungen können Sie unseren Leitfaden zur Erstellung von QR-Codes lesen, um Ästhetik und Datenkapazität in Einklang zu bringen.

Wann sollte ich Micro- oder RMQR-Codes verwenden?

Micro- und RMQR-Codes eignen sich hervorragend für bestimmte Szenarien:

Micro QR Codes sind perfekt für:

  • Elektronische Leiterplatten, die eine Komponentenverfolgung erfordern
  • Kleine medizinische Geräte, die Patienten- oder Medikamentenkennzeichnungen benötigen
  • Echtheitsprüfung von Schmuckstücken mit begrenztem Platz für die Gravur
  • Miniatur-Produktetiketten in der Fertigung

RMQR-Codes eignen sich am besten für:

  • Schmale Versandetiketten auf Schläuchen oder Rohren
  • Verlängerte Leerzeichen auf Stifthülsen oder Werkzeugen
  • Marketingmaterialien im Banner-Stil
  • Integration in bestehende rechteckige Gestaltungselemente

Hier ist ein praktisches Beispiel für das Lesen verschiedener QR-Code-Typen:

using IronBarcode;
using IronSoftware.Drawing;

public class MultiTypeQRReader
{
    public static void ReadVariousQRTypes()
    {
        // Configure reader to handle all QR code types
        var options = new BarcodeReaderOptions
        {
            ExpectBarcodeTypes = BarcodeType.QRCode | 
                                BarcodeType.MicroQRCode | 
                                BarcodeType.RectangularMicroQRCode
        };

        string[] imagePaths = {
            "standard_qr.png",
            "micro_qr.png", 
            "rectangular_qr.png"
        };

        foreach (var path in imagePaths)
        {
            using (var image = Image.FromFile(path))
            {
                var qrInput = new QrImageInput(image);
                var results = BarcodeReader.Read(qrInput, options);

                foreach (var qr in results.Barcodes)
                {
                    Console.WriteLine($"Type: {qr.BarcodeType}");
                    Console.WriteLine($"Data: {qr.Value}");
                    Console.WriteLine($"Format: {qr.Format}");
                    Console.WriteLine("---");
                }
            }
        }
    }
}
using IronBarcode;
using IronSoftware.Drawing;

public class MultiTypeQRReader
{
    public static void ReadVariousQRTypes()
    {
        // Configure reader to handle all QR code types
        var options = new BarcodeReaderOptions
        {
            ExpectBarcodeTypes = BarcodeType.QRCode | 
                                BarcodeType.MicroQRCode | 
                                BarcodeType.RectangularMicroQRCode
        };

        string[] imagePaths = {
            "standard_qr.png",
            "micro_qr.png", 
            "rectangular_qr.png"
        };

        foreach (var path in imagePaths)
        {
            using (var image = Image.FromFile(path))
            {
                var qrInput = new QrImageInput(image);
                var results = BarcodeReader.Read(qrInput, options);

                foreach (var qr in results.Barcodes)
                {
                    Console.WriteLine($"Type: {qr.BarcodeType}");
                    Console.WriteLine($"Data: {qr.Value}");
                    Console.WriteLine($"Format: {qr.Format}");
                    Console.WriteLine("---");
                }
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Für den produktiven Einsatz sollten Sie unseren Leitfaden zu NuGet-Paketen lesen, um sicherzustellen, dass Sie das richtige Paket für Ihre Plattform haben, und die API-Referenz lesen, um eine umfassende Dokumentation zu allen verfügbaren Methoden und Eigenschaften zu erhalten.

Häufig gestellte Fragen

Welche Bildformate werden von IronQR zum Lesen von QR-Codes unterstützt?

IronQR unterstützt das Lesen von QR-Codes aus mehreren Bildformaten, darunter JPEG, PNG, GIF, TIFF, BMP, WBMP, WebP, ICO, WMF und RawFormat. Diese umfassende Formatunterstützung wird von IronDrawing unterstützt, so dass Sie QR-Codes aus verschiedenen Quellen ohne Formatkonvertierung verarbeiten können.

Wie lese ich einen QR-Code aus einer Bilddatei in C#?

Um einen QR-Code mit IronQR zu lesen, laden Sie zunächst Ihr Bild mit Image.FromFile(), erstellen Sie ein QrImageInput-Objekt aus dem geladenen Bild und verwenden Sie dann BarcodeReader.Read(), um die QR-Daten zu dekodieren. Die Methode gibt Ergebnisse zurück, durch die Sie iterieren können, um auf die Informationen jedes erkannten QR-Codes zuzugreifen.

Welche Technologie ermöglicht das genaue Lesen von QR-Codes in verschiedenen Medientypen?

IronQR verwendet fortschrittliche maschinelle Lernmodelle, um eine genaue Dekodierung von QR-Codes in verschiedenen Medientypen und Bildformaten zu gewährleisten. Dieser KI-gestützte Ansatz trägt dazu bei, auch bei schwierigen Bildbedingungen eine hohe Genauigkeit zu gewährleisten.

Kann ich mehrere QR-Codes aus einem einzigen Bild lesen?

Ja, IronQR kann mehrere QR-Codes aus einem einzigen Bild erkennen und lesen. Die Methode BarcodeReader.Read gibt eine Sammlung von Ergebnissen zurück, so dass Sie mit einer foreach-Schleife durch jeden erkannten QR-Code iterieren können, um auf einzelne QR-Code-Daten zuzugreifen.

Welche Arten von Daten können in QR-Codes gespeichert werden, die IronQR liest?

IronQR kann verschiedene Arten von Daten dekodieren, die in QR-Codes gespeichert sind, darunter Klartext, URLs, Kontaktdaten und andere Formen strukturierter Daten. Die dekodierten Informationen sind über die Value-Eigenschaft eines jeden BarcodeResult-Objekts zugänglich.

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 ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 54,049 | Version: 2025.12 gerade veröffentlicht