UTILISATION D'IRONQR

Comment utiliser .NET MAUI pour le scanner de codes QR ?

Publié juillet 1, 2024
Partager:

Introduction

À l'ère de l'informatique mobile omniprésente, les codes QR deviennent un outil indispensable pour un partage fluide et rapide de l'information. Les codes QR sont utilisés dans tous les domaines, des paiements numériques à l'emballage des produits. En tant que développeur, l'ajout d'une fonction de lecture de code QR à vos applications mobiles peut améliorer l'expérience de l'utilisateur et conduire à une pléthore d'opportunités. Ce billet vous guidera dans la création d'un lecteur de codes-barres .NET MAUI et d'un lecteur de codes QR avec IronQR.

Comment utiliser .NET MAUI pour scanner les codes QR : Figure 1 - Iron QR : la bibliothèque de codes QR en C#

Comment utiliser .NET MAUI pour le scanner de codes QR ?

  1. Installer les paquets NuGet .NET MAUI et IronQR for .NET

  2. Créer la mise en page principale

  3. Initialisation de la caméra

  4. Capturer l'image

  5. Lire le code QR

  6. Résultat de l'affichage

  7. Gestion des autorisations

Comprendre .NET MAUI

Un framework appelé .NET Multi-platform App UI (.NET MAUI) permet d'utiliser C# et XAML pour créer des applications natives multiplateformes. Avec une seule base de code, les développeurs peuvent désormais produire des applications pour Windows, macOS, iOS et Android. .NET MAUI offre une API uniforme pour accéder aux fonctionnalités des appareils natifs, ce qui facilite le processus de création d'applications multiplateformes. Voici quelques éléments clés de .NET MAUI qui en font un outil efficace pour les développeurs :

Structure d'un projet unique

Les projets spécifiques à une plate-forme sont combinés dans une structure de projet unifiée à l'aide de .NET MAUI. Grâce à cette unification, les développeurs peuvent gérer toutes les ressources et le code spécifiques à la plate-forme dans un seul projet, ce qui rationalise le processus de développement.

Interface utilisateur multiplateforme

Vous pouvez concevoir une interface utilisateur unique (UI) qui fonctionne sur plusieurs plateformes avec .NET MAUI. Ce cadre propose une collection de modèles et de contrôles compatibles avec Windows, macOS, iOS et Android.

Accès et intégration des autochtones

Avec l'aide de .NET MAUI, les développeurs peuvent tirer parti des API natives et des fonctionnalités spécifiques à la plateforme, ce qui leur permet d'utiliser les capteurs, les caméras, le GPS et d'autres capacités de l'appareil. De cette manière, les applications peuvent partager une grande partie de la base de code entre les plateformes tout en offrant une expérience utilisateur native.

Recharge à chaud

.NET MAUI prend en charge le rechargement à chaud pour XAML et C#. Grâce à cette fonctionnalité, les développeurs peuvent visualiser instantanément les modifications apportées à l'interface utilisateur sans avoir à redémarrer le programme. Hot Reload facilite les itérations rapides et le retour d'information instantané, ce qui accélère le processus de développement.

Intégration de Blazor

Grâce à l'intégration entre Blazor et .NET MAUI, les développeurs peuvent utiliser les composants Blazor pour créer des applications hybrides. Grâce à cette intégration, la création d'applications modernes devient plus souple en combinant les capacités de développement web de Blazor et l'expertise de MAUI en matière de développement mobile natif.

Gestion des ressources

La gestion des ressources, y compris les images, les polices et les styles, sur plusieurs plates-formes est facilitée par .NET MAUI. En ne définissant les ressources qu'une seule fois, les développeurs peuvent les utiliser pour toutes les plates-formes cibles, ce qui minimise la redondance et garantit une apparence et une convivialité cohérentes.

Injection de dépendance

L'injection de dépendances est prise en charge dès le départ par .NET MAUI, ce qui aide les développeurs à élaborer un code mieux testé et plus facile à maintenir. La création d'applications complexes nécessitant une répartition claire des responsabilités et une architecture modulaire requiert cette fonctionnalité.

Qu'est-ce que l'IronQR ?

Une bibliothèque .NET robuste et adaptable pour la création et la lecture de codes QR s'appelle IronQR. En offrant des fonctionnalités fiables et conviviales pour la création et la lecture de codes QR, il rationalise le processus d'utilisation des codes QR dans les applications .NET. Le paquet Iron Software, qui comprend IronQR, est une collection de bibliothèques conçues pour améliorer la programmation .NET.

Caractéristiques d'IronQR

