Lire les codes-barres en C# ;
Comment lire des codes-barres en C# et VB.NET
- Installer IronBarcode à partir de NuGet ou par téléchargement de DLL
- Utiliser le
BarcodeReader.QuicklyReadOneBarcode
pour lire n'importe quel code-barres ou QR - Lecture de plusieurs codes-barres ou QR en une seule lecture, dans un PDF ou un fichier Tiff multiframe
- Permettre la lecture du code-barres Iron à partir de scans et de photos imparfaits
- Téléchargez le projet tutoriel et commencez à numériser dès maintenant
Installer la bibliothèque de codes-barres dans votre projet Visual Studio
Installer avec NuGet
Install-Package BarCode
Télécharger DLL
Installation manuelle dans votre projet
Installer avec NuGet
Install-Package BarCode
Télécharger DLL
Installation manuelle dans votre projet
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.
Découvrez IronBarcode sur NuGet pour une installation rapide et un déploiement facile. Avec plus de 8 millions de téléchargements, il transforme avec C#.
Install-Package BarCode
Envisagez d'installer le IronBarcode DLL directement. Téléchargez et installez-le manuellement pour votre projet ou sous forme de GAC : {{lienDllAfficher}}
Installation manuelle dans votre projet
Télécharger la DLLIronBarcode est une bibliothèque polyvalente, avancée et efficace pour la lecture des codes-barres dans .NET.
La première étape sera d'installer Iron Barcode, et ceci est plus facilement réalisable en utilisant notre paquetage NuGet, bien que vous puissiez aussi choisir d'installer manuellement le paquetage DLL à votre projet ou à votre cache d'assemblage global. IronBarcode fonctionne bien pour produire une application de lecteur de codes-barres C#.
Install-Package BarCode
Lisez votre premier code-barres
La lecture d'un code-barres ou d'un code QR dans .NET est incroyablement facile en utilisant la bibliothèque de classe Iron Barcode avec .NET Barcode Reader. Dans notre premier exemple, nous pouvons voir comment lire ce code-barres en une seule ligne de code.
Nous pouvons extraire sa valeur, son image, son type d'encodage, ses données binaires.. (le cas échéant)et nous pouvons l'afficher dans la console.
using IronBarCode;
using System;
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png");
if (Result !=null && Result.Text == "https://ironsoftware.com/csharp/barcode/")
{
Console.WriteLine("GetStarted was a success. Read Value: " + Result.Text);
}
using IronBarCode;
using System;
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png");
if (Result !=null && Result.Text == "https://ironsoftware.com/csharp/barcode/")
{
Console.WriteLine("GetStarted was a success. Read Value: " + Result.Text);
}
Imports IronBarCode
Imports System
Private Result As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png")
If Result IsNot Nothing AndAlso Result.Text = "https://ironsoftware.com/csharp/barcode/" Then
Console.WriteLine("GetStarted was a success. Read Value: " & Result.Text)
End If
Faites plus d'efforts et soyez précis
Dans l'exemple suivant, nous allons ajouter notre variable TryHarder à la méthode QuicklyReadOneBarcode. Cela lui permet de faire plus d'efforts, en prenant littéralement plus de temps, mais en scannant plus profondément pour trouver un code QR qui pourrait être obscurci, corrompu, ou à un angle biaisé.
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("TryHarderQR.png", BarcodeEncoding.QRCode
BarcodeEncoding.Code128 , true);
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("TryHarderQR.png", BarcodeEncoding.QRCode
BarcodeEncoding.Code128 , true);
Dim Result As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("TryHarderQR.png", BarcodeEncoding.QRCode BarcodeEncoding.Code128, True)
Qui lira ce code QR faussé :
Dans notre exemple, vous pouvez voir que nous pouvons spécifier l'encodage du code-barres(s) que nous recherchons ou spécifier plusieurs formats. Cela permet d'améliorer considérablement les performances et la précision de la lecture des codes-barres. Les pipe character or 'Bitwize OR' is used to specify multiple formats simultaneously.
La même chose peut être obtenue, mais avec un degré de spécificité plus élevé, si nous allons de l'avant et utilisons la méthode de la BarcodeReader.ReadASingleBarcode
Méthode.
BarcodeResult Result = IronBarCode.BarcodeReader.ReadASingleBarcode("TryHarderQR.png", BarcodeEncoding.QRCode
BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
BarcodeResult Result = IronBarCode.BarcodeReader.ReadASingleBarcode("TryHarderQR.png", BarcodeEncoding.QRCode
BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
Dim Result As BarcodeResult = IronBarCode.BarcodeReader.ReadASingleBarcode("TryHarderQR.png", BarcodeEncoding.QRCode BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels)
Lecture de plusieurs codes-barres
Documents PDF
Dans notre prochain exemple, nous allons nous intéresser à la lecture d'un fichier document PDF scanné et trouver tous les codes-barres de format unidimensionnel en très peu de lignes de code.
Comme vous pouvez le voir, c'est très similaire à la lecture d'un seul code-barres à partir d'un seul document, sauf que nous disposons maintenant d'une nouvelle information concernant le numéro de page sur lequel le code-barres a été trouvé.
using IronBarCode;
using System;
using System.Drawing;
// Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
PagedBarcodeResult [] PDFResults = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf");
// Work with the results
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);
}
using IronBarCode;
using System;
using System.Drawing;
// Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
PagedBarcodeResult [] PDFResults = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf");
// Work with the results
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);
}
Imports IronBarCode
Imports System
Imports System.Drawing
' Multiple barcodes may be scanned up from a single document or image. A PDF document may also used as the input image
Private PDFResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromPdf("MultipleBarcodes.pdf")
' Work with the results
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
Nous trouvons les codes-barres suivants sur différentes pages.
Scans et TIFF
Dans l'exemple suivant, nous pouvons voir que le même résultat peut être obtenu à partir d'un TIFF multi-images, qui sera traité de la même manière qu'un PDF à cet égard.
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
PagedBarcodeResult [] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
foreach (var PageResult in MultiFrameResults)
{
//...
}
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
PagedBarcodeResult [] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
foreach (var PageResult in MultiFrameResults)
{
//...
}
' Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
Dim MultiFrameResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels)
For Each PageResult In MultiFrameResults
'...
Next PageResult
Multithreading
Pour lire plusieurs documents, nous obtenons de meilleurs résultats avec Iron Barcode en créant une liste de documents et en utilisant la fonction BarcodeReader.ReadBarcodesMultithreaded
méthode. Cette méthode utilise plusieurs threads et potentiellement tous les cœurs de votre CPU pour le processus de lecture des codes-barres et peut être exponentiellement plus rapide que la lecture des codes-barres un par un.
// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs. All threads are automatically managed by IronBarCode.
var ListOfDocuments = new [] { "Image1.png", "image2.JPG", "image3.pdf" };
PagedBarcodeResult [] BatchResults = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);
// Work with the results
foreach (var Result in BatchResults)
{
string Value = Result.Value;
//...
}
// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs. All threads are automatically managed by IronBarCode.
var ListOfDocuments = new [] { "Image1.png", "image2.JPG", "image3.pdf" };
PagedBarcodeResult [] BatchResults = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);
// Work with the results
foreach (var Result in BatchResults)
{
string Value = Result.Value;
//...
}
' The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs. All threads are automatically managed by IronBarCode.
Dim ListOfDocuments = { "Image1.png", "image2.JPG", "image3.pdf" }
Dim BatchResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments)
' Work with the results
For Each Result In BatchResults
Dim Value As String = Result.Value
'...
Next Result
Lecture de codes-barres à partir d'images imparfaites
Dans les cas d'utilisation réels, il se peut que nous souhaitions lire des codes-barres qui ne sont pas des captures d'écran parfaites. Il peut s'agir d'images imparfaites, de scans ou de photographies qui contiennent du bruit numérique ou qui sont faussées. Avec la plupart des bibliothèques open source conventionnelles de générateur et de lecteur de codes-barres .net, cela serait impossible. Toutefois, cette Lecteur de code-barres en C# rend les choses très simples.
Dans notre prochain exemple, nous examinerons la méthode TryHarder de QuicklyReadOneBarcode. Ce paramètre unique permet à Iron Barcode d'essayer de déformer et de lire les codes-barres à partir d'échantillons numériques imparfaits.
Photographies
Dans l'exemple des photographies, nous définirons une correction spécifique de la rotation du code-barres et une correction de l'image du code-barres afin de corriger le bruit numérique et l'inclinaison, la perspective et la rotation que l'on peut raisonnablement attendre de l'appareil photo d'un téléphone portable.
using IronBarCode;
using System;
using System.Drawing;
// All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
// * RotationCorrection e.g BarcodeReader.BarcodeRotationCorrection.Extreme un-rotates and removes perspective from barcode images.
// * ImageCorrection e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels separates Barcodes from background imagery and digital noise.
// * BarcodeEncoding e.g. BarcodeEncoding.Code128 Setting a specific Barcode format improves speed and reduces the risk of false positive results
// Example with a photo image
var PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);
string Value = PhotoResult.Value;
System.Drawing.Bitmap Img = PhotoResult.BarcodeImage;
BarcodeEncoding BarcodeType = PhotoResult.BarcodeType;
byte [] Binary = PhotoResult.BinaryValue;
Console.WriteLine(PhotoResult.Value);
using IronBarCode;
using System;
using System.Drawing;
// All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
// * RotationCorrection e.g BarcodeReader.BarcodeRotationCorrection.Extreme un-rotates and removes perspective from barcode images.
// * ImageCorrection e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels separates Barcodes from background imagery and digital noise.
// * BarcodeEncoding e.g. BarcodeEncoding.Code128 Setting a specific Barcode format improves speed and reduces the risk of false positive results
// Example with a photo image
var PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);
string Value = PhotoResult.Value;
System.Drawing.Bitmap Img = PhotoResult.BarcodeImage;
BarcodeEncoding BarcodeType = PhotoResult.BarcodeType;
byte [] Binary = PhotoResult.BinaryValue;
Console.WriteLine(PhotoResult.Value);
Imports IronBarCode
Imports System
Imports System.Drawing
' All BarcodeResult.Read methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
' * RotationCorrection e.g BarcodeReader.BarcodeRotationCorrection.Extreme un-rotates and removes perspective from barcode images.
' * ImageCorrection e.g BarcodeReader.BarcodeImageCorrection.DeepCleanPixels separates Barcodes from background imagery and digital noise.
' * BarcodeEncoding e.g. BarcodeEncoding.Code128 Setting a specific Barcode format improves speed and reduces the risk of false positive results
' Example with a photo image
Private PhotoResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels)
Private Value As String = PhotoResult.Value
Private Img As System.Drawing.Bitmap = PhotoResult.BarcodeImage
Private BarcodeType As BarcodeEncoding = PhotoResult.BarcodeType
Private Binary() As Byte = PhotoResult.BinaryValue
Console.WriteLine(PhotoResult.Value)
Scans
L'exemple suivant montre comment nous pourrions aborder la lecture des codes QR et des codes-barres PDF-417 à partir d'un fichier pDF scanné. Notez que nous avons défini un niveau approprié de correction de la rotation du code-barres et de correction de l'image du code-barres pour nettoyer légèrement le document, mais sans encourir une énorme pénalité de performance en surestimant nos besoins.
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
var ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels);
// Work with the results
foreach (var PageResult in ScanResults)
{
string Value = PageResult.Value;
///...
}
// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
var ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels);
// Work with the results
foreach (var PageResult in ScanResults)
{
string Value = PageResult.Value;
///...
}
' Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
Dim ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels)
' Work with the results
For Each PageResult In ScanResults
Dim Value As String = PageResult.Value
'''...
Next PageResult
Vignettes
Dans le dernier exemple, nous verrons que cette Générateur de code-barres C# est même capable de lire une vignette corrompue d'un code-barres.
Nos méthodes de lecture de codes-barres détectent automatiquement les images de codes-barres qui sont trop petites pour être raisonnablement un code-barres réel, et elles augmentent l'échelle et nettoient tous les bruits numériques associés à la lecture de codes-barres ; ce qui leur permet d'être à 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.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
// 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.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
' 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.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128)
Résumé
En résumé, Iron Barcode est une bibliothèque logicielle .NET polyvalente et Générateur de code QR C# pour lire un large éventail de formats de codes-barres, et ce, que ces codes-barres soient ou non des captures d'écran parfaites, des photographies, des scans ou d'autres images imparfaites du monde réel.
Pour en savoir plus
Pour en savoir plus sur le travail avec Iron Barcode, vous pouvez consulter les autres tutoriels de cette section, ainsi que les exemples sur notre page d'accueil ; ce qui, pour la plupart des développeurs, est suffisant pour démarrer.
Notre Référence API avec une référence spécifique à la BarcodeReader
et la classe BarcodeEncoding
Enum vous montrera en détail ce qu'il est possible de faire en utilisant cette méthode Bibliothèque de codes-barres C#.
Téléchargement du code source
Nous vous encourageons vivement à télécharger ce tutoriel et à l'exécuter par vous-même. Vous pouvez le faire en téléchargeant le code source, ou en nous forkant sur GitHub. La source de cette .NET Barcode Reader tutoriel sont disponibles sous la forme d'un projet d'application console Visual Studio 2017 écrit en C#.