QR Code scannen aus Bildern in C
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 BarcodeReader.Read-Methode verwenden, um die QR-Daten effizient zu dekodieren.
Schnellstart: QR-Code aus einem Bild in C# lesen
Wie man QR-Codes aus Bildern liest
- Laden Sie die C#-Bibliothek herunter, um QR-Codes aus Bildern zu lesen.
- Importieren Sie die Bilddaten mit IronDrawing
- Create a `QrImageInput` object from the image data
- Pass the object to the ``Read`` method
- Iterieren Sie durch jeden erkannten QR-Code und prüfen Sie dessen Informationen
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.
-
Installieren Sie IronQR mit NuGet Package Manager
PM > Install-Package IronQR -
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}"); } } } } -
Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronQR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
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:
- 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
- Machine Learning Enhancement: Die ML-Modelle von IronQR erkennen und kompensieren häufige Probleme wie Unschärfe, Verzerrung und schlechte Beleuchtung
- 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}%");
}
}
}
}
Imports IronBarcode
Public Class EnhancedQRReader
Public Shared Sub ReadPoorQualityImage()
' Configure reader with multiple attempts and error correction
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed, ' More thorough scanning
.ExpectMultipleBarcodes = True, ' Check for multiple codes
.ExpectBarcodeTypes = BarcodeType.QRCode ' Focus on QR-Codes only
}
Using inputImage = Image.FromFile("blurry_qr_code.jpg")
Dim qrImageInput As New QrImageInput(inputImage)
Dim results = BarcodeReader.Read(qrImageInput, options)
For Each result In results.Barcodes
Console.WriteLine($"Decoded: {result.Value}")
Console.WriteLine($"Confidence: {result.Confidence}%")
Next
End Using
End Sub
End Class
Werte aus einem QR-Code abrufen
Die meisten IronQR-Funktionen geben eine Sammlung zurück, um mehrere Erkennungen zu unterstützen. Da es sich bei results um eine Sequenz von Objekten handelt, besitzt es selbst keine Value Eigenschaft. Der Beispielcode wählt speziell das erste QrResult aus der Sammlung aus und ruft dessen Wert ab.
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-value.cs
using System;
using System.Collections.Generic;
using System.Linq;
using IronQr;
using System.Drawing;
// Import image
var inputImage = Image.FromFile("sample.jpg");
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}");
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronQr
Imports System.Drawing
' Import image
Dim inputImage As Image = Image.FromFile("sample.jpg")
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}")
Erkennen der Position des QR-Codes in einem Bild
IronQR geht über die einfache Dekodierung hinaus, um genau zu lokalisieren, wo sich ein QR-Code in einem Bild befindet. Für die Positionierung wird ein Standardkoordinatensystem verwendet, bei dem PunktF (0,0) die linke obere Ecke des Bildes darstellt. Die genauen räumlichen Koordinaten der Ecken des QR-Codes sind über das Array Points[] zugänglich.
Im Beispiel werden die Koordinaten für alle vier Punkte des erkannten QR-Codes abgerufen und auf der Konsole ausgegeben.
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-position.cs
using System;
using System.Collections.Generic;
using IronQr;
using System.Drawing;
using System.Linq;
// Import an image containing a QR code
var inputImage = Image.FromFile("urlQr.png");
// Load the asset into a QrImageInput object
var imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
var reader = new QrReader();
// Read the input and get all embedded QR codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// [TL, TR, BL, BR]
string[] labels = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" };
var points = results.First().Points;
for (int i = 0; i < points.Length; i++)
{
Console.WriteLine($"{labels[i]}: {points[i].X}, {points[i].Y}");
}
Imports System
Imports System.Collections.Generic
Imports IronQr
Imports System.Drawing
Imports System.Linq
' Import an image containing a QR code
Dim inputImage As Image = Image.FromFile("urlQr.png")
' Load the asset into a QrImageInput object
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the input and get all embedded QR codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' [TL, TR, BL, BR]
Dim labels As String() = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" }
Dim points = results.First().Points
For i As Integer = 0 To points.Length - 1
Console.WriteLine($"{labels(i)}: {points(i).X}, {points(i).Y}")
Next
QR-Code Eingabe
Ausgabe
Beachten Sie, dass das System die genauen räumlichen Koordinaten jeder QR-Code-Ecke in der Konsole gespeichert hat.
Unterstützte QR-Code-Typen
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.
- 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.
- 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.
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("---");
}
}
}
}
}
Imports IronBarcode
Imports IronSoftware.Drawing
Public Class MultiTypeQRReader
Public Shared Sub ReadVariousQRTypes()
' Configure reader to handle all QR-Code types
Dim options As New BarcodeReaderOptions With {
.ExpectBarcodeTypes = BarcodeType.QRCode Or
BarcodeType.MicroQRCode Or
BarcodeType.RectangularMicroQRCode
}
Dim imagePaths As String() = {
"standard_qr.png",
"micro_qr.png",
"rectangular_qr.png"
}
For Each path In imagePaths
Using image = Image.FromFile(path)
Dim qrInput As New QrImageInput(image)
Dim results = BarcodeReader.Read(qrInput, options)
For Each qr In results.Barcodes
Console.WriteLine($"Type: {qr.BarcodeType}")
Console.WriteLine($"Data: {qr.Value}")
Console.WriteLine($"Format: {qr.Format}")
Console.WriteLine("---")
Next
End Using
Next
End Sub
End Class
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.

