Codes-barres et QR dans les applications C# et VB.NET

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

La lecture et l'écriture de codes-barres en C# et dans tous les autres langages .NET est un processus facile avec notre bibliothèque logicielle IronBarcode.

Installer IronBarcode

La première étape du processus consiste à installer IronBarcode, ce qui peut être fait en téléchargeant depuis NuGet ou en téléchargement de la DLL.

Pour installer le package NuGet IronBarcode, vous pouvez utiliser le gestionnaire de packages NuGet pour Visual Studio :

Install-Package BarCode

Vous pouvez également installer avec le CLI dotnet :

dotnet add package BarCode

Vous pouvez trouver plus d'informations sur le package NuGet sur le Site web de NuGet.

Lecture d'un code-barres ou d'un code QR

La lecture d'un code-barres ne nécessite qu'une seule ligne de code avec IronBarcode.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
    foreach (BarcodeResult result in results)
    {
        Console.WriteLine(result.Text);
    }
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("QuickStart.jpg")
If results IsNot Nothing Then
	For Each result As BarcodeResult In results
		Console.WriteLine(result.Text)
	Next result
End If
$vbLabelText   $csharpLabel

Avec cette simple ligne de code, vous avez la capacité de détecter et scanner tous types de codes-barres à partir du document d'entrée avec des performances exceptionnelles—tout ce dont vous avez besoin en une étape.!Cette méthode prend en charge une large gamme de formats d'image, y compris les images telles que JPEG, PNG et BMP, ainsi que les PDF et les formats multi-cadres tels que GIF et TIFF. Pour ceux qui ont besoin de plus de vitesse, d'une utilisation optimisée de la mémoire ou d'une précision de lecture améliorée, des options de configuration personnalisables sont disponibles pour affiner les performances selon vos besoins spécifiques.

D'une part, pour améliorer la vitesse de lecture, vous pourriez ajouter un objet BarcodeReaderOptions avec le paramètre Speed défini. Par défaut, il est réglé sur Balanced, mais il existe également une option Faster qui saute certaines vérifications de lecture de code-barres, telles que la vérification des couleurs inversées ou la rotation du code-barres.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    CropArea = new System.Drawing.Rectangle(100, 200, 300, 400),
};

BarcodeResults result = BarcodeReader.Read("QuickStart.jpg", myOptionsExample);
if (result != null)
{
    Console.WriteLine(result.First().Text);
}
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
	.CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)
}

Private result As BarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)
If result IsNot Nothing Then
	Console.WriteLine(result.First().Text)
End If
$vbLabelText   $csharpLabel

Vous pouvez également définir le ScanMode sur OnlyBasicScan pour éviter que notre algorithme de détection de codes-barres n'analyse le document.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");

// Loop through the results
foreach (BarcodeResult result in results)
{
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")

' Loop through the results
For Each result As BarcodeResult In results
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result
$vbLabelText   $csharpLabel

D'autres configurations à essayer consistent à spécifier les formats de code-barres à scanner, afin qu'IronBarcode n'ait pas à scanner tous les types de codes-barres, et à recadrer des régions spécifiques de l'image, de sorte qu'IronBarcode ait moins de données d'image à traiter. Il existe également une option pour prévoir plusieurs codes-barres, permettant à IronBarcode d'ignorer certains processus de détection et de décodage de plusieurs codes-barres si un seul est attendu.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
using IronBarCode;

BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");

// Loop through the results
foreach (BarcodeResult result in pagedResults)
{
    int pageNumber = result.PageNumber;
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}

// or from a multi-page  TIFF scan with image correction:
BarcodeResults multiFrameResults = BarcodeReader.Read(inputImage: "Multiframe.tiff", new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128,
    Multithreaded = false,
    RemoveFalsePositive = false,
    ImageFilters = null
});
Imports IronBarCode

Private pagedResults As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")

' Loop through the results
For Each result As BarcodeResult In pagedResults
	Dim pageNumber As Integer = result.PageNumber
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result

