Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS
Une comparaison entre IronBarcode et les bibliothèques ZXing.NET

Une comparaison entre IronBarcode et ZXing.NET

Un scanner de code-barres peut ne pas toujours convenir à nos applications. Vous pouvez déjà avoir une image numérique du code-barres et vouloir savoir ce qu'il représente en texte anglais. De plus, ce scanner ne lit que des codes-barres 1D, qui contiennent une quantité limitée de données et ne peuvent être utilisés que dans la bibliothèque de classe Windows RT. Les codes-barres 2D (également appelés QR codes) sont désormais courants et peuvent contenir beaucoup plus d'informations.

Une application basée sur C# peut être créée pour lire des codes-barres en utilisant des appels d'API simples et quelques étapes de codage. Une application supportée par .NET fonctionne sur Windows, macOS, ou Linux sans dépendre d'aucun outil ou API tiers.

Cet article comparera les deux bibliothèques d'applications .NET Core les plus puissantes pour lire les codes-barres de manière programmatique. Ces deux bibliothèques sont IronBarcode et ZXing.NET. Nous verrons ce qui rend IronBarcode plus puissant et robuste que ZXing.NET.


class="hsg-featured-snippet">

Comment Générer un Code-barres en C# Utilisant Zxing

  1. Installer la bibliothèque C# pour générer un code-barres
  2. Créer un nouvel objet à partir de la classe BarcodeWriterPixelData pour personnaliser le code-barres
  3. Définir le type de code-barres avec la propriété Format
  4. Instancier la classe QrCodeEncodingOptions pour personnaliser davantage la hauteur, le poids et la marge
  5. Générer un code-barres en C# avec la méthode Write de l'objet créé à l'étape 2

Qu'est-ce que ZXing.NET

ZXing.NET est une bibliothèque qui décode et génère des codes-barres (comme le QR Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar). ZXing, qui signifie "passage pour zèbre", est une bibliothèque open-source basée sur Java qui supporte une variété de formats de codes-barres 1D et 2D.

Ses caractéristiques essentielles sont les suivantes :

  • Il a la capacité de stocker des URL, des coordonnées, des événements de calendrier, et plus encore
  • Il est adapté aux applications Java SE
  • Il permet l'intégration d'un scanner de code-barres via intention
  • Il est une application simple pour Google Glass

Qu'est-ce que IronBarcode

IronBarcode est une bibliothèque C# qui permet aux programmeurs de lire et générer des codes-barres. En tant que bibliothèque de codes-barres leader, IronBarcode supporte une grande variété de codes-barres unidimensionnels et bidimensionnels, y compris les QR codes décorés (colorés et de marque). Il supporte .NET Standard et les versions Core 2 et plus, ce qui permet de l'utiliser sur plusieurs plateformes telles que Azure, Linux, macOS, Windows et le Web. IronBarcode est une bibliothèque de classes ou un composant bien connu pour le système .NET qui permet aux développeurs C#, VB.NET, et F# de travailler avec les langages de programmation standardisés. Il permet aux clients de parcourir des étiquettes de scanner et de créer de nouvelles étiquettes standardisées. Il fonctionne exceptionnellement bien avec les codes-barres 2D et d'autres codes-barres 3D standardisés.

IronBarcode supporte maintenant les codes-barres 2D. Il fournit des fonctionnalités pour optimiser la coloration, le style et la pixellisation de ces codes ainsi que la possibilité d'y ajouter des logos pour une utilisation dans des documents imprimés ou des supports publicitaires. Cette bibliothèque peut également lire des codes-barres inclinés et déformés, ce que d'autres logiciels de code-barres peuvent ne pas être capables de lire.

Installation de IronBarcode et ZXing.NET

Installation de ZXing.NET

Pour utiliser la bibliothèque ZXing.NET, installez les deux paquets suivants dans votre application ASP.NET Core en utilisant la console du gestionnaire de paquets NuGet :

1. ZXing.Net

Install-Package ZXing.Net

2. ZXing.Net.Bindings.CoreCompat.System.Drawing

Install-Package ZXing.Net.Bindings.CoreCompat.System.Drawing -Version 0.16.5-beta

Sinon, installez ZXing.NET dans votre projet en utilisant le gestionnaire de paquets NuGet. Pour ce faire, allez dans Outils > Gestionnaire de paquets NuGet > Gérer les paquets NuGet pour solutions..., puis passez à l'onglet "Parcourir" et recherchez "ZXing.NET".

class="content-img-align-center"> A Comparison between IronBarcode and Zxing.NET, Figure 1: ASP.NET Web Application

class="content__image-caption">Application Web ASP.NET

Installation de IronBarcode

Installez IronBarcode en utilisant le gestionnaire de paquets NuGet ou en téléchargeant directement le DLL depuis le site produit. L'espace de noms IronBarcode contient toutes les classes IronBarcode.

IronBarcode peut être installé en utilisant le gestionnaire de paquets NuGet pour Visual Studio : le nom du paquet est "Barcode".

Install-Package BarCode

Créer un Code-barres 2D

Utilisation de ZXing.NET

Tout d'abord, créez un nouveau dossier appelé 'qrr' dans le dossier racine du fichier projet.

Nous allons ensuite procéder à la création de fichiers QR et stocker les fichiers système image à l'intérieur du dossier 'qrr'.

Dans le contrôleur, ajoutez la méthode GenerateFile() comme indiqué ci-dessous dans le code source.