IronQR est un outil utile pour les développeurs qui travaillent avec des codes QR en raison de ses nombreuses fonctionnalités. Voici quelques-unes de ses principales caractéristiques :

Génération de codes QR

IronQR simplifie la création de codes QR. Rapidement et efficacement, les développeurs peuvent générer des codes QR à partir de texte, d'URL et d'autres types de données.

  • Codes QR de qualité supérieure: La bibliothèque produit des codes QR de haute qualité et de haute résolution qui conviennent à toute une série d'applications, telles que l'affichage numérique et l'impression.
  • Options de personnalisation: Vous pouvez modifier les couleurs, les tailles, les marges et d'autres aspects de l'apparence des codes QR.

Lecture du code QR

IronQR offre de solides fonctionnalités pour la lecture de codes QR à partir d'images et de flux.

  • Prise en charge de plusieurs formats: JPEG, PNG, BMP et GIF ne sont que quelques-uns des formats d'image à partir desquels la bibliothèque peut lire les codes QR.
  • Correction des erreurs: IronQR intègre une correction des erreurs sophistiquée, de sorte qu'il peut lire correctement les codes QR même s'ils sont partiellement cassés ou obscurcis.

Personnalisation avancée

Grâce aux nombreuses possibilités de personnalisation offertes par IronQR, les développeurs peuvent créer et interpréter des codes QR spécifiquement adaptés à leurs besoins.

  • Styles: Vous pouvez ajouter des logos ou des photos aux codes QR et modifier les couleurs d'arrière-plan et de premier plan.
  • Encodage des données: Assure l'interopérabilité avec plusieurs formats d'information en prenant en charge plusieurs options d'encodage des données.

Traitement par lots

Le traitement par lots est pris en charge par IronQR, ce qui permet de créer et de lire plusieurs codes QR simultanément. Les applications qui doivent gérer efficacement un grand nombre de codes QR peuvent trouver cette capacité particulièrement utile.

Performance et efficacité

Grâce à la conception très performante de la bibliothèque, la création et la lecture de codes QR peuvent se faire rapidement. Pour les applications qui doivent traiter les codes QR en temps réel, c'est crucial.

Intégration à l'écosystème .NET

IronQR est simple à utiliser avec les applications ASP.NET, Windows Forms, WPF et Xamarin, entre autres types d'applications .NET, en raison de son intégration harmonieuse à l'environnement .NET.

Premiers pas avec l'application .NET MAUI

L'installation de Visual Studio 2022 et du Framework .NET 6 est nécessaire pour créer une application C#.NET MAUI. Ensuite, pour construire une application .NET MAUI, suivez les étapes suivantes.

Ouvrir Visual Studio

Cliquez sur le bouton "Créer un nouveau projet" après avoir ouvert Visual Studio. Ensuite, utilisez la barre de recherche pour trouver "projet .NET MAUI"

Comment utiliser .NET MAUI pour le scanner de code QR : Figure 2 - Créer un nouveau projet

Sélectionner l'application .NET MAUI

Choisissez le modèle d'application .NET MAUI dans les résultats de recherche de Visual Studio. Une fois que vous l'avez choisi, donnez-lui un nom approprié et décidez de l'endroit où le projet se déroulera. Après la configuration, appuyez sur le bouton "Suivant".

Comment utiliser l'application .NET MAUI pour scanner le code QR : Figure 3 - Choisir le modèle d'application .NET MAUI

Sélectionner le cadre

Choisir le cadre nécessaire ; néanmoins, il est conseillé d'utiliser l'itération la plus récente du Framework .NET. Cliquez sur "Créer" une fois que vous avez choisi la version du framework dans Visual Studio.

Comment utiliser .NET MAUI pour scanner le code QR : Figure 4 - Sélectionnez le cadre de travail souhaité

Installer IronQR

Naviguez vers la console du gestionnaire de paquets sous Tools -> NuGet Package Manager. Dans le panneau de ligne de commande qui s'affiche, saisissez la commande suivante et appuyez sur ENTRÉE :

Install-Package IronQR

La commande susmentionnée installera notre bibliothèque dans le projet en cours et la téléchargera.

Construction du scanner de code QR

La création de l'interface utilisateur est la première étape du développement du scanner de codes QR. Un bouton pour lancer le processus de numérisation du code QR et une image pour montrer le code QR numérisé feront partie de notre interface utilisateur de base (UI) que nous construirons à l'aide de XAML.

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiQrScanner.MainPage">
    <StackLayout Padding="20" VerticalOptions="Center">
        <Button Text="Scan QR Code" Clicked="OnScanButtonClicked"/>
        <Image x:Name="QrCodeImage" WidthRequest="200" HeightRequest="200" VerticalOptions="CenterAndExpand"/>
        <Label x:Name="QrCodeResult" Text="Scan Result" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
    </StackLayout>
