Passer au contenu du pied de page
UTILISATION DE IRONBARCODE

.NET MAUI Scanner les BarCodes dans les Apps Windows avec une puissante bibliothèque de scanners de codes-barres

Vous n'avez pas besoin de vous débattre avec des pilotes de caméra complexes ou des boucles de permission interminables pour faire fonctionner un lecteur de codes-barres dans .NET MAUI. La plupart des développeurs pensent "BarCode" et commencent immédiatement à s'inquiéter du flux de caméra en direct au-dessus de leur tête. Il existe une meilleure solution. En utilisant la bibliothèque IronBarcode for .NET, vous pouvez scanner des codes-barres directement à partir de fichiers images, comme des JPEG ou des PNG, en évitant totalement le casse-tête de la gestion de la caméra. Bien que nous nous concentrions sur Microsoft Windows pour ce tutoriel, le même code fonctionne exactement sur votre application Android et vos projets iOS également.

Commencez par un essai gratuit pour suivre le processus.

Comment créer une application .NET MAUI pour la lecture de codes-barres?

La configuration d'un projet .NET MAUI dans Visual Studio Code ou Visual Studio est simple ; pour ce tutoriel, nous utiliserons Visual Studio. Lancez Visual Studio 2022 ou une version ultérieure, sélectionnez Créer un nouveau projet et choisissez le modèle .NET MAUI App. Saisissez le nom de votre projet et sélectionnez vos plateformes cibles. Pour ce tutoriel, nous nous concentrons sur le déploiement de Windows.

Contrairement à des solutions telles que Scanbot SDK qui nécessitent une initialisation complexe dans MauiProgram.cs avec des configurations de constructeurs de var et une configuration de prévisualisation de la caméra, IronBarcode ne nécessite pas d'enregistrement particulier. La classe statique publique MauiProgram reste inchangée par rapport au modèle par défaut, ce qui rend l'intégration remarquablement simple pour les applications MAUI .NET.

Pour installer le package NuGet IronBarcode, vous pouvez utiliser la palette de commandes (Ctrl+Shift+P dans VS Code) ou exécuter la commande suivante dans la console du gestionnaire de packages de Visual Studio :

Install-Package BarCode

Cette installation d'un seul paquet NuGet fournit tout ce qui est nécessaire à la numérisation de codes-barres, à la numérisation de codes-barres multiples et à la reconnaissance de codes QR. La dernière version prend en charge tous les principaux formats de BarCode sans dépendances supplémentaires, contrairement aux scanners à caméra qui nécessitent souvent des gestionnaires de permission et des configurations de contrôle CameraView.

Pour utiliser IronBarcode dans un environnement de production, vous devrez appliquer une clé de licence. Vous pouvez définir ce paramètre dans votre MauiProgram.cs ou dans le constructeur App.xaml.cs :

IronBarCode.License.LicenseKey = "YOUR_IRONBARCODE_LICENSE_KEY";
IronBarCode.License.LicenseKey = "YOUR_IRONBARCODE_LICENSE_KEY";
$vbLabelText   $csharpLabel

Gestion des autorisations pour iOS et Android

L'un des principaux avantages de l'utilisation d'une bibliothèque .NET basée sur des images est le modèle de permission simplifié. Les scanners traditionnels basés sur une caméra nécessitent les autorisations suivantes dans votre AndroidManifest.xml :

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

Lors de la création pour iOS et Android, ces autorisations requises peuvent souvent conduire à des erreurs de type "permission refusée" si elles ne sont pas parfaitement gérées. Cependant, comme IronBarcode scanne à partir d'une image var ou d'un flux de fichiers, il suffit de s'assurer que l'appli a accès au système de fichiers.

Quelle conception d'interface fonctionne le mieux pour un lecteur de codes-barres MAUI?

Une interface propre et fonctionnelle permet aux utilisateurs de sélectionner un fichier image contenant des BarCodes et de visualiser les résultats de la numérisation. Le XAML suivant crée une interface utilisateur de lecteur de codes-barres simple mais efficace pour votre application .NET MAUI :

