Scanner de codes QR .NET MAUI

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

Introduction

.NET MAUI (.NET Multi-platform App UI) est un framework multiplateforme pour construire des applications mobiles et de bureau natives à partir d'une seule base de code C#. Un seul projet peut cibler Android, iOS, macOS et Windows, partageant des mises en page d'interface utilisateur et une logique métier sur toutes les plateformes. L'intégration de MAUI avec l'écosystème .NET signifie que les développeurs peuvent atteindre les utilisateurs mobiles sans abandonner les outils ou langages familiers.

Dans cet article, nous expliquerons comment créer un scanner de codes QR natif dans une application .NET MAUI en utilisant IronQR pour décoder les codes QR sélectionnés à partir de la bibliothèque photo de l'appareil.

IronQR : Bibliothèque C# QR Code

Pour lire les codes QR dans l'application, nous utiliserons la bibliothèque IronQR .NET. Elle fournit une API simple pour détecter et décoder les codes QR à partir de n'importe quelle source d'image, y compris les fichiers sélectionnés sur un appareil mobile. IronQR fonctionne sur toutes les plateformes cibles de MAUI et ne nécessite aucune connaissance spécifique en domaine de codes-barres pour intégrer.

IronQR peut décoder des codes QR standard, des Micro QR codes et des codes rMQR, et accepte l'entrée d'images sous forme de fichiers, de flux ou de bitmaps. Elle peut être installée en quelques secondes via le Package Manager NuGet.

Étapes pour créer un scanner de codes QR dans .NET MAUI

Suivez ces étapes pour ajouter le scan de codes QR à une application .NET MAUI.

Prérequis

  1. Visual Studio 2022 avec la charge de travail .NET MAUI installée
  2. Un projet .NET MAUI ciblant Android ou iOS

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.

Conception Front-End

L'interface utilisateur du scanner consiste en un bouton pour déclencher la sélection d'image, une vue d'image pour prévisualiser le code QR sélectionné, et un label pour afficher le résultat décodé.

Remplacez le contenu de MainPage.xaml par ce qui suit :

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiQrScanner.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Button
                x:Name="scanButton"
                Text="Select QR Code Image"
                SemanticProperties.Hint="Select Image"
                Clicked="OnScanButtonClicked"
                HorizontalOptions="Center" />

            <Image
                x:Name="qrImage"
                SemanticProperties.Description="Selected QR Code"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                x:Name="resultLabel"
                Text="Scanned Text: "
                HorizontalOptions="Center"
                VerticalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiQrScanner.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Button
                x:Name="scanButton"
                Text="Select QR Code Image"
                SemanticProperties.Hint="Select Image"
                Clicked="OnScanButtonClicked"
                HorizontalOptions="Center" />

            <Image
                x:Name="qrImage"
                SemanticProperties.Description="Selected QR Code"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                x:Name="resultLabel"
                Text="Scanned Text: "
                HorizontalOptions="Center"
                VerticalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

Entrée d'exemple

Utilisez le code QR ci-dessous comme image test. Enregistrez-le sur votre appareil, puis sélectionnez-le via le sélecteur de fichiers de l'application. La valeur décodée doit s'afficher sous la forme https://ironsoftware.com.

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

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

Scan de QR Code avec IronQR

Lorsque l'on appuie sur le bouton de numérisation, FilePicker ouvre la galerie d'images de l'appareil. Une fois que l'utilisateur a sélectionné une photo, le chemin d'accès complet est chargé dans un AnyBitmap, qui est transmis à QrReader.Read(). La valeur décodée du premier code QR détecté s'affiche dans le label de résultat.

Ajoutez la méthode suivante à MainPage.xaml.cs :

using IronQr;
using IronSoftware.Drawing;

private async void OnScanButtonClicked(object sender, EventArgs e)
{
    // Start scanning QR codes
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();

    var inputBmp = AnyBitmap.FromFile(imageSource);

    // Load the asset into QrImageInput
    QrImageInput imageInput = new QrImageInput(inputBmp);

    // Create a QR Reader object
    QrReader reader = new QrReader();

    // Read the input and get all embedded QR Codes
    IEnumerable<QrResult> results = reader.Read(imageInput);

    // Display the first result
    resultLabel.Text = "Scanned Text: " + results.First().Value;
}
using IronQr;
using IronSoftware.Drawing;

private async void OnScanButtonClicked(object sender, EventArgs e)
{
    // Start scanning QR codes
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();

    var inputBmp = AnyBitmap.FromFile(imageSource);

    // Load the asset into QrImageInput
    QrImageInput imageInput = new QrImageInput(inputBmp);

    // Create a QR Reader object
    QrReader reader = new QrReader();

    // Read the input and get all embedded QR Codes
    IEnumerable<QrResult> results = reader.Read(imageInput);

    // Display the first result
    resultLabel.Text = "Scanned Text: " + results.First().Value;
}
Imports IronQr
Imports IronSoftware.Drawing