public ActionResult GenerateFile()
{
    return View();
}

[HttpPost]
public ActionResult GenerateFile(string qrText)
{
    Byte [] byteArray;
    var width = 250; // width of the QR Code
    var height = 250; // height of the QR Code
    var margin = 0;

    // BarcodeWriterPixelData acts as a QR code generator
    var qrCodeWriter = new ZXing.BarcodeWriterPixelData
    {
        Format = ZXing.BarcodeFormat.QR_CODE,
        Options = new QrCodeEncodingOptions
        {
            Height = height,
            Width = width,
            Margin = margin
        }
    };
    var pixelData = qrCodeWriter.Write(qrText);

    // creating a PNG bitmap from the raw pixel data; if only black and white colors are used it makes no difference if the raw pixel data is BGRA oriented and the bitmap is initialized with RGB
    using (var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
    {
        using (var ms = new MemoryStream())
        {
            var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            try
            {
                // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
                System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length);
            }
            finally
            {
                bitmap.UnlockBits(bitmapData);
           }

            // Save to folder
            string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
            bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);

            // Save to stream as PNG
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byteArray = ms.ToArray();
        }
    }
    return View(byteArray);
}
public ActionResult GenerateFile()
{
    return View();
}

[HttpPost]
public ActionResult GenerateFile(string qrText)
{
    Byte [] byteArray;
    var width = 250; // width of the QR Code
    var height = 250; // height of the QR Code
    var margin = 0;

    // BarcodeWriterPixelData acts as a QR code generator
    var qrCodeWriter = new ZXing.BarcodeWriterPixelData
    {
        Format = ZXing.BarcodeFormat.QR_CODE,
        Options = new QrCodeEncodingOptions
        {
            Height = height,
            Width = width,
            Margin = margin
        }
    };
    var pixelData = qrCodeWriter.Write(qrText);

    // creating a PNG bitmap from the raw pixel data; if only black and white colors are used it makes no difference if the raw pixel data is BGRA oriented and the bitmap is initialized with RGB
    using (var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
    {
        using (var ms = new MemoryStream())
        {
            var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            try
            {
                // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
                System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length);
            }
            finally
            {
                bitmap.UnlockBits(bitmapData);
           }

            // Save to folder
            string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
            bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);

            // Save to stream as PNG
            bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byteArray = ms.ToArray();
        }
    }
    return View(byteArray);
}
Public Function GenerateFile() As ActionResult
	Return View()
End Function

<HttpPost>
Public Function GenerateFile(ByVal qrText As String) As ActionResult
	Dim byteArray() As Byte
	Dim width = 250 ' width of the QR Code
	Dim height = 250 ' height of the QR Code
	Dim margin = 0

	' BarcodeWriterPixelData acts as a QR code generator
	Dim qrCodeWriter = New ZXing.BarcodeWriterPixelData With {
		.Format = ZXing.BarcodeFormat.QR_CODE,
		.Options = New QrCodeEncodingOptions With {
			.Height = height,
			.Width = width,
			.Margin = margin
		}
	}
	Dim pixelData = qrCodeWriter.Write(qrText)

	' creating a PNG bitmap from the raw pixel data; if only black and white colors are used it makes no difference if the raw pixel data is BGRA oriented and the bitmap is initialized with RGB
	Using bitmap = New System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb)
		Using ms = New MemoryStream()
			Dim bitmapData = bitmap.LockBits(New System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb)
			Try
				' we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
				System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length)
			Finally
				bitmap.UnlockBits(bitmapData)
			End Try

			' Save to folder
			Dim fileGuid As String = Guid.NewGuid().ToString().Substring(0, 4)
			bitmap.Save(Server.MapPath("~/qrr") & "/file-" & fileGuid & ".png", System.Drawing.Imaging.ImageFormat.Png)

			' Save to stream as PNG
			bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
			byteArray = ms.ToArray()
		End Using
	End Using
	Return View(byteArray)
End Function
$vbLabelText   $csharpLabel

Le seul changement restant est d'enregistrer le fichier de code QR dans le dossier 'qrr'. Ceci est effectué à l'aide des deux lignes de code ci-dessous.

string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);
string fileGuid = Guid.NewGuid().ToString().Substring(0, 4);
bitmap.Save(Server.MapPath("~/qrr") + "/file-" + fileGuid + ".png", System.Drawing.Imaging.ImageFormat.Png);
Dim fileGuid As String = Guid.NewGuid().ToString().Substring(0, 4)
bitmap.Save(Server.MapPath("~/qrr") & "/file-" & fileGuid & ".png", System.Drawing.Imaging.ImageFormat.Png)
$vbLabelText   $csharpLabel

Ensuite, vous devez créer la vue GenerateFile et y inclure le code suivant. La vue GenerateFile est identique à la vue Index.

