using IronQr;
using IronSoftware.Drawing;
// Create a QR Code object
QrCode myQr = QrWriter.Write("hello world");
// Save QR Code as a Bitmap
AnyBitmap qrImage = myQr.Save();
// Save QR Code Bitmap as File
qrImage.SaveAs("qr.png");
QR-Codes sind in unserer digitalen Welt allgegenwärtig und werden häufig in der Werbung, im Einzelhandel, im Veranstaltungsmanagement und anderen Bereichen eingesetzt. Für Entwickler, die mit dem ASP.NET-Framework arbeiten, kann die Integration von QR-Code-Scanfunktionen in Webanwendungen die Benutzerfreundlichkeit und Funktionalität verbessern. In diesem Artikel wird der Prozess der Implementierung eines QR-Code-Scanners in einer ASP.NET-Anwendung untersucht, wobei die erforderlichen Tools, Bibliotheken und die schrittweise Implementierung behandelt werden. Wir werden dieIronQReine leistungsfähige Bibliothek zur Erzeugung von QR-Codes ausIron Software um QR-Codes zu lesen.
Scannen von QR-Codes in ASP .NET
ASP.NET-Projekt mit Visual Studio erstellen
Installieren SieIronQR bibliothek aus dem Paketmanager
Laden Sie das QR-Bild hoch und lesen Sie den QR.
Erweiterte QR-Codes lesen
QR-Codes und ihre Anwendungsfälle verstehen
QR(Schnelle Antwort) codes sind zweidimensionale Strichcodes, die Informationen von URLs bis hin zu Kontaktdaten speichern können und in der Regel mit Smartphones oder speziellen Lesegeräten gescannt werden. In Webanwendungen können QR-Codes verschiedenen Zwecken dienen, wie zum Beispiel:
Schneller Website-Zugang: Weiterleitung der Nutzer zu einer bestimmten URL, ohne dass sie etwas eintippen müssen.
Veranstaltungs-Ticketverkauf: Überprüfung von QR-Codes auf Tickets für den Zugang zu Veranstaltungen.
Bezahlsysteme: Erleichterung der Bezahlung durch Scannen eines QR-Codes.
Produktinformationen: Bereitstellung zusätzlicher Informationen über Produkte.
Einführung in IronQR
IronQR ist eine leistungsstarke .NET-Bibliothek, die für die Erzeugung und das Scannen von QR-Codes entwickelt wurde und robuste Funktionen mit Blick auf die Benutzerfreundlichkeit bietet. Diese vielseitige Bibliothek verarbeitet nicht nur QR-Codes, sondern kann auch andere Barcodetypen verwalten, was sie zu einer bevorzugten Wahl für Entwickler macht, die im .NET-Ökosystem arbeiten. Im Folgenden wird untersucht, wie die IronQR-Bibliothek in eine ASP.NET-Anwendung integriert werden kann, um das Scannen von QR-Codes zu erleichtern.
Die wichtigsten Vorteile und Merkmale von IronQR
Lesen von QR-Codes:IronQR kann QR-Codes aus verschiedenen Bildformaten lesen, darunter jpg, png, svg, bmp, gif, tif, tiff und andere. Es unterstützt auch mehrseitige Bilder und benutzerdefinierte QR-Erkennungsmodelle. Die Ausgabedatenformate umfassen Text, URLs, Koordinaten und mehr.
Schreiben von QR-Codes: Sie können QR-Codes erstellen und als Bilder speichern(jpg, png, gif, tiff, bmp)oder sogar auf bestehende PDFs stempeln. Kodieren Sie Daten wie Text, URLs, Bytes und Zahlen und erzeugen Sie QR-Codes. Passen Sie das Design des QR-Codes an, indem Sie die Größe ändern, die Ränder anpassen, neu einfärben und Logos hinzufügen.
Fehlerbehandlung und -korrektur:IronQR bietet detaillierte Fehlermeldungen und eine benutzerdefinierte QR-Fehlerkorrektur. Es gewährleistet Fehlertoleranz und unterstützt Nullprüfungen und Prüfsummen.
Erweitertes maschinelles Lernmodell:IronQR verwendet ein fortschrittliches Machine-Learning-Modell für die QR-Code-Erkennung. Dieses Modell gewährleistet ein genaues und zuverlässiges Lesen von QR-Codes über verschiedene Plattformen hinweg, einschließlich Mobil-, Desktop- und Cloud-Umgebungen.
Plattformübergreifende Kompatibilität:IronQR wurde für C#, F# und VB.NET entwickelt und läuft auf verschiedenen .NET-Versionen wie .NET Core(8, 7, 6, 5 und 3.1+), .NET-Standard(2.0+), .NET-Framework(4.6.2+)
Es unterstützt verschiedene Projekttypen, darunter Web(Blazor und WebForms)mobil(Xamarin & MAUI)schreibtisch(WPF UND MAUI)und Konsolenanwendungen.
Breite QR-Code-Unterstützung: IronQR zeichnet sich durch eine breite Palette von QR-Codes und anderen Arten von Barcodes aus. Ganz gleich, ob es sich um Standard-QR-Codes, Micro-QR-Codes, ein QR-Code-Barcode-Bild oder sogar um spezielle Formate wie Aztec oder Data Matrix handelt,IronQR hat für Sie gesorgt. IronQR unterstützt auch die Funktion zum Lesen von QR-Code-Barcodes.
IronQR von .NET API-Produkten, die verschiedene Tools für Office-Dokumente, PDF-Bearbeitung, OCR und mehr umfassen.
Schritt 1: Erstellen Sie ein neues ASP.NET-Projekt mit Visual Studio
Beginnen Sie mit der Erstellung eines neuen Projekts und wählen Sie die MVC-Vorlage wie unten gezeigt
Als nächstes sollten Sie einen Projektnamen und einen Standort für das Projekt angeben.
Wählen Sie die .NET-Version.
Wenn Sie auf die Schaltfläche "Erstellen" klicken, werden der folgende Code und das folgende Projekt erstellt.
Schritt 2: Installieren der IronQR-Bibliothek über den Visual Studio Package Manager
Installieren SieIronQR bibliothek aus dem Visual Studio-Paketmanager wie unten gezeigt
IronQR kann auch installiert werden mitNuGet Paketmanager.
Schritt 3: Hochladen des QR-Bildes und Lesen des QR-Bildes
Nun wollen wir eine QR-Code-App erstellen.
QrCode"-Modell erstellen
using System.ComponentModel.DataAnnotations;
namespace IronQRScannerAsp.Models
{
public class QRCodeModel
{
[Display(Name = "Select QR Image")]
public IFormFile QRCodeImage
{
get;
set;
}
}
}
using System.ComponentModel.DataAnnotations;
namespace IronQRScannerAsp.Models
{
public class QRCodeModel
{
[Display(Name = "Select QR Image")]
public IFormFile QRCodeImage
{
get;
set;
}
}
}
Imports System.ComponentModel.DataAnnotations
Namespace IronQRScannerAsp.Models
Public Class QRCodeModel
<Display(Name := "Select QR Image")>
Public Property QRCodeImage() As IFormFile
End Class
End Namespace
$vbLabelText $csharpLabel
Einen QR-Code-Controller erstellen
Fügen Sie einen neuen Controller hinzu, indem Sie mit der rechten Maustaste auf den Controller-Ordner klicken und einen Namen vergeben (siehe unten):
Wählen Sie Leerer Controller.
Geben Sie den Namen des Controllers an.
Fügen Sie nun den folgenden Code in den Controller ein.
using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace IronQRScannerAsp.Controllers
{
public class QrCodeController : Controller
{
private readonly IWebHostEnvironment _environment;
public QrCodeController(IWebHostEnvironment environment)
{
_environment = environment;
}
public IActionResult Index()
{
ViewBag.QrCodeText = "Text";
return View();
}
[HttpPost]
public IActionResult ScanQRCode(QRCodeModel qrImage)
{
string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
using (var stream = System.IO.File.Create(filePath))
{
qrImage.QRCodeImage.CopyTo(stream);
}
// Open the asset to read a QR Code from
var bitmap = AnyBitmap.FromFile(filePath);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(bitmap);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
ViewBag.QrCodeText = results.First().Value;
string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
ViewBag.QrCodeUri = imageUrl;
return View();
}
}
}
using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace IronQRScannerAsp.Controllers
{
public class QrCodeController : Controller
{
private readonly IWebHostEnvironment _environment;
public QrCodeController(IWebHostEnvironment environment)
{
_environment = environment;
}
public IActionResult Index()
{
ViewBag.QrCodeText = "Text";
return View();
}
[HttpPost]
public IActionResult ScanQRCode(QRCodeModel qrImage)
{
string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
using (var stream = System.IO.File.Create(filePath))
{
qrImage.QRCodeImage.CopyTo(stream);
}
// Open the asset to read a QR Code from
var bitmap = AnyBitmap.FromFile(filePath);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(bitmap);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
ViewBag.QrCodeText = results.First().Value;
string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
ViewBag.QrCodeUri = imageUrl;
return View();
}
}
}
Imports IronQr
Imports IronQRScannerAsp.Models
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Namespace IronQRScannerAsp.Controllers
Public Class QrCodeController
Inherits Controller
Private ReadOnly _environment As IWebHostEnvironment
Public Sub New(ByVal environment As IWebHostEnvironment)
_environment = environment
End Sub
Public Function Index() As IActionResult
ViewBag.QrCodeText = "Text"
Return View()
End Function
<HttpPost>
Public Function ScanQRCode(ByVal qrImage As QRCodeModel) As IActionResult
Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "ScanQRCode")
If Not Directory.Exists(path) Then
Directory.CreateDirectory(path)
End If
Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png")
Using stream = System.IO.File.Create(filePath)
qrImage.QRCodeImage.CopyTo(stream)
End Using
' Open the asset to read a QR Code from
Dim bitmap = AnyBitmap.FromFile(filePath)
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(bitmap)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the Input an get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
ViewBag.QrCodeText = results.First().Value
Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/ScanQRCode/qrcode.png"
ViewBag.QrCodeUri = imageUrl
Return View()
End Function
End Class
End Namespace
$vbLabelText $csharpLabel
Code Erläuterung
Das bereitgestellte Codeschnipsel ist für einen ASP.NET Core MVC-Controller mit dem Namen QrCodeController, der für die Handhabung von QR-Code-Scan-Funktionen unter Verwendung der IronQR-Bibliothek konzipiert ist. Hier ist eine kurze Beschreibung, was der Code macht:
1. Speichern des hochgeladenen QR-Code-Bildes
Pfad Konstruktion
Er konstruiert einen Dateipfad(pfad) im Web-Root-Verzeichnis der Anwendung speziell für die Speicherung von QR-Code-Bildern("ScanQRCode"-Verzeichnis).
Es wird geprüft, ob dieses Verzeichnis existiert, und wenn nicht, wird es erstellt, um Fehler beim Speichern der Datei zu vermeiden.
Speichern von Dateien
Sie konstruiert den vollständigen Dateipfad(Dateipfad) wo das hochgeladene QR-Code-Bild gespeichert werden soll("ScanQRCode/qrcode.png"). Dadurch werden alle vorhandenen Dateien mit demselben Namen überschrieben, so dass neue Scans ohne die Anhäufung von Dateien durchgeführt werden können.
Es öffnet einen Dateistrom und kopiert den Inhalt des hochgeladenen Bildes(qrImage.QRCodeImage, wahrscheinlich eine Formulardatei) an den angegebenen Speicherort auf dem Server.
2. Dekodierung des QR-Codes
Lesen der Bilddatei
Verwendet `AnyBitmap.FromFile(dateipfad)um die gespeicherte Bilddatei in ein für das Scannen von QR-Codes geeignetes Format zu laden. anyBitmap" dient wahrscheinlich als Hilfsklasse für die Umwandlung von Bilddateien in ein Bitmap-Objekt, das der QR-Reader verarbeiten kann.
Initialisierung des QR-Readers
Verpackt die geladene Bitmap in ein QrImageInput, das speziell als Eingabe für den QR-Code-Leseprozess gedacht ist. Instanziiert einen QrReader, eine Komponente der IronQR-Bibliothek, die für die Erkennung und Dekodierung von QR-Codes konfiguriert ist.
Scannen des QR-Codes
Ruft Leser.Lesen(imageInput) um das Bild für QR-Codes zu scannen. Diese Methode gibt ein IEnumerable<QrResult>jedes "QrResult" enthält die Daten eines erkannten QR-Codes im Bild. Es extrahiert den Wert des ersten Ergebnisses mitresults.First().Value" und speichern diese entschlüsselten Informationen in "ViewBag.QrCodeText". Dabei wird davon ausgegangen, dass das Bild mindestens einen QR-Code enthält, und mögliche Fehler, bei denen keine QR-Codes erkannt werden, werden nicht behandelt.
3. Vorbereiten und Zurücksenden der Antwort
Bild-URL Konstruktion
Konstruiert eine URL(imageUrl) die auf das gespeicherte QR-Code-Bild auf dem Server verweist. Diese URL wird unter Verwendung des Schemas, des Hosts und der Pfadbasis der aktuellen HTTP-Anfrage erstellt, um sicherzustellen, dass die Benutzer auf sie zugreifen können. Die konstruierte URL wird in "ViewBag.QrCodeUri" gespeichert.
Ansicht Rückkehr
Gibt die gleiche Ansicht zurück(Ansicht())die dem Benutzer wahrscheinlich sowohl das QR-Code-Bild als auch den entschlüsselten Text anzeigt. Die "ViewBag" wird verwendet, um den dekodierten Text des QR-Codes und die URL des Bildes zum Rendern an die Ansicht zu übergeben.
View zur Controller-Klasse hinzufügen
Fügen Sie eine neue Ansicht hinzu und klicken Sie mit der rechten Maustaste auf die Aktionsmethode "CreateQRCode" in der Klasse "QRCodeController".
Wählen Sie die Option "Ansicht hinzufügen" und dann "Razor-Ansicht". Klicken Sie auf "Hinzufügen".
Wählen Sie dann die Vorlage "Erstellen" und die zuvor erstellte Modellklasse.
Ersetzen Sie nun den Code in der View-Klasse durch den unten dargestellten.
Wählen Sie auf der Seite ein QR-Code-Bild aus und klicken Sie auf Hochladen, um den QR-Code zu entschlüsseln. Diese App kann auch so modifiziert werden, dass sie von einem Video-Feed liest und die Ergebnisse anzeigt.
Schritt 4: Erweiterten QR-Code lesen
Um erweiterte QR-Codes zu lesen, bietet IronQR die folgenden Einstellungen.
using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;
var inputBmp = AnyBitmap.FromFile("QrImage.png");
// Use Auto => Machine Learning Scan
// Careful Scan => Useful for scanning documents slowly and carefully
QrImageInput scan_ML_and_normal = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results1 = new QrReader().Read(scan_ML_and_normal);
// Use Machine Learning Scan
// High Speed => For scanning frames from a camera
QrImageInput scan_ML_only = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results2 = new QrReader().Read(scan_ML_only);
// Use Scan without Machine Learning
QrImageInput scan_normal_only = new QrImageInput(inputBmp, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> results3 = new QrReader().Read(scan_normal_only);
using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;
var inputBmp = AnyBitmap.FromFile("QrImage.png");
// Use Auto => Machine Learning Scan
// Careful Scan => Useful for scanning documents slowly and carefully
QrImageInput scan_ML_and_normal = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results1 = new QrReader().Read(scan_ML_and_normal);
// Use Machine Learning Scan
// High Speed => For scanning frames from a camera
QrImageInput scan_ML_only = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results2 = new QrReader().Read(scan_ML_only);
// Use Scan without Machine Learning
QrImageInput scan_normal_only = new QrImageInput(inputBmp, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> results3 = new QrReader().Read(scan_normal_only);
Imports IronQr
Imports IronSoftware.Drawing
Imports IronQr.Enum
Imports System.Collections.Generic
Private inputBmp = AnyBitmap.FromFile("QrImage.png")
' Use Auto => Machine Learning Scan
' Careful Scan => Useful for scanning documents slowly and carefully
Private scan_ML_and_normal As New QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel)
Private results1 As IEnumerable(Of QrResult) = (New QrReader()).Read(scan_ML_and_normal)
' Use Machine Learning Scan
' High Speed => For scanning frames from a camera
Private scan_ML_only As New QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel)
Private results2 As IEnumerable(Of QrResult) = (New QrReader()).Read(scan_ML_only)
' Use Scan without Machine Learning
Private scan_normal_only As New QrImageInput(inputBmp, QrScanMode.OnlyBasicScan)
Private results3 As IEnumerable(Of QrResult) = (New QrReader()).Read(scan_normal_only)
$vbLabelText $csharpLabel
Durch die Nutzung der neuesten ML-Technologie haben wir den QR-Code-Leser auf ein neues Niveau gehoben. Das hochentwickelte ML-Modell verbessert die Genauigkeit und Effizienz von Anwendungen bei der Dekodierung von QR-Codes, selbst unter komplexen Bedingungen. Ganz gleich, ob QR-Codes aus Standbildern, Videostreams oder Live-Kamerafeeds gelesen werden, die ML-gestützte Lösung liefert schnell und zuverlässig die gewünschten Informationen. Diese Innovation optimiert den Datenabruf und erhöht die Sicherheit, indem sie echte QR-Codes identifiziert und potenzielle Bedrohungen kennzeichnet. Mit unserer ML-Technologie können Sie sicher sein, dass Ihre QR-Code-Scanfunktionen auf dem neuesten Stand sind und Ihren Benutzern ein reibungsloses und sicheres Erlebnis bieten
Lizenz (Testversion verfügbar)
Entwickler können eine IronQR-Testlizenz erhalten vonhier. Der Schlüssel muss in der Datei appSettings.json abgelegt werden.
{
"IronQR.License.LicenseKey": "My key"
}
Schlussfolgerung
In diesem Artikel haben wir untersucht, wie man QR-Codes in ASP.NET Core scannt, indem wirIronQR. Integration vonIronQR in eine ASP.NET-Anwendung zum Scannen von QR-Codes ist ein unkomplizierter Prozess, der die Möglichkeiten von Webanwendungen erweitert und sie interaktiver und benutzerfreundlicher macht. IronQRdie leistungsstarken Funktionen und die Benutzerfreundlichkeit machen es zu einer ausgezeichneten Wahl für Entwickler, die Barcode-bezogene Funktionen implementieren möchten.
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS Wie man QR-Codes in ASP .NET Core generiert