Private Async Sub OnScanButtonClicked(sender As Object, e As EventArgs)
    ' Start scanning QR codes
    Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
        .PickerTitle = "Pick image",
        .FileTypes = FilePickerFileType.Images
    })
    Dim imageSource = images.FullPath.ToString()

    Dim inputBmp = AnyBitmap.FromFile(imageSource)

    ' Load the asset into QrImageInput
    Dim imageInput As New QrImageInput(inputBmp)

    ' 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 first result
    resultLabel.Text = "Scanned Text: " & results.First().Value
End Sub
$vbLabelText   $csharpLabel

FilePicker.Default.PickAsync est fourni par la couche d'abstraction de la plateforme MAUI et fonctionne sur Android, iOS et Windows sans aucun code spécifique à la plateforme. AnyBitmap.FromFile gère le décodage des images, et QrReader.Read renvoie un IEnumerable<QrResult> contenant une entrée par code QR trouvé dans l'image.

Sortie

Sélectionner une image de code QR déclenche le scan. La valeur décodée apparaît dans le label de résultat sous l'aperçu de l'image.

.NET MAUI QR Code Scanner using IronQR — app selecting a QR code image and displaying the decoded value

Code QR sélectionné et valeur décodée affichée dans le label de résultat

Téléchargez le projet

Cliquez ici pour télécharger le projet complet MauiQrScanner.

Conclusion

Dans cet article, nous avons démontré comment créer un scanner de codes QR natif dans une application .NET MAUI en utilisant IronQR. L'API FilePicker permet la sélection d'images native sur Android, iOS et Windows, tandis que l'API QrReader.Read d'IronQR gère le décodage en un seul appel. La même approche s'applique à plusieurs codes QR par image en parcourant l'ensemble des résultats au lieu d'appeler .First().

IronQR nécessite une licence pour le développement et l'utilisation commerciale. Les détails des licences sont disponibles ici.

Pour un aperçu plus approfondi de la lecture des propriétés des codes QR au-delà de la valeur, consultez les guides Lire la valeur du code QR et Lire le type de code QR.

Questions Fréquemment Posées

De quoi traite le tutoriel sur le scanner de codes QR .NET MAUI ?

Le tutoriel sur le scanner de codes QR .NET MAUI fournit des instructions sur la façon de créer un scanner de codes QR en utilisant IronQR, avec des directives adaptées pour les applications .NET MAUI sur les plateformes Android, iOS et Windows.

Quelles plateformes sont prises en charge par le scanner de codes QR .NET MAUI ?

Le scanner de codes QR .NET MAUI prend en charge les plateformes Android, iOS et Windows, permettant aux développeurs de créer des applications multiplateformes utilisant IronQR.

Comment puis-je sélectionner des images pour le balayage de codes QR dans une application .NET MAUI ?

Vous pouvez utiliser le composant FilePicker dans une application .NET MAUI pour sélectionner des images, qui peuvent ensuite être traitées par la méthode QrReader.Read() d'IronQR pour décoder les codes QR.

Quelle fonction est utilisée pour décoder les codes QR dans le tutoriel ?

Dans le tutoriel, la fonction QrReader.Read() d'IronQR est utilisée pour décoder les codes QR à partir d'images sélectionnées dans une application .NET MAUI.

Puis-je utiliser IronQR pour le balayage de codes QR dans une application multiplateforme ?

Oui, IronQR est conçu pour être utilisé dans des applications multiplateformes, et avec le framework .NET MAUI, vous pouvez créer des scanners de codes QR pour Android, iOS et Windows.

Existe-t-il une fonction spécifique de lecteur de codes QR for .NET MAUI ?

Oui, le tutoriel montre comment utiliser la fonction QrReader.Read() d'IronQR dans une application .NET MAUI pour lire et décoder les codes QR.

IronQR prend-il en charge le balayage des codes QR sur les appareils mobiles ?

IronQR prend en charge le balayage des codes QR sur les appareils mobiles, y compris Android et iOS, comme le montre le tutoriel sur le scanner de codes QR .NET MAUI.

Quel est le rôle de FilePicker dans le processus de balayage de codes QR ?

FilePicker est utilisé pour sélectionner des images à partir du stockage de l'appareil, qui sont ensuite passées à la méthode QrReader.Read() d'IronQR pour le décodage des codes QR dans une application .NET MAUI.

Est-il possible d'intégrer un scanner de codes QR dans une application Windows en utilisant .NET MAUI ?

Oui, le tutoriel sur le scanner de codes QR .NET MAUI montre comment intégrer un scanner de codes QR dans une application Windows en utilisant IronQR.

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 67,270 | Version : 2026.5 just released
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.