Passer au contenu du pied de page
UTILISATION DE IRONBARCODE
Comment lire un scanner de codes-barres dans une application Windows C#

Comment utiliser les scanners de codes-barres dans les applications Windows C#

Ce didacticiel montrera comment scanner les codes QR et les codes-barres dans les applications console C# et les applications Windows Forms .NET, en utilisant la bibliothèque IronBarcode comme exemple.

En utilisant la bibliothèque IronBarcode, plusieurs codes-barres peuvent être scannés et lus simultanément, et elle peut également réussir à scanner des images imparfaites. Clarifions d'abord ce qu'est un scanner de codes-barres.

Qu'est-ce qu'un scanner de codes-barres ?

Un code-barres est une image carrée ou rectangulaire constituée d'une série de lignes noires parallèles et d'espaces blancs de largeurs variables. Un scanner de codes-barres ou lecteur de codes-barres est un appareil qui peut lire les codes-barres imprimés, décoder les données contenues dans le code-barres et envoyer les données à un ordinateur.

Les étapes suivantes vous indiqueront comment créer un scanner de codes-barres avec l'aide de la bibliothèque IronBarcode.

Comment lire les codes-barres en C#

  • Créer un projet d'application Windows Forms .NET dans Microsoft Visual Studio
  • Installer la bibliothèque de codes-barres
  • Lire tout code-barres ou code QR
  • Lire plusieurs codes-barres ou codes QR en un seul scan
  • Permettre à IronBarcode de lire à partir de scans et de photos imparfaits

1. Créez une application Windows Forms dans Microsoft Visual Studio

Ouvrez Visual Studio > Cliquez sur Créer un nouveau projet > Sélectionnez Modèle d'application Windows Forms > Appuyez sur Suivant > Nommez le projet > Appuyez sur Suivant > Sélectionnez votre Framework .NET cible > Cliquez sur le bouton Créer.

Après avoir créé le projet, concevez le formulaire comme suit à partir de la boîte à outils de Visual Studio : contrôles PictureBox, Label, TextBox et Button.

Comment utiliser les lecteurs de codes-barres dans l'application Windows C#, Figure 1 : Scanner de codes-barres Scanner de codes-barres

2. Installez la bibliothèque .NET Barcode en C#

La bibliothèque Barcode peut être installée à l'aide de l'une des trois méthodes suivantes :

1. Console du Gestionnaire de packages

Écrivez la commande suivante dans la console du gestionnaire de packages. Il téléchargera et installera le package pour vous.

Install-Package BarCode

2. Solution du gestionnaire de packages NuGet

Vous pouvez également installer la bibliothèque Barcode en utilisant la solution de package NuGet. Suivez simplement ces étapes :

Cliquez sur Outils > Gestionnaire de Packages NuGet > Gérer les packages NuGet pour la solution.

Cela ouvrira le Gestionnaire de Packages NuGet pour vous. Cliquez sur Parcourir et recherchez Barcode, puis installez la bibliothèque de classes.

3. Téléchargement depuis le lien

En alternative, le IronBarCode.Dll peut être téléchargé et ajouté à votre projet comme référence.

Après le téléchargement, ajoutez les références suivantes à votre projet de lecteur de codes-barres.

using IronBarCode;
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

3. Lire tout code-barres ou code QR

Lire un code-barres ou un code QR dans .NET est incroyablement facile en utilisant la bibliothèque IronBarcode avec le lecteur de codes-barres .NET.

Scanner de codes-barres

Dans votre projet, recherchez l'image que vous souhaitez lire. Elle s'ouvrira dans PictureBox; cliquez maintenant sur "scanner le code". Le texte apparaîtra dans la zone de texte.

Voici le code pour le bouton "parcourir" pour ouvrir une image :

// Open file dialog   
OpenFileDialog open = new OpenFileDialog();
// Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // Display image in PictureBox
    pictureBox1.Image = new Bitmap(open.FileName); 
    // Store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
// Open file dialog   
OpenFileDialog open = new OpenFileDialog();
// Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // Display image in PictureBox
    pictureBox1.Image = new Bitmap(open.FileName); 
    // Store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