' or from a multi-page  TIFF scan with image correction:
Dim multiFrameResults As BarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Detailed,
	.ExpectMultipleBarcodes = True,
	.ExpectBarcodeTypes = BarcodeEncoding.Code128,
	.Multithreaded = False,
	.RemoveFalsePositive = False,
	.ImageFilters = Nothing
})
$vbLabelText   $csharpLabel

Écriture de codes-barres

Pour écrire des codes-barres avec IronBarcode, nous utilisons la classe BarcodeWriter. Avec BarcodeWriter, écrire des codes-barres est aussi simple qu’une seule ligne de code : il suffit d’entrer les données d’entrée et le format du code-barres, et c’est tout.! Vous pouvez ensuite enregistrer les données de l'image du code-barres en mémoire ou sous forme de fichier.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
$vbLabelText   $csharpLabel

Styliser les codes-barres

IronBarcode offre plusieurs options pour manipuler la représentation visuelle d'un code-barres. Les fonctionnalités prises en charge pour le style des codes-barres incluent le redimensionnement, la définition des marges dans l'image de sortie, la modification des couleurs de premier plan et d'arrière-plan, ainsi que l'ajout d'annotations.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SetMargins(100);
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple);

// All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SetMargins(100)
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple)

' All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png")
$vbLabelText   $csharpLabel

Exportation de codes-barres en HTML

Il existe également la fonctionnalité pratique d'exporter du HTML à partir d'un code-barres généré. Il peut exporter un code-barres en tant que document HTML autonome sans ressources externes, en tant que balise HTML autonome ou en tant qu'URI de données.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
using IronBarCode;

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Imports IronBarCode

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf")
$vbLabelText   $csharpLabel

Générer des codes QR

Lors de la génération de codes QR avec IronBarcode, nous pouvons choisir d'utiliser la classe QRCodeWriter à la place. Cette classe offre des configurations de personnalisation supplémentaires exclusives aux codes QR, telles que la définition du niveau de correction d'erreur et l'ajout d'une image au centre du QR.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
using IronBarCode;
using IronSoftware.Drawing;

QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf");
Imports IronBarCode
Imports IronSoftware.Drawing

Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo)
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf")
$vbLabelText   $csharpLabel

Formats de codes-barres pris en charge

IronBarcode prend en charge une large variété de formats de codes-barres couramment utilisés pour la lecture et l'écriture :

  • QR, Micro QR, et Micro QR Rectangulaire(rMQR)** codes.
  • Autres codes-barres bidimensionnels tels que Aztec, Data Matrix, MaxiCode, et PDF417.
  • Codes-barres linéaires empilés tels que Databar.
  • Les formats de codes-barres unidimensionnels conventionnels tels que UPC-A, UPC-E, EAN-8, EAN-13, Codabar, ITF, MSI et Plessey.

Pourquoi choisir IronBarcode ?

IronBarcode offre une API conviviale et facile à utiliser pour les développeurs afin de lire et écrire des codes-barres pour .NET, optimisée pour l'exactitude, la précision et la rapidité dans des cas d'utilisation réels.

La classe BarcodeWriter, par exemple, validera et corrigera automatiquement les 'somme de contrôle' sur les codes-barres UPCA et UPCE. Il met également à zéro les numéros qui sont trop courts pour un format numérique spécifique. Si vos données ne sont pas adaptées au format de données spécifié, IronBarcode indiquera au développeur un format de code-barres plus approprié qu'il pourrait utiliser.

IronBarcode excelle à la fois dans les domaines de la lecture des codes-barres à partir de documents et de la lecture des codes-barres à partir d'images prises dans le monde réel. La bibliothèque comprend un certain nombre de techniques de prétraitement d'image pour maximiser la probabilité de lecture des codes-barres, telles que la rotation automatique et la réduction du bruit de l'image.

Aller de l'avant

Pour tirer le meilleur parti d'IronBarcode, nous vous encourageons à lire les tutoriels dans cette section de documentation et à nous rendre visite surGitHub.