@model Byte []
@using (Html.BeginForm(null, null, FormMethod.Post))
{
    <table>
        <tbody>
            <tr>
                <td>
                    <label>Enter text for creating QR Code</label>
                </td>
                <td>
                <input type="text" name="qrText" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <button>Submit</button>
                </td>
            </tr>
        </tbody>
    </table>
}
@{
    if (Model != null)
    {
        <h3>QR Code Successfully Generated</h3>
        <img src="@String.Format("data:image/png;base64,{0}", Convert.ToBase64String(Model))" />
    }
}
@model Byte []
@using (Html.BeginForm(null, null, FormMethod.Post))
{
    <table>
        <tbody>
            <tr>
                <td>
                    <label>Enter text for creating QR Code</label>
                </td>
                <td>
                <input type="text" name="qrText" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <button>Submit</button>
                </td>
            </tr>
        </tbody>
    </table>
}
@{
    if (Model != null)
    {
        <h3>QR Code Successfully Generated</h3>
        <img src="@String.Format("data:image/png;base64,{0}", Convert.ToBase64String(Model))" />
    }
}
model Function [using](Html.BeginForm ByVal As (Nothing, Nothing, FormMethod.Post)) As Byte()
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <table> <tbody> <tr> <td> <label> Enter text for creating QR Code</label> </td> <td> <input type="text" name="qrText" /> </td> </tr> <tr> <td colspan="2"> <button> Submit</button> </td> </tr> </tbody> </table>
	"qrText" /> </td> </tr> (Of tr) <td colspan="2"> (Of button) Submit</button> </td> </tr> </tbody> </table>
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <table> <tbody> <tr> <td> <label> Enter text for creating QR Code</label> </td> <td> <input type="text" name="qrText" /> </td> </tr> <tr> <td colspan
	"text" name="qrText" /> </td> </tr> (Of tr) <td colspan
	(Of table) (Of tbody) (Of tr) (Of td) (Of label) Enter text for creating QR Code</label> </td> (Of td) <input type="text" name
End Function
@
If True Then
	If Model IsNot Nothing Then
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
		(Of h3) QR Code Successfully Generated</h3> <img src="@String.Format("data:image/png
		base64,
		If True Then
			0
		End If
		", Convert.ToBase64String(Model))" />
	End If
End If
$vbLabelText   $csharpLabel

Entrez une valeur quelconque dans la boîte de texte et cliquez sur le bouton 'Valider'. Le code QR sera généré et enregistré sous forme de fichier .PNG dans le dossier 'qrr'.

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 2: QR Code Generator

class="content__image-caption">Générateur de Code QR

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 3: QR Code Files Displayed

class="content__image-caption">Fichiers de Code QR Affichés

Formats de Code-barres Supportés

IronBarcode supporte une large gamme de formats de code-barres couramment utilisés, y compris :

  • QR codes avec logos et couleurs (y compris les codes décorés et de marque)
  • Codes-barres multi-formats, y compris Aztec, Data Matrix, CODE 93, CODE 128, RSS Expanded Databar, UPS MaxiCode, et USPS, IMB (OneCode) codes-barres
  • Codes-barres linéaires empilés RSS-14 et PDF-417
  • UPCA, UPCE, EAN-8, EAN-13, Codabar, ITF, MSI et Plessey sont des formats de codes-barres numériques traditionnels.

Créer et Enregistrer un Code-barres

using IronBarCode;
// Create a barcode and save it in various formats
var MyBarCode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
MyBarCode.SaveAsImage("MyBarCode.png");
MyBarCode.SaveAsGif("MyBarCode.gif");
MyBarCode.SaveAsHtmlFile("MyBarCode.html");
MyBarCode.SaveAsJpeg("MyBarCode.jpg");
MyBarCode.SaveAsPdf("MyBarCode.Pdf");
MyBarCode.SaveAsPng("MyBarCode.png");
MyBarCode.SaveAsTiff("MyBarCode.tiff");
MyBarCode.SaveAsWindowsBitmap("MyBarCode.bmp");

// Convert barcode to different image formats and obtain binary data
System.Drawing.Image MyBarCodeImage = MyBarCode.Image;
System.Drawing.Bitmap MyBarCodeBitmap = MyBarCode.ToBitmap();
string DataURL = MyBarCode.ToDataUrl();
string ImgTagForHTML = MyBarCode.ToHtmlTag();
byte[] PngBytes = MyBarCode.ToPngBinaryData();

// Save barcode in PDF stream
using (System.IO.Stream PdfStream = MyBarCode.ToPdfStream())
{
    // The Stream barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
}

// Stamp barcode onto an existing PDF at a specific position
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
using IronBarCode;
// Create a barcode and save it in various formats
var MyBarCode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
MyBarCode.SaveAsImage("MyBarCode.png");
MyBarCode.SaveAsGif("MyBarCode.gif");
MyBarCode.SaveAsHtmlFile("MyBarCode.html");
MyBarCode.SaveAsJpeg("MyBarCode.jpg");
MyBarCode.SaveAsPdf("MyBarCode.Pdf");
MyBarCode.SaveAsPng("MyBarCode.png");
MyBarCode.SaveAsTiff("MyBarCode.tiff");
MyBarCode.SaveAsWindowsBitmap("MyBarCode.bmp");

// Convert barcode to different image formats and obtain binary data
System.Drawing.Image MyBarCodeImage = MyBarCode.Image;
System.Drawing.Bitmap MyBarCodeBitmap = MyBarCode.ToBitmap();
string DataURL = MyBarCode.ToDataUrl();
string ImgTagForHTML = MyBarCode.ToHtmlTag();
byte[] PngBytes = MyBarCode.ToPngBinaryData();

// Save barcode in PDF stream
using (System.IO.Stream PdfStream = MyBarCode.ToPdfStream())
{
    // The Stream barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
}