<?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="BarcodeScanner.MainPage">
    <ScrollView>
        <VerticalStackLayout Spacing="20" Padding="30">
            <Label Text="MAUI Barcode Scanner"
                   FontSize="24"
                   HorizontalOptions="Center" />
            <Button x:Name="SelectImageBtn"
                    Text="Select Image File"
                    Clicked="OnSelectImage" />
            <Image x:Name="SelectedImageDisplay"
                   HeightRequest="250" />
            <Label x:Name="ResultsLabel"
                   Text="Barcode results will display here" />
        </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="BarcodeScanner.MainPage">
    <ScrollView>
        <VerticalStackLayout Spacing="20" Padding="30">
            <Label Text="MAUI Barcode Scanner"
                   FontSize="24"
                   HorizontalOptions="Center" />
            <Button x:Name="SelectImageBtn"
                    Text="Select Image File"
                    Clicked="OnSelectImage" />
            <Image x:Name="SelectedImageDisplay"
                   HeightRequest="250" />
            <Label x:Name="ResultsLabel"
                   Text="Barcode results will display here" />
        </VerticalStackLayout>
    </ScrollView>
</ContentPage>
$vbLabelText   $csharpLabel

Cette mise en page fournit un bouton pour la sélection du fichier image, une zone pour afficher l'image sélectionnée et une étiquette pour les résultats de la détection du code-barres. La conception fonctionne sur toutes les plateformes cibles .NET MAUI tout en maintenant les performances natives sur Windows.

Comment implémenter la détection de BarCode à partir de fichiers images?

Dans votre MainPage.xaml.cs, vous pouvez utiliser des méthodes de cycle de vie telles que async void OnAppearing pour initialiser les paramètres ou vérifier si l'utilisateur a fourni l'accès au fichier nécessaire.

La classe partielle publique MainPage contient la logique d'analyse. La méthode BarcodeReader.Read d'IronBarcode gère toute la complexité de la détection des codes-barres, prenant en charge la numérisation des codes-barres à partir des formats JPEG, PNG, GIF, TIFF et BMP. Voici la mise en œuvre complète :

using IronBarCode;
namespace BarcodeScanner;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private async void OnSelectImage(object sender, EventArgs e)
    {
        try
        {
            // Open file picker for image selection
            var result = await FilePicker.PickAsync(new PickOptions
            {
                FileTypes = FilePickerFileType.Images,
                PickerTitle = "Select a barcode image"
            });
            if (result != null)
            {
                // Display the selected image
                var stream = await result.OpenReadAsync();
                SelectedImageDisplay.Source = ImageSource.FromStream(() => stream);
                // Read barcodes from the image file
                var barcodes = BarcodeReader.Read(result.FullPath);
                // Display all detected barcode values
                if (barcodes.Count > 0)
                {
                    string output = string.Join("\n",
                        barcodes.Select(b => $"{b.BarcodeType}: {b.Value}"));
                    ResultsLabel.Text = output;
                }
                else
                {
                    ResultsLabel.Text = "No barcodes detected in image";
                }
            }
        }
        catch (Exception ex)
        {
            ResultsLabel.Text = $"Error occurred: {ex.Message}";
        }
    }
}
using IronBarCode;
namespace BarcodeScanner;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private async void OnSelectImage(object sender, EventArgs e)
    {
        try
        {
            // Open file picker for image selection
            var result = await FilePicker.PickAsync(new PickOptions
            {
                FileTypes = FilePickerFileType.Images,
                PickerTitle = "Select a barcode image"
            });
            if (result != null)
            {
                // Display the selected image
                var stream = await result.OpenReadAsync();
                SelectedImageDisplay.Source = ImageSource.FromStream(() => stream);
                // Read barcodes from the image file
                var barcodes = BarcodeReader.Read(result.FullPath);
                // Display all detected barcode values
                if (barcodes.Count > 0)
                {
                    string output = string.Join("\n",
                        barcodes.Select(b => $"{b.BarcodeType}: {b.Value}"));
                    ResultsLabel.Text = output;
                }
                else
                {
                    ResultsLabel.Text = "No barcodes detected in image";
                }
            }
        }
        catch (Exception ex)
        {
            ResultsLabel.Text = $"Error occurred: {ex.Message}";
        }
    }
}
$vbLabelText   $csharpLabel