</ContentPage>

La possibilité d'utiliser IronQR pour lire les codes QR doit ensuite être mise en œuvre. Nous allons écrire une fonction pour gérer l'événement de clic sur le bouton et prendre une photo du code QR avec l'appareil photo de l'appareil.

Ajoutez le code suivant à MainPage.xaml.cs après l'avoir ouvert :

using IronQr;
using IronSoftware.Drawing;
using Microsoft.Maui.Controls;
using System;
using System.IO;
using System.Threading.Tasks;

namespace MauiAppQR
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private async void OnScanButtonClicked(object sender, EventArgs e)
        {
            var result = await CaptureAndScanQrCode();
            QrCodeResult.Text = result ?? "No QR code found.";
        }

        private async Task<string> CaptureAndScanQrCode()
        {
            try
            {
                var photo = await MediaPicker.CapturePhotoAsync();
                if (photo == null)
                    return null;

                using var stream = await photo.OpenReadAsync();
                using var memoryStream = new MemoryStream();
                await stream.CopyToAsync(memoryStream);
                var imageData = memoryStream.ToArray();

                QrReader reader = new QrReader();
                var inputBmp = AnyBitmap.FromBytes(imageData);
                QrImageInput imageInput = new QrImageInput(inputBmp);

                var barcodeResult = reader.Read(imageInput);

                if (barcodeResult?.Count > 0)
                {
                    QrCodeImage.Source = ImageSource.FromStream(() => new MemoryStream(imageData));
                    return barcodeResult.First().Value;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error scanning QR code: {ex.Message}");
            }
            return null;
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
using Microsoft.Maui.Controls;
using System;
using System.IO;
using System.Threading.Tasks;

namespace MauiAppQR
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private async void OnScanButtonClicked(object sender, EventArgs e)
        {
            var result = await CaptureAndScanQrCode();
            QrCodeResult.Text = result ?? "No QR code found.";
        }

        private async Task<string> CaptureAndScanQrCode()
        {
            try
            {
                var photo = await MediaPicker.CapturePhotoAsync();
                if (photo == null)
                    return null;

                using var stream = await photo.OpenReadAsync();
                using var memoryStream = new MemoryStream();
                await stream.CopyToAsync(memoryStream);
                var imageData = memoryStream.ToArray();

                QrReader reader = new QrReader();
                var inputBmp = AnyBitmap.FromBytes(imageData);
                QrImageInput imageInput = new QrImageInput(inputBmp);

                var barcodeResult = reader.Read(imageInput);

                if (barcodeResult?.Count > 0)
                {
                    QrCodeImage.Source = ImageSource.FromStream(() => new MemoryStream(imageData));
                    return barcodeResult.First().Value;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error scanning QR code: {ex.Message}");
            }
            return null;
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.Maui.Controls
Imports System
Imports System.IO
Imports System.Threading.Tasks

Namespace MauiAppQR
	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			InitializeComponent()
		End Sub

		Private Async Sub OnScanButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
			Dim result = Await CaptureAndScanQrCode()
			QrCodeResult.Text = If(result, "No QR code found.")
		End Sub

		Private Async Function CaptureAndScanQrCode() As Task(Of String)
			Try
				Dim photo = Await MediaPicker.CapturePhotoAsync()
				If photo Is Nothing Then
					Return Nothing
				End If

				Dim stream = Await photo.OpenReadAsync()
				Dim memoryStream As New MemoryStream()
				Await stream.CopyToAsync(memoryStream)
				Dim imageData = memoryStream.ToArray()

				Dim reader As New QrReader()
				Dim inputBmp = AnyBitmap.FromBytes(imageData)
				Dim imageInput As New QrImageInput(inputBmp)

				Dim barcodeResult = reader.Read(imageInput)

				If barcodeResult?.Count > 0 Then
					QrCodeImage.Source = ImageSource.FromStream(Function() New MemoryStream(imageData))
					Return barcodeResult.First().Value
				End If
			Catch ex As Exception
				Console.WriteLine($"Error scanning QR code: {ex.Message}")
			End Try
			Return Nothing
		End Function
	End Class
End Namespace
VB   C#
  • OnScanButtonClicked : Lorsqu'un utilisateur clique sur le bouton "Scan QR Code", cette méthode est appelée. Pour prendre une photo à l'aide de l'appareil photo de l'appareil et rechercher des codes QR, il invoque la fonction CaptureAndScanQrCode.
  • CaptureAndScanQrCode : Cette méthode utilise l'appareil photo de l'appareil pour prendre une photo, puis IronQR est utilisé pour lire le code QR à partir de l'image.

    • MediaPicker.CapturePhotoAsync : Cette API utilise l'appareil photo de l'appareil pour prendre une photo.

    • MemoryStream : Pour faciliter la lecture par IronQR, l'image capturée est chargée dans un MemoryStream.

    • QrReader.Read : La méthode IronQR lit le code QR à partir des informations de l'image.

    • ImageSource : Si un code QR est localisé, le texte du code QR apparaît dans l'étiquette QrCodeResult, et l'image est affichée dans l'élément QrCodeImage.

Gestion des autorisations

L'autorisation appropriée est nécessaire pour accéder à la caméra de l'appareil. Effectuez les demandes d'autorisation nécessaires en mettant à jour les fichiers de projet pour iOS et Android.

Android

Accédez à AndroidManifest.xml et incluez les autorisations qui en découlent :

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
XML

Demander les permissions dans le fichier MainActivity.cs :

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Platform.Init(this, savedInstanceState);
    Xamarin.Essentials.Platform.RequestPermissions(this, new string[] 
    {
        Android.Manifest.Permission.Camera,
        Android.Manifest.Permission.WriteExternalStorage,
        Android.Manifest.Permission.ReadExternalStorage
    });
}
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Platform.Init(this, savedInstanceState);
    Xamarin.Essentials.Platform.RequestPermissions(this, new string[] 
    {
        Android.Manifest.Permission.Camera,
        Android.Manifest.Permission.WriteExternalStorage,
        Android.Manifest.Permission.ReadExternalStorage
    });
}
Protected Overrides Sub OnCreate(ByVal savedInstanceState As Bundle)
	MyBase.OnCreate(savedInstanceState)
	Platform.Init(Me, savedInstanceState)
	Xamarin.Essentials.Platform.RequestPermissions(Me, New String() { Android.Manifest.Permission.Camera, Android.Manifest.Permission.WriteExternalStorage, Android.Manifest.Permission.ReadExternalStorage })
End Sub
VB   C#

Vous trouverez ci-dessous le résultat généré dans un environnement Windows.

Comment utiliser .NET MAUI pour scanner les codes QR : Figure 5 - Cliquez sur Scanner le code QR

Après la numérisation, le résultat obtenu s'affiche sur l'étiquette.

Comment utiliser .NET MAUI pour scanner le code QR : Figure 6 - Exemple de sortie de l'utilisation d'IronQR pour scanner le code QR

Conclusion

L'utilisation de .NET MAUI et d'IronQR pour créer un scanner de codes QR .NET MAUI est un processus simple qui peut considérablement améliorer la fonctionnalité de vos applications mobiles. Les solides fonctionnalités d'IronQR pour le traitement des codes QR et les capacités multiplateformes de .NET MAUI vous permettent de construire des scanners de codes QR efficaces et fiables pour Windows, iOS, macOS et Android.

IronQR et .NET MAUI offrent ensemble un processus de développement fluide qui vous permet de vous concentrer sur la création de fonctionnalités de pointe et la production d'applications de premier ordre. Ce tutoriel offre une base solide pour démarrer, que vous créiez un scanner de code QR simple ou une application sophistiquée avec des fonctions de code QR de pointe.

Envisagez de faire appel à IronQR pour vos besoins en matière de codes QR si vous souhaitez rationaliser davantage votre processus de développement. Même dans des circonstances difficiles, IronQR produit des codes QR nets, évolutifs et dotés de solides capacités de lecture. IronQR propose une solution qui répond à vos besoins uniques, avec des choix de licences personnalisables pour les développeurs individuels, les petites équipes et les grandes entreprises. Visitez le site Achetez une licence et consultez le détail des tarifs. Rejoignez les nombreux développeurs qui font confiance à Iron Software pour leurs outils de développement essentiels et améliorez vos applications grâce à IronQR.

Pour les autres produits similaires de la Iron Software Suite, l'IronBarcode est le pendant de la lecture des codes-barres. Avec IronBarcode, vous pouvez intégrer de manière transparente une fonctionnalité de lecture de codes-barres très performante dans vos applications, ce qui en fait un excellent choix pour les besoins liés à la lecture de codes-barres.

SUIVANT >
Comment générer des codes QR en ASP .NET Core ?