// Stamp barcode onto an existing PDF at a specific position
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
Imports IronBarCode
' Create a barcode and save it in various formats
Private MyBarCode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
MyBarCode.SaveAsImage("MyBarCode.png")
MyBarCode.SaveAsGif("MyBarCode.gif")
MyBarCode.SaveAsHtmlFile("MyBarCode.html")
MyBarCode.SaveAsJpeg("MyBarCode.jpg")
MyBarCode.SaveAsPdf("MyBarCode.Pdf")
MyBarCode.SaveAsPng("MyBarCode.png")
MyBarCode.SaveAsTiff("MyBarCode.tiff")
MyBarCode.SaveAsWindowsBitmap("MyBarCode.bmp")

' Convert barcode to different image formats and obtain binary data
Dim MyBarCodeImage As System.Drawing.Image = MyBarCode.Image
Dim MyBarCodeBitmap As System.Drawing.Bitmap = MyBarCode.ToBitmap()
Dim DataURL As String = MyBarCode.ToDataUrl()
Dim ImgTagForHTML As String = MyBarCode.ToHtmlTag()
Dim PngBytes() As Byte = MyBarCode.ToPngBinaryData()

' Save barcode in PDF stream
Using PdfStream As System.IO.Stream = MyBarCode.ToPdfStream()
	' The Stream barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
End Using

' Stamp barcode onto an existing PDF at a specific position
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50)
$vbLabelText   $csharpLabel

D'un autre côté, ZXing est une bibliothèque open-source Java pour le traitement d'images de codes-barres 1D/2D. UPC-A, UPC-E, EAN-8, Code 93, Code 128, QR Code, Data Matrix, Aztec, PDF 417 et d'autres formats de codes-barres sont supportés.

class="content-img-align-center"> A Comparison between IronBarcode and Zxing.NET, Figure 4: Supported Barcode Formats

class="content__image-caption">Formats de Code-barres Supportés

Créer des fichiers QR Code avec IronBarcode

Pour créer des QR codes avec IronBarcode, nous pouvons utiliser la classe QRCodeWriter plutôt que la classe BarcodeWriter. Cette classe introduit des fonctionnalités nouvelles et intéressantes pour créer des QR codes. Elle nous permet de définir le niveau de correction d'erreur du QR, vous permettant de trouver un équilibre entre la taille et la lisibilité de votre code QR.

using IronBarCode;
// Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
using IronBarCode;
// Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
Imports IronBarCode
' Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png")
$vbLabelText   $csharpLabel

La correction d'erreur nous permet de spécifier à quel point il sera facile de lire un code QR dans des situations réelles. Des niveaux plus élevés de correction d'erreurs entraînent des codes QR plus grands avec plus de pixels et de complexité. Dans l'image ci-dessous, nous voyons le fichier de code QR affiché.

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 5: Supported Barcode Formats

class="content__image-caption">Image de Code QR

Nous commençons par spécifier la valeur du code-barres et le format du code-barres à partir de l'énumération IronBarcode.BarcodeWriterEncoding. Nous pouvons ensuite enregistrer comme image, un System.Drawing.Image, ou un objet code Bitmap.

using IronBarCode;
using System.Diagnostics;

// Generate a simple BarCode image and save as PNG using the following namespaces
GeneratedBarcode MyBarCode = IronBarcode.BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128);
MyBarCode.SaveAsPng("MyBarCode.png");

// This line opens the image in your default image viewer
Process.Start("MyBarCode.png");
using IronBarCode;
using System.Diagnostics;

// Generate a simple BarCode image and save as PNG using the following namespaces
GeneratedBarcode MyBarCode = IronBarcode.BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128);
MyBarCode.SaveAsPng("MyBarCode.png");

// This line opens the image in your default image viewer
Process.Start("MyBarCode.png");
Imports IronBarCode
Imports System.Diagnostics

' Generate a simple BarCode image and save as PNG using the following namespaces
Private MyBarCode As GeneratedBarcode = IronBarcode.BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128)
MyBarCode.SaveAsPng("MyBarCode.png")

' This line opens the image in your default image viewer
Process.Start("MyBarCode.png")
$vbLabelText   $csharpLabel
class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 6: Create a Barcode Image in C# Example

class="content__image-caption">Créer une Image de Code-barres en C# Exemple

IronBarcode supporte également la stylisation des QR codes, telle que l'insertion d'un graphique logo placé et ajusté à une grille au centre exact de l'image. Il peut également être coloré pour correspondre à une marque ou une identité graphique spécifique.

Pour le test, créez un logo dans l'échantillon de code ci-dessous et voyez comme il est simple d'utiliser la méthode QRCodeWriter.CreateQRCodeWithLogo.

using IronBarCode;

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
using IronBarCode;

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
Imports IronBarCode

' Adding a Logo
Private MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500)
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)
$vbLabelText   $csharpLabel
class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 7: Create QR Code With Logo Image

class="content__image-caption">Créer un Code QR Avec Logo Image

Enfin, nous enregistrons le code QR généré en tant que fichier PDF. Pour votre commodité, la dernière ligne de code enregistre le code QR sous forme de fichier HTML.

using IronBarCode;

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);

// Save as PDF
MyQRWithLogo.SaveAsPdf("MyQRWithLogo.pdf");

// Also Save as HTML
MyQRWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
using IronBarCode;

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);

// Save as PDF
MyQRWithLogo.SaveAsPdf("MyQRWithLogo.pdf");

// Also Save as HTML
MyQRWithLogo.SaveAsHtmlFile("MyQRWithLogo.html");
Imports IronBarCode

' Adding a Logo
Private MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500)
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)

' Save as PDF
MyQRWithLogo.SaveAsPdf("MyQRWithLogo.pdf")

' Also Save as HTML
MyQRWithLogo.SaveAsHtmlFile("MyQRWithLogo.html")
$vbLabelText   $csharpLabel

Ci-dessous, nous voyons comment créer, styliser et exporter un code-barres avec une seule ligne de code.

IronBarcode inclut une API fluide similaire à System.Linq. Nous créons un code-barres, définissons ses marges, et l'exportons en bitmap en une seule ligne en enchaînant les appels de méthode. Ceci peut être très utile et rend le code plus facile à lire.

using IronBarCode;
using System.Drawing;

// Fluent API for Barcode image generation
string MyValue = "https://ironsoftware.com/csharp/barcode";
Bitmap BarcodeBmp = IronBarcode.BarcodeWriter.CreateBarcode(MyValue, BarcodeEncoding.PDF417)
    .ResizeTo(300, 200)
    .SetMargins(100)
    .ToBitmap();
using IronBarCode;
using System.Drawing;

// Fluent API for Barcode image generation
string MyValue = "https://ironsoftware.com/csharp/barcode";
Bitmap BarcodeBmp = IronBarcode.BarcodeWriter.CreateBarcode(MyValue, BarcodeEncoding.PDF417)
    .ResizeTo(300, 200)
    .SetMargins(100)
    .ToBitmap();
Imports IronBarCode
Imports System.Drawing

' Fluent API for Barcode image generation
Private MyValue As String = "https://ironsoftware.com/csharp/barcode"
Private BarcodeBmp As Bitmap = IronBarcode.BarcodeWriter.CreateBarcode(MyValue, BarcodeEncoding.PDF417).ResizeTo(300, 200).SetMargins(100).ToBitmap()
$vbLabelText   $csharpLabel

En conséquence, une System.Drawing.Image d'un code-barres PDF417 apparaît comme montré ci-dessous :

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 8: Simple, fluent PDF417 Barcode Generation in C#

class="content__image-caption">Génération de Code-barres PDF417 Simple et Fluide en C#

Lecture de Fichiers Code QR

Lecture de Codes QR avec IronBarcode

Lire un code-barres ou un code QR est un jeu d'enfant lorsque vous utilisez la bibliothèque de classes IronBarcode en conjonction avec le lecteur de code-barres .NET. Dans notre premier exemple, nous pouvons voir comment lire un code-barres en utilisant seulement une ligne de code.

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 9: Code128 Barcode Image to be Scanned with C#

class="content__image-caption">Image de Code-barres Code128 à Scanner avec C#

Nous pouvons obtenir la valeur du code-barres, l'image, le type d'encodage, et les données binaires (le cas échéant) et les afficher ensuite sur la console.

using IronBarCode;
using System;

// Read a barcode or QR code from an image
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;

// Read a barcode or QR code from an image
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

' Read a barcode or QR code from an image
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
$vbLabelText   $csharpLabel

Lecture de Codes-barres à l'Intérieur des PDFs

Nous allons examiner la lecture d'un document PDF numérisé et trouver tous les codes-barres unidimensionnels en quelques 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 maintenant nous savons sur quelle page le code-barres a été découvert.

using IronBarCode;
using System;
using System.Drawing;

// Multiple barcodes may be scanned up from a single document or image. A PDF document may also be 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 be 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 be 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
$vbLabelText   $csharpLabel

Vous obtiendrez des données de résultat avec tous les codes-barres bitmap du PDF.

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 10: Reading Barcodes Stored Inside PDF Results

class="content__image-caption">Lecture de Codes-barres Stockés à l'Intérieur de Résultats PDF

Lecture de Codes-barres à partir de GIF et TIFF

using IronBarCode;
using System;

// 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)
{
    // Process each page result
}
using IronBarCode;
using System;

// 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)
{
    // Process each page result
}
Imports IronBarCode
Imports System

' Multi-frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
Private MultiFrameResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels)
For Each PageResult In MultiFrameResults
	' Process each page result
Next PageResult
$vbLabelText   $csharpLabel
class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 11: Reading Barcodes from a Multi-frame TIFF Image

class="content__image-caption">Lecture de Codes-barres à partir d'une Image TIFF Multi-trame

L'exemple suivant montre comment lire des QR codes et des codes-barres PDF-417 à partir d'un PDF numérisé. Nous avons défini un niveau approprié de correction de rotation de codes-barres et de correction d'image de codes-barres pour nettoyer légèrement le document sans entraîner de pénalité de performance significative.

using IronBarCode;
using System;

// PDF documents 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;
    //...
}
using IronBarCode;
using System;

// PDF documents 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;
    //...
}
Imports IronBarCode
Imports System

' PDF documents can also be scanned, and multiple threads will be used automatically in the background for improved performance
Private 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
$vbLabelText   $csharpLabel
class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 12: Reading Barcodes from a Scanned PDF Document

class="content__image-caption">Lecture de Codes-barres à partir d'un Document PDF Numérisé

Lecture de Codes QR CORROMPUS à partir d'Images Bitmap

L'exemple ci-dessous montre que cette bibliothèque de codes-barres C# peut même lire une vignette de code-barres corrompue.

La correction de la taille de la vignette de code-barres est effectuée automatiquement. IronBarcode en C# rend un fichier lisible.

Les méthodes du lecteur détectent automatiquement les images de codes-barres trop petites pour être un code-barres légitime et les améliorent. Elles nettoient tout le bruit numérique associé au travail avec des vignettes, les rendant à nouveau lisibles.

using IronBarCode;

// Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
using IronBarCode;

// Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
Imports IronBarCode

' Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
Private SmallResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128)
$vbLabelText   $csharpLabel
class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 13: Automatic Barcode Thumbnail Size Correction

class="content__image-caption">Correction Automatique de la Taille de la Vignette du Code-barres

Lecture de Codes-barres à partir d'Images Imparfaites

Dans des scénarios réels, nous pourrions vouloir lire des codes-barres à partir d'images imparfaites. Elles pourraient être des images inclinées ou des photographies avec du bruit numérique. Cela serait impossible avec la plupart des bibliothèques open-source de génération et de lecture de codes-barres .NET. IronBarcode, d'un autre côté, rend la lecture de codes-barres à partir d'images imparfaites un jeu d'enfant.

Nous allons maintenant examiner la méthode ReadASingleBarcode. Avec son paramètre RotationCorrection, IronBarcode tente de remettre à plat et de lire des codes-barres à partir d'échantillons numériques imparfaits.

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)
$vbLabelText   $csharpLabel
class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 14: Reading a Barcode From a Phone Camera

class="content__image-caption">Lire un Code-barres depuis un Appareil Photo de Téléphone

IronBarcode peut également lire plusieurs codes-barres en même temps. Nous obtenons de meilleurs résultats d'IronBarcode lorsque nous créons une liste de documents et utilisons le lecteur de code-barres pour lire de nombreux documents. La méthode ReadBarcodesMultithreaded pour le processus de numérisation de code-barres utilise plusieurs threads et potentiellement tous les cœurs de votre CPU, ce qui peut être exponentiellement plus rapide que de lire des codes-barres un à un.

using IronBarCode;

// 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;
    //...
}
using IronBarCode;

// 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;
    //...
}
Imports IronBarCode

' The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs. All threads are automatically managed by IronBarcode.
Private ListOfDocuments = { "Image1.png", "image2.JPG", "image3.pdf" }
Private BatchResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments)

' Work with the results
For Each Result In BatchResults
	Dim Value As String = Result.Value
	'...
Next Result
$vbLabelText   $csharpLabel

Lecture et Décodage de QR Codes avec ZXing.NET

Pour lire les fichiers de QR code, ajoutez une méthode d'action ViewFile à votre contrôleur, comme indiqué ci-dessous.

public ActionResult ViewFile()
{
    List<KeyValuePair<string, string>> fileData = new List<KeyValuePair<string, string>>();
    KeyValuePair<string, string> data;

    string[] files = Directory.GetFiles(Server.MapPath("~/qrr"));
    foreach (string file in files)
    {
        // Create a barcode reader instance
        IBarcodeReader reader = new BarcodeReader();

        // Load a bitmap
        var barcodeBitmap = (Bitmap)Image.FromFile(Server.MapPath("~/qrr") + "/" + Path.GetFileName(file));

        // Detect and decode the barcode inside the bitmap
        var result = reader.Decode(barcodeBitmap);

        // Do something with the result
        data = new KeyValuePair<string, string>(result.ToString(), "/QR/" + Path.GetFileName(file));
        fileData.Add(data);
    }
    return View(fileData);
}
public ActionResult ViewFile()
{
    List<KeyValuePair<string, string>> fileData = new List<KeyValuePair<string, string>>();
    KeyValuePair<string, string> data;

    string[] files = Directory.GetFiles(Server.MapPath("~/qrr"));
    foreach (string file in files)
    {
        // Create a barcode reader instance
        IBarcodeReader reader = new BarcodeReader();

        // Load a bitmap
        var barcodeBitmap = (Bitmap)Image.FromFile(Server.MapPath("~/qrr") + "/" + Path.GetFileName(file));

        // Detect and decode the barcode inside the bitmap
        var result = reader.Decode(barcodeBitmap);

        // Do something with the result
        data = new KeyValuePair<string, string>(result.ToString(), "/QR/" + Path.GetFileName(file));
        fileData.Add(data);
    }
    return View(fileData);
}
Public Function ViewFile() As ActionResult
	Dim fileData As New List(Of KeyValuePair(Of String, String))()
	Dim data As KeyValuePair(Of String, String)

	Dim files() As String = Directory.GetFiles(Server.MapPath("~/qrr"))
	For Each file As String In files
		' Create a barcode reader instance
		Dim reader As IBarcodeReader = New BarcodeReader()

		' Load a bitmap
		Dim barcodeBitmap = CType(Image.FromFile(Server.MapPath("~/qrr") & "/" & Path.GetFileName(file)), Bitmap)

		' Detect and decode the barcode inside the bitmap
		Dim result = reader.Decode(barcodeBitmap)

		' Do something with the result
		data = New KeyValuePair(Of String, String)(result.ToString(), "/QR/" & Path.GetFileName(file))
		fileData.Add(data)
	Next file
	Return View(fileData)
End Function
$vbLabelText   $csharpLabel
class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 15: Reading and Decoding QR Code

class="content__image-caption">Lire et Décoder un Code QR

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 16: Decoded QR Code

class="content__image-caption">Code QR Décodé

Décodage d'un Code-barres À l'Intérieur d'un Bitmap

using ZXing;
using System.Drawing;

// Create a barcode reader instance
BarcodeReader reader = new BarcodeReader();

// Load a bitmap
var barcodeBitmap = (Bitmap)Image.FromFile("C:\\sample-barcode-image.png");

// Detect and decode the barcode inside the bitmap
var result = reader.Decode(barcodeBitmap);

// Do something with the result
if (result != null)
{
    txtDecoderType.Text = result.BarcodeFormat.ToString();
    txtDecoderContent.Text = result.Text;
}
using ZXing;
using System.Drawing;

// Create a barcode reader instance
BarcodeReader reader = new BarcodeReader();

// Load a bitmap
var barcodeBitmap = (Bitmap)Image.FromFile("C:\\sample-barcode-image.png");

// Detect and decode the barcode inside the bitmap
var result = reader.Decode(barcodeBitmap);

// Do something with the result
if (result != null)
{
    txtDecoderType.Text = result.BarcodeFormat.ToString();
    txtDecoderContent.Text = result.Text;
}
Imports ZXing
Imports System.Drawing

' Create a barcode reader instance
Private reader As New BarcodeReader()

' Load a bitmap
Private barcodeBitmap = CType(Image.FromFile("C:\sample-barcode-image.png"), Bitmap)

' Detect and decode the barcode inside the bitmap
Private result = reader.Decode(barcodeBitmap)

' Do something with the result
If result IsNot Nothing Then
	txtDecoderType.Text = result.BarcodeFormat.ToString()
	txtDecoderContent.Text = result.Text
End If
$vbLabelText   $csharpLabel

ZXing Decoder Online

ZXing Decoder Online est un scanner de codes-barres et de QR codes disponible en ligne qui supporte le décodage. Téléchargez un PNG ou tout autre format de l'image du code QR, et il commencera à le décoder. De même, vous pouvez générer un QR code pour n'importe quelle donnée. La plupart du temps, ces informations seront une URL ou un texte que vous souhaitez encoder dans un QR code.

Accédez au site Web du ZXing Decoder.

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 17: Decoded QR Code

class="content__image-caption">Site web du Décodeur ZXing

class="content-img-align-center"> A Comparison between IronBarcode and ZXing.NET, Figure 18: Decoded QR Code

class="content__image-caption">Résultat du Décodage ZXing

Tarification et licences

La bibliothèque ZXing.NET est une bibliothèque open-source gratuite qui vous permet de construire des applications de lecture de codes-barres, sous licence Apache License 2.0, qui permet une utilisation commerciale gratuite avec une attribution appropriée.

Une licence développeur pour IronBarcode est offerte gratuitement. IronBarcode a un schéma de tarification unique : le pack Lite commence à $liteLicense sans coûts supplémentaires. Les articles SaaS et OEM peuvent également être redistribués. Chaque licence comprend une licence perpétuelle, une validité dev/étage/production, une garantie de remboursement de 30 jours, et une année de support logiciel et de mises à jour (achat unique). Visitez cette page pour consulter les informations complètes sur les prix et les licences d'IronBarcode.

Pourquoi Choisir IronBarcode ?

IronBarcode inclut une API facile à utiliser pour les développeurs afin de lire et écrire des codes-barres dans .NET, ce qui optimise la précision et un faible taux d'erreur dans des cas d'utilisation réels.

La classe BarcodeWriter, par exemple, validera et corrigera les 'checksums' sur les codes-barres UPCA et UPCE. Elle 'remplit également de zéros' les numéros trop courts pour être entrés dans un format numérique spécifique. Si vos données sont incompatibles avec le format de données spécifié, IronBarcode informera le développeur d'un format de code-barres plus approprié qu'il peut utiliser.

IronBarcode excelle à lire les codes-barres lorsqu'ils ont été scannés ou lus à partir d'une image photographique autrement dit, lorsque l'image n'est pas parfaite graphiquement et n'est pas une capture d'écran générée par une machine.

Comment IronBarcode Diffère de ZXing.NET ?

IronBarcode est construit à partir du cœur de ZXing.NET (Zebra Crossing), avec une capacité de traitement améliorée. Il vient avec une API facile à utiliser et un faible taux d'erreur comparé à la bibliothèque centrale de ZXing.NET. Non seulement cela, mais IronBarcode supporte également une plus large gamme de formats de codes-barres que la bibliothèque ZXing.NET habituelle ne prend en charge.

IronBarcode est une version améliorée de ZXing.NET, offrant à l'utilisateur la plate-forme pour une utilisation commerciale et la possibilité d'utiliser le même paquet sur plusieurs plates-formes. Il dispose également d'un support technique complet, toujours prêt à vous aider où que vous soyez.

IronBarcode inclut la rotation automatique, la correction de perspective et la correction de bruit numérique et peut détecter le type de code-barres encodé dans une image.

Conclusion

En conclusion, IronBarcode est une bibliothèque logicielle .NET polyvalente et un générateur de codes QR en C# pour lire une large gamme de formats de codes-barres, qu'il s'agisse de captures d'écran, de photographies, de scans ou d'autres images imparfaites du monde réel.

IronBarcode est l'une des bibliothèques les plus efficaces pour créer et identifier des codes-barres. En termes de création et d'identification de codes-barres, elle est aussi parmi les bibliothèques les plus rapides. Divers systèmes d'exploitation sont compatibles avec la bibliothèque. Elle est facile à concevoir et supporte une large gamme de formats de codes-barres. De plus, divers symboles, formats et caractères sont supportés.

Le code-barres ZXing.NET est une bibliothèque puissante qui génère et reconnaît les codes-barres dans divers formats d'image. Nous pouvons lire et créer des images dans une variété de formats. ZXing.NET vous permet également de modifier l'apparence d'un code-barres, en altérant sa hauteur, sa largeur, son texte de code-barres, etc.

En comparaison avec ZXing.NET, les paquets IronBarcode offrent une licence et un support fiables. IronBarcode coûte $liteLicense. Bien que ZXing soit gratuit et open-source, IronBarcode fournit un support commercial complet et un entretien professionnel. En plus d'être plus flexible que ZXing.NET, la solution Iron Barcode a également plus de fonctionnalités. Ainsi, il est évident qu'IronBarcode a un avantage significatif sur ZXing.NET.

En comparant les temps de traitement pour reconnaître et générer des codes-barres, IronBarcode surpasse ZXing.NET. IronBarcode possède également plusieurs propriétés qui nous permettent de lire des codes-barres à partir de différents formats d'image et de documents PDF. Elle permet également d'inclure des images dans le code-barres ou le code QR, ce qui n'est disponible dans aucune autre bibliothèque.

IronBarcode est gratuit pour les premières étapes de développement. Vous pouvez obtenir un essai gratuit pour une utilisation au niveau de la production ou commerciale. Selon les besoins du développeur, IronBarcode propose trois niveaux de prix. Vous pouvez choisir la solution qui répond le mieux à vos besoins. Vous pouvez maintenant obtenir une suite de cinq produits Iron Software pour le prix de deux éléments Iron Software. Visitez ce site web pour plus d'informations.

Veuillez noterZXing.NET est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à, approuvé par ou parrainé par ZXing.NET. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

Questions Fréquemment Posées

Comment puis-je générer un code QR en C# ?

Vous pouvez générer un code QR en C# en utilisant IronBarcode grâce à sa classe `BarcodeWriter`. Il suffit de définir le contenu du code QR, de personnaliser des options comme la couleur et la taille, et d'appeler la méthode `Write` pour générer le code QR.

Qu'est-ce qui rend IronBarcode plus robuste que ZXing.NET ?

IronBarcode offre des capacités améliorées telles que le support d'une plus grande variété de formats de codes-barres, des fonctionnalités avancées de traitement d'image comme la rotation et la correction de perspective, et la possibilité de créer des codes QR décorés avec des logos et des couleurs. Il est également compatible avec plusieurs plateformes et fournit un support commercial.

Puis-je lire des codes-barres à partir d'images avec des imperfections en utilisant IronBarcode ?

Oui, IronBarcode peut lire des codes-barres à partir d'images avec des imperfections en utilisant des fonctionnalités comme la correction de rotation, la correction de perspective et la réduction du bruit numérique, ce qui le rend efficace pour les images scannées ou photographiques.

Quelles sont les étapes pour lire un code-barres en C# ?

Pour lire un code-barres en C#, utilisez la classe `BarcodeReader` d'IronBarcode. Chargez l'image contenant le code-barres à l'aide de la méthode `BarcodeReader.QuicklyReadOneBarcode`, qui décodera et renverra le contenu du code-barres s'il est reconnu.

Comment IronBarcode gère-t-il la compatibilité multiplateforme ?

IronBarcode prend en charge la compatibilité multiplateforme pour Windows, macOS, Linux et Azure, vous permettant d'intégrer des fonctionnalités de génération et de lecture de codes-barres dans diverses applications .NET sans dépendances tierces.

Quelles options sont disponibles pour personnaliser les codes QR avec IronBarcode ?

IronBarcode permet la personnalisation des codes QR en ajustant les couleurs, en ajoutant des logos pour le branding, et en configurant les niveaux de correction d'erreur pour équilibrer la taille et la lisibilité, offrant une flexibilité pour diverses exigences esthétiques et fonctionnelles.

Y a-t-il des frais de licence pour utiliser IronBarcode dans les applications commerciales ?

IronBarcode propose différentes options de licence, y compris une licence perpétuelle adaptée aux applications commerciales. Cela contraste avec ZXing.NET, qui est gratuit mais comporte des restrictions pour une utilisation commerciale.

Quels sont les scénarios de dépannage courants lors de l'utilisation des bibliothèques de codes-barres ?

Des problèmes courants peuvent inclure une reconnaissance incorrecte du code-barres en raison de la mauvaise qualité de l'image, des formats de codes-barres non pris en charge, ou des erreurs de configuration. Le traitement avancé des images d'IronBarcode peut aider à atténuer certains problèmes de reconnaissance.

Pourquoi quelqu'un choisirait-il IronBarcode plutôt que ZXing.NET pour la gestion des codes-barres ?

IronBarcode offre une API plus robuste, une meilleure gestion des erreurs, un support étendu des formats de codes-barres et des fonctionnalités pour générer des codes QR visuellement personnalisés, avec l'avantage ajouté de la licence commerciale et du support professionnel.

Comment installer IronBarcode dans un projet .NET ?

Vous pouvez installer IronBarcode dans un projet .NET en utilisant le gestionnaire de packages NuGet dans Visual Studio en recherchant 'IronBarcode' et en l'ajoutant à votre projet, garantissant une intégration et des mises à jour faciles.

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