Sortie

 .NET MAUI Scanner les codes-barres dans les applications Windows avec une puissante bibliothèque de scanners de codes-barres : Image 1 - Sortie du code-barres scanné

La méthode BarcodeReader.Read détecte et décode automatiquement tous les formats de codes-barres présents dans le fichier image. Chaque résultat comprend le type de code-barres, la valeur et les informations relatives à l'emplacement. Cette approche élimine le besoin d'autorisations pour la caméra, de configurations spécifiques à Android et iOS, ou de gestion des événements de détection de codes-barres que nécessitent les solutions basées sur la caméra comme le SDK de Scanbot.

private async void ProcessResults(BarcodeResults barcodes)
{
    if (barcodes.Count > 0)
    {
        string msg = $"Found {barcodes.Count} barcodes.";
        // Use await DisplayAlert to show results to the user
        await DisplayAlert("Scan Success", msg, "OK");
    }
    else
    {
        await DisplayAlert("No Results", "No barcodes were found in the image.", "OK");
    }
}
private async void ProcessResults(BarcodeResults barcodes)
{
    if (barcodes.Count > 0)
    {
        string msg = $"Found {barcodes.Count} barcodes.";
        // Use await DisplayAlert to show results to the user
        await DisplayAlert("Scan Success", msg, "OK");
    }
    else
    {
        await DisplayAlert("No Results", "No barcodes were found in the image.", "OK");
    }
}
$vbLabelText   $csharpLabel

Fournir un retour d'information à l'utilisateur en attendant DisplayAlert

Dans un environnement mobile ou de bureau, il est essentiel de fournir un retour d'information immédiat. Au lieu de mettre à jour une étiquette, vous pouvez utiliser la méthode DisplayAlert pour afficher une boîte de dialogue modale une fois l'analyse terminée. Cela permet de s'assurer que l'utilisateur reconnaît le résultat avant de continuer.

Comment scanner plusieurs BarCodes et configurer les options de détection?

Lorsque votre fichier image contient plusieurs codes-barres, IronBarcode les détecte tous automatiquement. Pour des performances optimisées lorsque vous connaissez les types de codes-barres attendus, utilisez BarcodeReaderOptions :

using IronBarCode;
// Configure options for scanning multiple barcodes
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
// Process each detected barcode
foreach (var barcode in barcodes)
{
    Console.WriteLine($"Found: {barcode.Value}");
}
using IronBarCode;
// Configure options for scanning multiple barcodes
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
// Process each detected barcode
foreach (var barcode in barcodes)
{
    Console.WriteLine($"Found: {barcode.Value}");
}
$vbLabelText   $csharpLabel

Sortie de lecture de plusieurs BarCodes

 .NET MAUI Scanner les codes-barres dans les applications Windows avec une puissante bibliothèque de scanners de codes-barres : Image 2 - Sortie pour la numérisation de plusieurs codes-barres

La spécification de ExpectBarcodeTypes améliore la vitesse d'analyse en concentrant la détection sur les formats pertinents. La propriété "rapidité" permet d'équilibrer la précision et les performances ; utilisez ReadingSpeed.Faster pour les images vierges ou ReadingSpeed.Detailed pour les numérisations difficiles avec rotation ou bruit.

Grâce à cette flexibilité, le lecteur de codes-barres .NET BarCode convient à divers scénarios : applications de vente au détail lisant les codes des produits, systèmes d'entrepôt traitant les étiquettes d'expédition ou flux de travail documentaires extrayant les codes QR intégrés.

Pourquoi choisir le balayage de codes-barres basé sur l'image?

La lecture de codes-barres basée sur l'image offre des avantages distincts pour le développement de codes-barres .NET MAUI scan. Alors que Scanbot SDK et d'autres outils similaires se concentrent sur la fonctionnalité de prévisualisation en direct de la caméra, l'approche d'IronBarcode offre une intégration plus directe, un comportement cohérent sur toutes les plateformes et la possibilité de traiter des fichiers d'images existants à partir de n'importe quelle source, y compris des documents numérisés, des pièces jointes à des courriels ou des téléchargements d'utilisateurs.