' Open file dialog   
Dim open As New OpenFileDialog()
' Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp"
If open.ShowDialog() = DialogResult.OK Then
	' Display image in PictureBox
	pictureBox1.Image = New Bitmap(open.FileName)
	' Store image file path in class data member. Initialize it as string ImageFileName;
	ImageFileName = open.FileName
End If
$vbLabelText   $csharpLabel

Le code pour le bouton "scanner le code" :

// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
' Read the barcode from the image file path
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName)
' Display the decoded text in TextBox
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

Le scanner de codes-barres affiche les données du code-barres dans la zone de texte comme suit :

Comment utiliser les lecteurs de codes-barres dans l'application Windows C#, Figure 2 : Image du code-barres à scanner avec C# Image du code-barres à scanner avec C#

Scanner de codes QR

Dans cette section, la bibliothèque IronBarcode gère efficacement les situations du monde réel impliquant des codes QR inclinés. Bien que le code QR incliné puisse être géré et lu par la méthode Read, cela peut néanmoins prendre plus de temps à résoudre. La bibliothèque IronBarcode fournit une manière personnalisée d'utiliser BarcodeReaderOptions comme paramètre supplémentaire pour traiter un tel entrée d'image. Le code se présente comme suit :

// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
' Define a collection of image filters to apply
Dim filtersToApply = New ImageFilterCollection() From {
	New SharpenFilter(),
	New InvertFilter(),
	New ContrastFilter(),
	New BrightnessFilter(),
	New AdaptiveThresholdFilter(),
	New BinaryThresholdFilter()
}

' Configure barcode reader options with specified filters
Dim myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = filtersToApply,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}

' Read the barcode/QR code with custom options and display result
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName, myOptionsExample)
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

La sortie sera la suivante après avoir ouvert l'image inclinée du code QR :

Comment utiliser les lecteurs de codes-barres dans l'application Windows C#, Figure 4 : Image du code QR incliné Image du code QR incliné

Lire plusieurs codes-barres en un seul scan

Documents PDF

Les images de codes-barres peuvent être scannées à partir d'un fichier PDF, et chaque résultat peut être affiché comme souhaité. Le code d'exemple suivant vous permet de lire plusieurs codes-barres à partir d'un fichier PDF.

// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
foreach (var PageResult in PDFResults) { 
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte[] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value + " on page " + PageNum);
}
// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
foreach (var PageResult in PDFResults) { 
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte[] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value + " on page " + PageNum);
}
' Scan for multiple barcodes within a PDF document
Dim PDFResults() As BarcodeResult = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")

' Work with the results found
For Each PageResult In PDFResults
	Dim Value As String = PageResult.Value
	Dim PageNum As Integer = PageResult.PageNumber
	Dim Img As System.Drawing.Bitmap = PageResult.BarcodeImage
	Dim BarcodeType As BarcodeEncoding = PageResult.BarcodeType
	Dim Binary() As Byte = PageResult.BinaryValue
	Console.WriteLine(PageResult.Value & " on page " & PageNum)
Next PageResult
$vbLabelText   $csharpLabel

Code-barres et code QR présents dans des fichiers PDF :

Comment utiliser les lecteurs de codes-barres dans l'application Windows C#, Figure 3 : C# - Lire des codes-barres à partir d'un fichier PDF résultats C# - Lire des codes-barres à partir d'un fichier PDF résultats

Lire les codes-barres à partir d'images imparfaites

Dans les cas d'utilisation réels, les codes-barres se trouvent souvent avec des imperfections dans les images, scans, vignettes ou photographies, et peuvent contenir du bruit numérique ou être inclinés. Cette section montre comment lire les données de codes-barres à partir de vignettes.

Vignettes

La bibliothèque IronBarcode utilise le générateur de codes-barres C#, qui est même capable de lire une vignette corrompue d'un code-barres.

Comment utiliser les lecteurs de codes-barres dans l'application Windows C#, Figure 5 : Correction automatique de la taille des vignettes de codes-barres. Fichier lisible à l'aide d'IronBarcode en C# Correction automatique de la taille des vignettes de codes-barres. Fichier lisible à l'aide d'IronBarcode en C#

Il détecte automatiquement les images de codes-barres trop petites pour représenter raisonnablement un véritable code-barres, puis augmente et nettoie tout le bruit numérique associé à la création de vignettes, les rendant ainsi à nouveau lisibles.

// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
' Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
Dim SmallResult As BarcodeResult = BarcodeReader.Read("ThumbnailOfBarcode.gif")
$vbLabelText   $csharpLabel

Résumé

IronBarcode is a versatile .NET software library and C# QR Code Generator for scanning and reading a wide range of barcode image formats, and it can do so whether or not these barcodes are perfect screen grabs or are in fact photographs, scans, or other imperfect real-world images. Additionally, IronBarcode offers a wide range of customization options to improve barcode reading speed, such as crop regions or multi-threading, and the accuracy of the ML model. Visitez la page officielle des documents pour plus d'informations sur IronBarcode.

Actuellement, si vous achetez l'intégralité de la suite Iron, vous pouvez obtenir cinq bibliothèques pour le prix de seulement deux.

Questions Fréquemment Posées

Qu'est-ce qu'un scanner de codes-barres dans le contexte des applications C# ?

Un scanner de codes-barres est un dispositif qui lit les codes-barres imprimés, décode les informations et les envoie à un ordinateur. Dans les applications C#, cette fonctionnalité peut être implémentée à l'aide de bibliothèques comme IronBarcode.

Comment puis-je créer une application Windows Forms pour le scan de codes-barres à l'aide de C# ?

Pour créer une application Windows Forms pour le scan de codes-barres en C#, ouvrez Visual Studio, créez un nouveau projet utilisant le 'Modèle d'application Windows Forms', configurez votre cible .NET Framework et utilisez des contrôles comme PictureBox, Label, TextBox et Button pour concevoir le formulaire.

Quelle est la méthode recommandée pour installer une bibliothèque de codes-barres dans un projet C# ?

Vous pouvez installer une bibliothèque de codes-barres comme IronBarcode dans un projet C# via la console de gestionnaire de paquets avec Install-Package IronBarCode, par le gestionnaire de paquets NuGet, ou en téléchargeant le DLL et l'ajoutant comme référence.

Est-il possible de lire plusieurs codes-barres en un seul scan en utilisant une bibliothèque C# ?

Oui, en utilisant IronBarcode, vous pouvez lire plusieurs codes-barres en un seul scan avec la méthode BarcodeReader.ReadPdf, même à partir de documents PDF.

Comment la bibliothèque parvient-elle à lire les codes-barres à partir d'images de faible qualité ?

IronBarcode peut interpréter des codes-barres à partir d'images de faible qualité en appliquant des filtres d'image et des techniques de mise à l'échelle pour réduire le bruit numérique, garantissant des lectures précises.

Quels formats de codes-barres sont pris en charge par les bibliothèques C# comme IronBarcode ?

IronBarcode prend en charge une large gamme de formats de codes-barres, y compris les codes QR et Code128. Il peut lire ces formats même si les images sont imparfaites ou capturées avec une caméra.

Quelles sont les étapes pour implémenter la lecture de codes-barres dans une application .NET ?

Pour implémenter la lecture de codes-barres, chargez une image dans un PictureBox, déclenchez l'action 'scan code' et utilisez IronBarcode pour traiter et afficher le texte décodé dans un TextBox.

IronBarcode peut-il gérer efficacement les codes QR inclinés ou penchés ?

Oui, IronBarcode peut gérer efficacement les codes QR désaxés en utilisant BarcodeReaderOptions pour appliquer les filtres d'image nécessaires et ajustements pour une lecture précise.

Quelles fonctionnalités de personnalisation offre IronBarcode pour la lecture de codes-barres ?

IronBarcode offre des fonctionnalités comme les régions de coupe, le multi-threading et les ajustements de paramètres pour améliorer la vitesse et la précision de la lecture de codes-barres.

Où puis-je trouver plus d'informations détaillées sur l'utilisation des bibliothèques de codes-barres en C# ?

Pour plus d'informations détaillées sur l'utilisation des bibliothèques de codes-barres en C#, vous pouvez visiter la page de documentation officielle sur le site de Iron Software.

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