Comment créer un scanner de code QR dans Blazor
Blazor Server est un framework web .NET qui exécute C# sur le serveur et pousse les mises à jour de l'interface utilisateur vers le navigateur via une connexion SignalR. IronQR s'intègre directement à Blazor Server, permettant la lecture de codes QR côté serveur à partir d'images téléchargées par le navigateur, sans aucun JavaScript.
Dans ce guide pratique, nous allons créer une page Blazor Server qui accepte le téléchargement d'une image et décode tout code QR intégré à l'aide de IronQR.
Comment scanner un code QR dans Blazor
- Installez la bibliothèque C# IronQR pour scanner les codes QR sur le web
- Ajoutez un composant
InputFilepour accepter le téléchargement d'images depuis le navigateur - Diffusez le fichier téléchargé vers un chemin temporaire sur le serveur
- Chargez l'image et enrobez-la dans un
QrImageInput - Appelez
Readet affichez la valeur décodée dans le composant Blazor
Prérequis
- Visual Studio 2022 avec la charge de travail ASP.NET et développement web installée
- Un projet Blazor Server ciblant .NET 8 ou une version ultérieure
Installer IronQR
Installez la bibliothèque IronQR en utilisant la console du gestionnaire de packages NuGet dans Visual Studio. Accédez à Tools > NuGet Package Manager > Package Manager Console et exécutez :
Install-Package IronQR
Vous pouvez également rechercher IronQR sur NuGet et installer la dernière version.
Disposition du composant Blazor
L'interface utilisateur du scanner utilise le composant intégré InputFile de Blazor pour la sélection de fichiers native du navigateur, un bouton pour lancer la numérisation et un paragraphe pour afficher le résultat décodé. Aucune interopérabilité JavaScript n'est requise.
Ajoutez un nouveau composant Razor Scanner.razor avec le balisage suivant :
@page "/scanner"
@using IronQr
@using IronSoftware.Drawing
<h3>QR Code Scanner</h3>
<InputFile OnChange="OnFileSelected" accept="image/*" />
<br /><br />
<button @onclick="ScanQRCode" disabled="@(qrImageSrc == null)">Scan QR Code</button>
<p>Result: @scannedText</p>
Exemple d'entrée
Utilisez le code QR ci-dessous comme image test. Enregistrez-le sur votre appareil, téléchargez-le via le sélecteur de fichiers dans l'application, puis cliquez sur Scanner le code QR. La valeur décodée doit s'afficher sous la forme https://ironsoftware.com.
Exemple de code QR — encode https://ironsoftware.com
Scan de code QR avec IronQR
Lorsqu'un fichier est sélectionné, OnFileSelected transfère le fichier téléchargé par le navigateur vers un fichier temporaire sur le serveur. Lorsque l'on clique sur le bouton de numérisation, ScanQRCode charge le fichier dans un AnyBitmap, le transmet à QrReader.Read() et écrit la première valeur décodée dans scannedText, que Blazor affiche automatiquement dans le composant.
Ajoutez le bloc @code suivant à Scanner.razor :
:path=/static-assets/qr/content-code-examples/how-to/blazor-qr-code-scanner.cs
using IronQr;
using IronSoftware.Drawing;
private string? qrImageSrc;
private string scannedText = string.Empty;
private async Task OnFileSelected(InputFileChangeEventArgs e)
{
var file = e.File;
var tempPath = Path.Combine(Path.GetTempPath(), file.Name);
await using var stream = file.OpenReadStream(maxAllowedSize: 10_000_000);
await using var fs = File.Create(tempPath);
await stream.CopyToAsync(fs);
qrImageSrc = tempPath;
}
private async Task ScanQRCode()
{
// Load the scanned QR code
var inputBmp = AnyBitmap.FromFile(qrImageSrc!);
var imageInput = new QrImageInput(inputBmp);
var reader = new QrReader();
// Read the scanned QR code
var results = reader.Read(imageInput);
// Check if a result was found
var firstResult = results.FirstOrDefault();
if (firstResult != null)
{
// Save the QR code value as a string
scannedText = firstResult.Value;
}
else
{
scannedText = "No QR code found in the selected image.";
}
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System.IO
Imports Microsoft.AspNetCore.Components.Forms
Imports System.Threading.Tasks
Private qrImageSrc As String = Nothing
Private scannedText As String = String.Empty
Private Async Function OnFileSelected(e As InputFileChangeEventArgs) As Task
Dim file = e.File
Dim tempPath = Path.Combine(Path.GetTempPath(), file.Name)
Await Using stream = file.OpenReadStream(maxAllowedSize:=10000000)
Await Using fs = File.Create(tempPath)
Await stream.CopyToAsync(fs)
End Using
End Using
qrImageSrc = tempPath
End Function
Private Async Function ScanQRCode() As Task
' Load the scanned QR code
Dim inputBmp = AnyBitmap.FromFile(qrImageSrc)
Dim imageInput = New QrImageInput(inputBmp)
Dim reader = New QrReader()
' Read the scanned QR code
Dim results = reader.Read(imageInput)
' Check if a result was found
Dim firstResult = results.FirstOrDefault()
If firstResult IsNot Nothing Then
' Save the QR code value as a string
scannedText = firstResult.Value
Else
scannedText = "No QR code found in the selected image."
End If
End Function
InputFile.OpenReadStream transmet les octets téléchargés directement vers un fichier temporaire côté serveur. AnyBitmap.FromFile décode le format d'image, et QrReader.Read renvoie un IEnumerable<QrResult> contenant une entrée par code QR trouvé. FirstOrDefault gère en toute sécurité les images ne contenant pas de code QR sans générer d'exception.
Sortie
Après avoir sélectionné une image de code QR et cliqué sur Scanner le code QR, la valeur décodée s'affiche dans le paragraphe de résultat sous les contrôles.
Valeur du code QR décodée rendue dans le composant Blazor
Téléchargez le projet
Cliquez ici pour télécharger le projet BlazorQrScanner complet.
Conclusion
IronQR s'intègre dans une application Blazor Server sans JavaScript. InputFile permet la sélection de fichiers native du navigateur, et QrReader.Read gère entièrement le décodage sur le serveur. Le même modèle s'applique à la lecture de plusieurs codes QR par image en parcourant l'ensemble des résultats au lieu d'appeler FirstOrDefault.
Pour en savoir plus sur la lecture de codes QR et les modes de scan disponibles, consultez les guides Lire les codes QR à partir d'une image et Lire les codes QR avec les modes de scan.
Questions Fréquemment Posées
Quel est l'usage principal d'IronQR dans une application Blazor Server ?
IronQR est principalement utilisé dans une application Blazor Server pour permettre le scannage de code QR côté serveur à partir d'images téléchargées via le navigateur, sans besoin de JavaScript.
Comment installer la bibliothèque IronQR dans un projet Blazor ?
Pour installer la bibliothèque IronQR dans un projet Blazor, utilisez la console du Gestionnaire de packages NuGet dans Visual Studio et exécutez la commande d'installation, ou recherchez 'IronQR' sur NuGet et installez la dernière version.
Quel composant est utilisé dans Blazor pour gérer les téléchargements d'images pour le scannage de code QR ?
Le composant `InputFile` est utilisé dans Blazor pour gérer les téléchargements d'images, permettant aux utilisateurs de sélectionner des images depuis le navigateur pour le scannage de code QR.
Comment IronQR décode les codes QR dans une application Blazor ?
Dans une application Blazor, IronQR décode les codes QR en chargant l'image sélectionnée dans un `AnyBitmap` et en utilisant `QrReader.Read()` pour extraire et afficher les données du code QR.
IronQR peut-il gérer des images avec plusieurs codes QR ?
Oui, IronQR peut gérer des images avec plusieurs codes QR en itérant sur la collection `IEnumerable
Avez-vous besoin de JavaScript pour implémenter le scannage de code QR avec IronQR dans Blazor ?
Non, vous n'avez pas besoin de JavaScript pour implémenter le scannage de code QR avec IronQR dans Blazor, car l'ensemble du processus est géré côté serveur.
Quel est le rôle de `AnyBitmap` dans le processus de scannage IronQR ?
`AnyBitmap` est utilisé pour décoder le format d'image du fichier téléchargé, le préparant pour la lecture de code QR avec IronQR.
Comment Blazor affiche-t-il le résultat d'un scannage de code QR ?
Blazor affiche le résultat d'un scannage de code QR en rendant la valeur décodée dans un élément paragraphe au sein de l'UI du composant.
Que se passe-t-il si une image sans code QR est téléchargée dans le scanner Blazor ?
Si une image sans code QR est téléchargée, appeler `FirstOrDefault` sur l'`IEnumerable
Est-il possible de télécharger le projet complet du Scanner de QR Blazor ?
Oui, vous pouvez télécharger le projet complet du Scanner de QR Blazor à partir du lien fourni sur la page Web du guide.