Pour les déploiements Android et iOS, le même code fonctionne sans modification, aucune autorisation de caméra ou configuration spécifique à la plateforme n'est requise.

Fonctionnalités avancées : Superposition AR vs. traitement d'image

Alors que certains SDK se concentrent sur une superposition AR (réalité augmentée) en direct pour mettre en évidence les codes-barres dans un flux de caméra, IronBarcode se concentre sur la précision à grande vitesse pour les images statiques. Cette solution est idéale pour les applications multiplateformes où les utilisateurs peuvent télécharger des reçus, des étiquettes d'expédition ou des captures d'écran plutôt que de numériser des articles "en direct" sur le terrain.

En éliminant le besoin d'une caméra en direct, vous réduisez la consommation de la batterie et évitez le scintillement de l'interface utilisateur souvent associé aux composants mobiles de réalité augmentée.

Conclusion

La construction d'un lecteur de codes-barres .NET MAUI avec IronBarcode nécessite un minimum de code tout en offrant des capacités de détection de codes-barres robustes. L'approche basée sur les fichiers d'images simplifie le développement en éliminant les autorisations des caméras, les configurations spécifiques aux appareils et l'initialisation complexe. Vous vous concentrez sur la logique de votre application tandis qu'IronBarcode se charge de la numérisation.

La documentation API complète couvre des fonctionnalités supplémentaires, notamment la lecture de codes-barres PDF, le traitement par lots et les filtres d'image avancés. Prêt à mettre en œuvre la lecture de codes-barres dans votre projet .NET MAUI multiplateforme ? Achetez une licence pour une utilisation en production, ou explorez l'ensemble des fonctionnalités avec un essai gratuit.

Commencez avec IronBarcode maintenant.
green arrow pointer

Questions Fréquemment Posées

Comment puis-je créer un lecteur de codes-barres dans .NET MAUI ?

Vous pouvez créer un lecteur de codes-barres dans .NET MAUI en utilisant la bibliothèque IronBarcode for .NET, qui vous permet de scanner des codes-barres directement à partir de fichiers images tels que des JPEG ou des PNG. Cette méthode permet d'éviter la complexité de la gestion des flux de caméras en direct.

Puis-je utiliser IronBarcode pour la lecture de codes-barres sur Android et iOS ?

Oui, vous pouvez utiliser le même code IronBarcode pour la lecture de codes-barres sur des projets Android et iOS. La bibliothèque est compatible avec ces plateformes, ce qui permet une intégration transparente.

Quels sont les avantages de l'utilisation d'IronBarcode pour les applications .NET MAUI ?

L'utilisation d'IronBarcode dans les applications .NET MAUI simplifie la lecture des codes-barres en éliminant la nécessité de gérer des pilotes de caméra ou des autorisations complexes. Il permet de scanner directement à partir de fichiers images, ce qui rend le processus plus facile et plus efficace.

Est-il difficile de gérer les flux de caméras dans .NET MAUI pour la lecture de codes-barres ?

La gestion des flux de caméras dans .NET MAUI pour la lecture de codes-barres peut être complexe en raison des pilotes de caméras et des boucles de permission. Cependant, avec IronBarcode, vous pouvez éviter ces défis en scannant les codes-barres à partir de fichiers images à la place.

IronBarcode prend-il en charge la numérisation des codes QR ainsi que des codes-barres ?

Oui, IronBarcode prend en charge la numérisation des codes-barres et des codes QR, ce qui constitue une solution polyvalente pour divers types de besoins de numérisation de codes dans vos applications.

IronBarcode est-il limité aux seules applications Windows ?

Non, bien que ce tutoriel se concentre sur Microsoft Windows, IronBarcode est également compatible avec Android et iOS, ce qui en fait un choix flexible pour le développement multiplateforme.

Quels formats de fichiers d'images IronBarcode prend-il en charge pour la numérisation ?

IronBarcode prend en charge la numérisation à partir de plusieurs formats de fichiers d'image, notamment les JPEG et les PNG, ce qui permet d'élargir les cas d'utilisation de la numérisation de codes-barres.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite