Comment créer un scanner de code QR dans Blazor

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

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.

Prérequis

  1. Visual Studio 2022 avec la charge de travail ASP.NET et développement web installée
  2. 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. Naviguez vers Tools > NuGet Package Manager > Package Manager Console et exécutez :

Install-Package IronQR

Sinon, recherchez IronQR sur NuGet et installez la dernière version.

Disposition du composant Blazor

L'interface du scanner utilise le composant intégré InputFile de Blazor pour la sélection de fichiers native du navigateur, un bouton pour déclencher le scan, 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 devrait s'afficher comme https://ironsoftware.com.

Sample QR code encoding https://ironsoftware.com for testing the Blazor QR scanner

Exemple de code QR — encode `https://ironsoftware.com`

Scan de code QR avec IronQR

Lorsque un fichier est sélectionné, OnFileSelected diffuse le téléchargement du navigateur vers un fichier temporaire sur le serveur. Lorsque le bouton de scan est cliqué, ScanQRCode charge le fichier dans un AnyBitmap, le passe à QrReader.Read(), et écrit la première valeur décodée à scannedText, que Blazor rend automatiquement dans le composant.

Ajoutez le bloc de @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
$vbLabelText   $csharpLabel

InputFile.OpenReadStream diffuse les octets téléchargés directement dans un fichier temporaire côté serveur. AnyBitmap.FromFile décode le format de l'image, et QrReader.Read renvoie un IEnumerable<QrResult> avec une entrée par code QR trouvé. FirstOrDefault gère en toute sécurité les images sans code QR sans lancer 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.

Blazor QR Code Scanner using IronQR — decoded result displayed on the page

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 fournit une sélection de fichiers native du navigateur, et QrReader.Read gère entièrement le décodage côté serveur. Le même modèle s'adapte à la lecture de plusieurs codes QR par image en itérant sur la collection complète de 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.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 63,625 | Version : 2026.4 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronQR
exécuter un échantillon regarder votre URL devenir un code QR.