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");
Les codes QR sont devenus omniprésents dans notre monde numérique, fréquemment utilisés dans la publicité, le commerce de détail, la gestion d'événements, etc. Pour les développeurs travaillant dans le Framework .NET, l'intégration de capacités de lecture de codes QR dans les applications web peut améliorer l'expérience de l'utilisateur et la fonctionnalité. Cet article explore le processus de mise en œuvre d'un scanner de code QR dans une application ASP.NET, en couvrant les outils et les bibliothèques nécessaires, ainsi que la mise en œuvre étape par étape. Nous utiliseronsIronQRune bibliothèque puissante pour la génération de codes QR à partir deIron Software pour lire les codes QR.
Comment scanner un code QR en ASP .NET
Créer un projet ASP.NET à l'aide de Visual Studio
InstallerIronQR bibliothèque à partir du gestionnaire de paquets
Télécharger l'image QR et lire la QR.
Lire un code QR avancé
Comprendre les codes QR et leurs cas d'utilisation
QR(Réponse rapide) sont des codes-barres bidimensionnels qui peuvent stocker des informations allant de l'URL aux coordonnées, généralement scannés à l'aide de smartphones ou d'appareils de lecture dédiés. Dans les applications web, les codes QR peuvent avoir diverses fonctions, telles que :
Accès rapide au site web : Diriger les utilisateurs vers une URL spécifique sans qu'ils aient besoin de la taper.
Billetterie d'événement : Vérification des codes QR sur les billets pour l'accès aux événements.
Systèmes de paiement : Faciliter le paiement en scannant un code QR.
Informations sur les produits : Fournir des informations supplémentaires sur les produits.
Présentation d'IronQR
IronQR est une puissante bibliothèque .NET conçue pour la génération et la numérisation de codes QR, offrant des fonctionnalités robustes et faciles à utiliser. Cette bibliothèque polyvalente gère non seulement les codes QR, mais aussi d'autres types de codes-barres, ce qui en fait un choix privilégié pour les développeurs travaillant dans l'écosystème .NET. Nous verrons ici comment intégrer la bibliothèque IronQR for .NET dans une application ASP.NET pour faciliter la lecture des codes QR.
Principaux avantages et caractéristiques d'IronQR
Lire les QR Codes :IronQR peut lire les codes QR à partir de différents formats d'image, notamment jpg, png, svg, bmp, gif, tif, tiff, etc. Il prend également en charge les images multipages et les modèles de détection QR personnalisés. Les formats de données de sortie comprennent le texte, les URL, les coordonnées, etc.
Rédaction de codes QR : Vous pouvez générer des codes QR et les enregistrer sous forme d'images(jpg, png, gif, tiff, bmp)ou des flux de données, ou même de les ajouter à des PDF existants. Encodez des données telles que du texte, des URL, des octets et des nombres et générez des codes QR. Personnalisez le style du code QR en le redimensionnant, en ajustant les marges, en le recolorant et en ajoutant des logos.
Traitement et correction des erreurs :IronQR fournit des messages d'erreur détaillés et une correction d'erreur QR personnalisée. Il garantit la tolérance aux pannes et prend en charge la vérification de la nullité et les sommes de contrôle.
Modèle d'apprentissage automatique avancé :IronQR utilise un modèle avancé d'apprentissage automatique pour la reconnaissance des codes QR. Ce modèle garantit une lecture précise et fiable des codes QR sur différentes plateformes, y compris les environnements mobiles, de bureau et en nuage.
Compatibilité multiplateforme :IronQR est conçu pour C#, F# et VB.NET, fonctionnant sur différentes versions de .NET comme .NET Core(8, 7, 6, 5 et 3.1+), Standard .NET(2.0+), Framework .NET(4.6.2+)
Il prend en charge différents types de projets, y compris les projets web(Blazor et WebForms)mobile(Xamarin et MAUI), bureau(WPF ET MAUI)et les applications sur console.
Prise en charge étendue des codes QR : IronQR excelle dans le traitement d'une large gamme de codes QR et d'autres types de codes-barres. Qu'il s'agisse de codes QR standard, de micro-codes QR, d'une image de code-barres QR ou même de formats spécifiques comme Aztec ou Data Matrix,IronQR vous couvre. IronQR prend également en charge la fonctionnalité de lecture des codes-barres QR.
IronQR des produits de l'API .NET, qui comprend divers outils pour les documents bureautiques, l'édition de PDF, l'OCR, etc.
Étape 1 : Créer un nouveau projet ASP.NET à l'aide de Visual Studio
Commencez par créer un nouveau projet et sélectionnez le modèle MVC comme indiqué ci-dessous
Ensuite, vous devez fournir un nom de projet et un emplacement pour le projet.
Sélectionnez la version .NET.
En cliquant sur le bouton de création, le code et le projet suivants seront créés.
Étape 2 : Installer la bibliothèque IronQR à partir du gestionnaire de paquets de Visual Studio
InstallerIronQR à partir du gestionnaire de paquets de Visual Studio, comme indiqué ci-dessous
IronQR peut également être installé à l'aide deNuGet Gestionnaire de paquets.
Étape 3 : Télécharger l'image QR et lire l'image QR
Créons maintenant une application de code QR.
Créer un modèle `QrCode
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
Créer un contrôleur de code QR
Ajoutez un nouveau contrôleur en faisant un clic droit sur le dossier du contrôleur et en lui donnant un nom, comme indiqué ci-dessous :
Sélectionnez Empty Controller.
Indiquer le nom du contrôleur.
Ajoutez maintenant le code suivant au contrôleur.
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
Explication du code
L'extrait de code fourni concerne un contrôleur ASP.NET Core MVC nommé QrCodeController, qui est conçu pour gérer les fonctionnalités de numérisation des codes QR à l'aide de la bibliothèque IronQR. Voici une brève description de ce que fait le code :
1. Enregistrement de l'image du code QR téléchargée
Construction d'un chemin
Il construit un chemin d'accès au fichier(chemin) dans le répertoire racine de l'application web, spécifiquement pour l'enregistrement des images de codes QR("Répertoire "ScanQRCode).
Il vérifie si ce répertoire existe et, si ce n'est pas le cas, le crée afin d'éviter toute erreur de fichier non trouvé lors de l'enregistrement du fichier.
Sauvegarde des fichiers
Il construit le chemin d'accès complet au fichier(filePath) où l'image du code QR téléchargée sera sauvegardée("ScanQRCode/qrcode.png"). Cette opération écrase tout fichier existant portant le même nom, ce qui permet de traiter efficacement les nouvelles analyses sans accumuler de fichiers.
Il ouvre un flux de fichiers et copie le contenu de l'image téléchargée(qrImage.QRCodeImage, probablement un fichier de formulaire) à l'emplacement spécifié sur le serveur.
2. Décoder le code QR
Lecture du fichier image
Utilise AnyBitmap.FromFile(chemindefichier) pour charger le fichier image enregistré dans un format adapté à la lecture du code QR. AnyBitmap sert probablement de classe d'aide pour convertir les fichiers images en un objet bitmap que le lecteur QR peut traiter.
Initialisation du lecteur QR
Enveloppe le bitmap chargé dans un QrImageInput, qui est spécifiquement conçu pour être une entrée pour le processus de lecture du code QR. Instancie un QrReader, un composant de la bibliothèque IronQR configuré pour détecter et décoder les codes QR.
Scanner le code QR
Appelle reader.Read(imageInput) pour scanner l'image pour les codes QR. Cette méthode renvoie un IEnumerable<QrResult>, où chaque QrResult contient les données d'un code QR détecté dans l'image. Il extrait la valeur du premier résultat en utilisant results.First().Value et stocker cette information décodée dans ViewBag.QrCodeText. Cela suppose que l'image contient au moins un code QR et ne gère pas les erreurs potentielles lorsqu'aucun code QR n'est détecté.
3. Préparation et renvoi de la réponse
Construction de l'URL de l'image
Construit un URL(imageUrl) pointant vers l'image du code QR enregistrée sur le serveur. Cette URL est construite en utilisant le schéma, l'hôte et le chemin d'accès de la requête HTTP en cours, ce qui garantit qu'elle est accessible aux utilisateurs. L'URL construite est enregistrée dans ViewBag.QrCodeUri.
Voir le retour
Retourne la même vue(Voir())qui affiche probablement à la fois l'image du code QR et le texte décodé à l'utilisateur. Le ViewBag est utilisé pour transmettre le texte décodé du code QR et l'URL de l'image à la vue pour le rendu.
Ajouter une vue à la classe Controller
Ajoutez une nouvelle vue, faites un clic droit sur la méthode d'action CreateQRCode dans la classe QrCodeController.
Sélectionnez l'option "Ajouter une vue" puis "Vue rasoir". Cliquez sur "Ajouter".
Sélectionnez ensuite le modèle "Créer" et la classe de modèle générée précédemment.
Remplacez maintenant le code de la classe de vue par le code ci-dessous.
Sur la page, sélectionnez une image de code QR et cliquez sur télécharger pour décoder le code QR. Cette application peut également être modifiée pour lire un flux vidéo et afficher les résultats.
Étape 4 : Lire le code QR avancé
Pour lire les codes QR avancés, IronQR propose les paramètres suivants.
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
En tirant parti de la technologie ML la plus récente, nous avons élevé le lecteur de code QR à de nouveaux sommets. Le modèle ML sophistiqué améliore la précision et l'efficacité des applications de décodage des codes QR, même dans des conditions complexes. Qu'il s'agisse de lire des codes QR à partir d'images fixes, de flux vidéo ou de flux de caméras en direct, la solution alimentée par la ML fournit les informations requises de manière rapide et fiable. Cette innovation rationalise la récupération des données et renforce la sécurité en identifiant les codes QR authentiques et en signalant les menaces potentielles. Grâce à notre technologie ML, vous pouvez être certain que vos capacités de numérisation de codes QR sont à la pointe de la technologie, offrant à vos utilisateurs une expérience fluide et sécurisée
Licence (version d'essai disponible)
Les développeurs peuvent obtenir une licence d'essai d'IronQR à l'adresse suivanteici. La clé doit être placée dans le fichier appSettings.json.
{
"IronQR.License.LicenseKey": "My key"
}
Conclusion
Dans cet article, nous avons exploré comment scanner des codes QR dans ASP.NET Core à l'aide de l'applicationIronQR. IntégrerIronQR dans une application ASP.NET pour la lecture de codes QR est un processus simple qui améliore les capacités des applications web, les rendant plus interactives et conviviales. IronQRles puissantes fonctionnalités et la facilité d'utilisation du logiciel en font un excellent choix pour les développeurs qui souhaitent mettre en œuvre des fonctionnalités liées aux codes-barres.
Regan est diplômé de l'université de Reading, où il a obtenu une licence en ingénierie électronique. Avant de rejoindre Iron Software, il s'était concentré sur une seule tâche. Ce qu'il apprécie le plus chez Iron Software, c'est la diversité des tâches qu'il peut accomplir, qu'il s'agisse d'apporter une valeur ajoutée aux ventes, à l'assistance technique, au développement de produits ou à la commercialisation. Il aime comprendre comment les développeurs utilisent la bibliothèque d'Iron Software et utiliser ces connaissances pour améliorer continuellement la documentation et développer les produits.
< PRÉCÉDENT Comment générer des codes QR en ASP .NET Core ?
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier