COMPARAISON AVEC D'AUTRES COMPOSANTS

Comparaison entre IronBarcode for .NET et ZXing.NET

Publié décembre 12, 2022
Partager:

Un lecteur de codes-barres n'est pas toujours adapté à nos applications. Vous disposez peut-être déjà d'une image numérique du code-barres et souhaitez savoir ce qu'il représente en texte anglais. En outre, ce scanner ne lit que les codes-barres 1-D, qui contiennent une quantité limitée de données et ne peuvent être utilisés que dans la bibliothèque Windows RT Class. codes-barres 2-D (également connus sous le nom de codes QR) sont désormais courantes et peuvent contenir beaucoup plus d'informations.

Une application basée sur C# peut être créée pour lire les codes-barres en utilisant de simples appels API et quelques étapes de codage. Une application prise en charge par .NET s'exécute sur Windows, macOS ou Linux sans dépendre d'un outil ou d'une API tiers.

Cet article va comparer 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 l'IronBarcode plus puissant et plus robuste que ZXing.NET.


Qu'est-ce que ZXing.NET ?

ZXing.NET est une bibliothèque qui décode et génère des codes-barres (comme QR Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar). ZXing, qui signifie "zebra crossing", est une bibliothèque Java à code source ouvert qui prend en charge une variété de formats de codes-barres 1D et 2D.

Ses caractéristiques essentielles sont les suivantes :

  • Il permet de stocker des URL, des coordonnées, des événements du calendrier, etc
  • Il est adapté aux applications Java SE
  • Il permet l'intégration de scanners de codes-barres par le biais de l'intention
  • Il s'agit d'une application Google Glass simple

Qu'est-ce qu'IronBarcode ?

IronBarcode est une bibliothèque C# qui permet aux programmeurs de lire et de générer des codes-barres. En tant que bibliothèque de codes-barres de premier plan, IronBarcode prend en charge une grande variété de codes-barres unidimensionnels et bidimensionnels, y compris décorés (coloré et marqué) Codes QR. Il prend en charge les versions 2 et supérieures de .NET Standard et Core, ce qui permet de l'utiliser de manière multiplateforme sur Azure, Linux, macOS, Windows et Web. IronBarcode est une bibliothèque de classes ou un composant bien connu du système .NET qui permet aux développeurs C#, VB.NET et F# de travailler avec des langages de programmation standardisés. Il permettra aux clients de parcourir les étiquettes des scanners et de créer de nouvelles étiquettes normalisées. Il fonctionne exceptionnellement bien avec les codes-barres 2D et d'autres codes-barres 3D normalisés.

IronBarcode prend désormais en charge les codes-barres 2D. Il permet d'optimiser la coloration, le style et la pixellisation de ces codes et d'y ajouter des logos pour les utiliser dans des documents imprimés ou publicitaires. Cette bibliothèque peut également lire les codes-barres obliques et déformés, ce que d'autres logiciels de codes-barres ne sont pas en mesure de faire.

Installation d'IronBarcode et de ZXing.NET

Installation de ZXing.NET

Pour utiliser la bibliothèque ZXing.NET, installez les deux packages suivants dans votre application ASP.NET Core à l'aide de la console NuGet Package Manager :

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

Vous pouvez également installer ZXing.NET dans votre projet à l'aide du gestionnaire de paquets NuGet. Pour ce faire, allez dans Outils > NuGet Package Manager > Gestion des paquets NuGet pour les solutions..., puis passez à l'onglet "Parcourir" et recherchez "ZXing.NET".

Comparaison entre IronBarcode for .NET et Zxing.NET, Figure 1 : Application Web ASP.NET

Application Web ASP.NET

Installation d'IronBarcode

Installez IronBarcode à l'aide du gestionnaire de paquets NuGet ou en téléchargeant la DLL directement à partir de la page site web du produit. Les IronBarcode contient toutes les classes IronBarcode.

IronBarcode peut être installé à l'aide du gestionnaire de paquets NuGet pour Visual Studio : le nom du paquet est "Barcode".

Install-Package BarCode

Création d'un code-barres 2D

Utilisation de ZXing.NET

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

Nous allons ensuite créer des fichiers QR et stocker les fichiers du système d'images dans le dossier "qrr".

A l'intérieur du contrôleur, ajoutez la fonction 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;
    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.Scan, 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;
    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.Scan, 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
	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.Scan, 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
VB   C#

Il ne reste plus qu'à enregistrer le fichier du code QR dans le dossier "qrr". Cette opération est réalisée à 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)
VB   C#

Vous devez également 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>
// text box to enter text...
                    <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 tag to display generated QR code...
        <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>
// text box to enter text...
                    <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 tag to display generated QR code...
        <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
VB   C#

Saisissez une valeur quelconque dans la zone de texte et cliquez sur le bouton "Soumettre". Le code QR sera généré et enregistré sous forme de fichier .PNG dans le dossier "qrr".

A Comparison between IronBarcode and ZXing.NET, Figure 2: Générateur de code QR

Générateur de code QR

A Comparison between IronBarcode and ZXing.NET, Figure 3: Fichiers de code QR affichés

Fichiers de code QR affichés

Formats de codes-barres pris en charge

IronBarcode prend en charge un large éventail de formats de codes-barres couramment utilisés, notamment :

  • Codes QR avec logos et couleurs(y compris les codes décorés et les codes de marque)
  • Codes-barres multiformats, 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

var MyBarCode = IronBarcode.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");
Image  MyBarCodeImage = MyBarCode.Image;
Bitmap MyBarCodeBitmap = MyBarCode.ToBitmap();
string DataURL = MyBarCode.ToDataUrl();
string ImgTagForHTML = MyBarCode.ToHtmlTag();
byte [] PngBytes = MyBarCode.ToPngBinaryData();
     // Binary barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
using (System.IO.Stream PdfStream = MyBarCode.ToPdfStream()){
    // Stream barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
}
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
var MyBarCode = IronBarcode.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");
Image  MyBarCodeImage = MyBarCode.Image;
Bitmap MyBarCodeBitmap = MyBarCode.ToBitmap();
string DataURL = MyBarCode.ToDataUrl();
string ImgTagForHTML = MyBarCode.ToHtmlTag();
byte [] PngBytes = MyBarCode.ToPngBinaryData();
     // Binary barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
using (System.IO.Stream PdfStream = MyBarCode.ToPdfStream()){
    // Stream barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
}
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
Dim MyBarCode = IronBarcode.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")
Dim MyBarCodeImage As Image = MyBarCode.Image
Dim MyBarCodeBitmap As Bitmap = MyBarCode.ToBitmap()
Dim DataURL As String = MyBarCode.ToDataUrl()
Dim ImgTagForHTML As String = MyBarCode.ToHtmlTag()
Dim PngBytes() As Byte = MyBarCode.ToPngBinaryData()
	 ' Binary barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
Using PdfStream As System.IO.Stream = MyBarCode.ToPdfStream()
	' Stream barcode image output also works for GIF, JPEG, PDF, PNG, BMP and TIFF
End Using
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50)
VB   C#

D'autre part, ZXing est une bibliothèque de traitement d'images de codes-barres 1D/2D à source ouverte basée sur Java. Les formats 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 pris en charge.

Comparaison entre IronBarcode for .NET et Zxing.NET, Figure 4 : Formats de codes-barres pris en charge

Formats de codes-barres pris en charge

Créer des fichiers de code QR à l'aide d'IronBarcode

Pour créer des codes QR avec IronBarcode, nous pouvons utiliser la classe QRCodeWriter plutôt que la classe BarcodeWriter. Ce cours présente des fonctionnalités nouvelles et intrigantes pour créer des codes QR. Il nous permet de définir le niveau de correction des erreurs QR, ce qui vous permet de trouver un équilibre entre la taille et la lisibilité de votre code QR.

// Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
// Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png");
' Generate a simple QR Code image and save as PNG
QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("MyQR.png")
VB   C#

La correction d'erreur nous permet de spécifier la facilité de lecture d'un code QR dans des situations réelles. Des niveaux plus élevés de correction d'erreurs se traduisent par des codes QR plus grands, avec davantage de pixels et de complexité. Dans l'image ci-dessous, le fichier du code QR s'affiche.

Comparaison entre IronBarcode et ZXing.NET, Figure 5 : Formats de codes-barres pris en charge

Image du code QR

Nous commençons par spécifier la valeur du code-barres et le format du code-barres à partir de l'enum IronBarcode.BarcodeWriterEncoding. Nous pouvons alors enregistrer une image, une System.Drawing.Image, ou un objet de code Bitmap. C'est tout le code source dont vous avez besoin!

// Generate a simple BarCode image and save as PNG using following namespaces
using IronBarCode;
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
System.Diagnostics.Process.Start("MyBarCode.png");
// Generate a simple BarCode image and save as PNG using following namespaces
using IronBarCode;
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
System.Diagnostics.Process.Start("MyBarCode.png");
' Generate a simple BarCode image and save as PNG using following namespaces
Imports IronBarCode
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
System.Diagnostics.Process.Start("MyBarCode.png")
VB   C#
A Comparison between IronBarcode and ZXing.NET, Figure 6: Créer une image de code-barres en C# Exemple

Créer une image de code-barres en C# Exemple

IronBarcode permet également de styliser les codes QR, par exemple en plaçant un logo et en l'accrochant à une grille au centre exact de l'image. Il peut également être coloré pour correspondre à une marque ou à une identité graphique spécifique.

Pour tester, créez un logo dans l'exemple de code suivant et voyez comme il est simple d'utiliser la méthode QRCodeWriter.CreateQRCodeWithLogo.

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
' Adding a Logo
Dim MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500)
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen)
VB   C#
A Comparison between IronBarcode and ZXing.NET, Figure 7: Créer un code QR avec une image de logo

Créer un code QR avec une image de logo

Enfin, nous enregistrons le code QR généré sous forme de fichier PDF. Pour plus de commodité, la dernière ligne de code permet d'enregistrer le code QR sous forme de fichier HTML.

// 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");
// 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");
' Adding a Logo
Dim 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")
VB   C#

Ci-dessous, nous verrons 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éthodes. Cela peut s'avérer très utile et facilite la lecture du code.

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()
VB   C#

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

A Comparison between IronBarcode and ZXing.NET, Figure 8: Génération simple et fluide de codes-barres PDF417 en C#

Génération simple et fluide de codes-barres PDF417 en C#

Lecture des fichiers de codes QR

Lire les codes QR avec IronBarcode

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

A Comparison between IronBarcode and ZXing.NET, Figure 9: Image de code-barres Code128 à scanner avec C#

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 l'afficher sur 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
VB   C#

Lecture des codes-barres dans les PDF

Nous allons voir comment lire un document PDF scanné 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 nous savons maintenant sur quel numéro de 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
VB   C#

Vous obtiendrez un résultat avec tous les codes-barres bitmap dans le PDF.

A Comparison between IronBarcode and ZXing.NET, Figure 10: Lecture des codes-barres stockés à l'intérieur PDF Résultats

Lecture des codes-barres stockés à l'intérieur PDF Résultats

Lecture de codes-barres à partir de GIF et de TIFF

// 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
VB   C#
A Comparison between IronBarcode and ZXing.NET, Figure 11: Lecture de codes-barres à partir d'une image TIFF multi-images

Lecture de codes-barres à partir d'une image TIFF multi-images

L'exemple suivant montre comment lire les codes QR et les codes-barres PDF-417 à partir d'un PDF scanné. 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 sans encourir une pénalité importante en termes de performances en surestimant nos besoins.

// 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;
  ///...
}
// 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;
  ///...
}
' PDF documents 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
VB   C#
A Comparison between IronBarcode and ZXing.NET, Figure 12: Lecture de codes-barres à partir d'un document PDF numérisé

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 du code-barres se fait automatiquement. IronBarcode en C# rend un fichier lisible.

Les méthodes de lecture détectent automatiquement les images de codes-barres qui sont trop petites pour être des codes-barres légitimes et les agrandissent. Ils nettoient tout le bruit numérique associé au travail avec les vignettes, les rendant à nouveau lisibles.

// 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);
// 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);
' Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
Dim SmallResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128)
VB   C#
Une comparaison entre IronBarcode for .NET et ZXing.NET, Figure 13 : Correction automatique de la taille des vignettes de codes-barres

Correction automatique de la taille des vignettes de codes-barres

Lecture de codes-barres à partir d'images imparfaites

Dans le monde réel, nous pourrions vouloir lire des codes-barres à partir d'images imparfaites. Il peut s'agir d'images biaisées ou de photographies avec du bruit numérique. Cela serait impossible avec la plupart des bibliothèques de génération et de lecture de codes-barres .NET à source ouverte. IronBarcode, quant à lui, facilite la lecture des codes-barres à partir d'images imparfaites.

Nous allons maintenant examiner la méthode ReadASingleBarcode. Avec son paramètre RotationCorrection, IronBarcode tente de désaxer et de lire les 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)
VB   C#
Comparaison entre IronBarcode et ZXing.NET, Figure 14 : Lecture d'un code-barres à partir de l'appareil photo d'un téléphone

Lecture d'un code-barres à partir de l'appareil photo d'un téléphone

IronBarcode peut également lire plusieurs codes-barres en même temps. Nous obtenons de meilleurs résultats avec IronBarcode lorsque nous créons une liste de documents et que nous utilisons le lecteur de codes-barres pour lire de nombreux documents. La méthode ReadBarcodesMultithreaded pour le processus de lecture des codes-barres utilise plusieurs threads et potentiellement tous les cœurs de votre CPU 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
VB   C#

Lire et décoder les codes QR avec ZXing.NET

Pour lire les fichiers de code QR, 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
VB   C#
A Comparison between IronBarcode and ZXing.NET, Figure 15: Lire et décoder le code QR

Lire et décoder le code QR

A Comparison between IronBarcode and ZXing.NET, Figure 16: Code QR décodé

Code QR décodé

Décodage d'un code-barres à l'intérieur d'un bitmap

// create a barcode reader instance
BarcodeReader reader = new BarcodeReader();
// load a bitmap
var barcodeBitmap = (Bitmap)Image.LoadFrom("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;
}
// create a barcode reader instance
BarcodeReader reader = new BarcodeReader();
// load a bitmap
var barcodeBitmap = (Bitmap)Image.LoadFrom("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;
}
' create a barcode reader instance
Dim reader As New BarcodeReader()
' load a bitmap
Dim barcodeBitmap = CType(Image.LoadFrom("C:\sample-barcode-image.png"), Bitmap)
' detect and decode the barcode inside the bitmap
Dim 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
VB   C#

Décodeur ZXing en ligne

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

Naviguez jusqu'au site web du ZXing Decoder.

Comparaison entre IronBarcode for .NET et ZXing.NET, Figure 17 : Code QR décodé

Site web du décodeur ZXing

Comparaison entre IronBarcode for .NET et ZXing.NET, Figure 18 : Code QR décodé

Résultat du décodage ZXing

Prix et licences

La bibliothèque ZXing.NET est une bibliothèque gratuite à source ouverte qui vous permet de créer des applications de lecture de codes-barres, mais elle repose sur une licence Apache qui ne permet pas de l'utiliser librement à des fins commerciales.

Une licence de développeur pour IronBarcode est offerte gratuitement. IronBarcode a un système de tarification unique : l'offre Lite commence à $749 sans frais supplémentaires. Les produits SaaS et OEM peuvent également être redistribués. Chaque licence comprend une licence perpétuelle, une validité de développement/staging/production, une garantie de remboursement de 30 jours et un an d'assistance et de mises à jour du logiciel (achat unique). Visiter ce site page pour consulter les tarifs complets et les informations sur les licences d'IronBarcode.

Pourquoi choisir IronBarcode ?

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

La classe BarcodeWriter, par exemple, validera et corrigera les 'checksums' des codes-barres UPCA et UPCE. Il met également à zéro les nombres 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 pourra utiliser.

IronBarcode excelle dans la lecture des codes-barres lorsque le code-barres a été scanné ou lu à partir d'une image photographique - en d'autres termes, lorsque l'image n'est pas parfaite graphiquement et n'est pas une capture d'écran générée par une machine.

En quoi IronBarcode est-il différent de ZXing.NET ?

IronBarcode est construit à partir du logiciel ZXing.NET (Passage du zèbre) avec une capacité de traitement améliorée. Elle est dotée d'une API facile à utiliser et d'un faible taux d'erreur par rapport à la bibliothèque ZXing.NET core. Non seulement cela, mais IronBarcode prend également en charge un plus grand nombre de formats de codes-barres que la bibliothèque ZXing.NET habituelle.

IronBarcode est une version améliorée de ZXing.NET, qui offre à l'utilisateur une plate-forme à usage commercial et la possibilité d'utiliser le même progiciel sur plusieurs plates-formes. Il dispose également d'une assistance technique complète, toujours prête à vous aider en cas de besoin.

IronBarcode comprend la rotation automatique, la correction de la perspective et la correction du 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 C# permettant de lire un large éventail 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 également l'une des bibliothèques les plus rapides. Différents systèmes d'exploitation sont compatibles avec la bibliothèque. Il est facile à concevoir et prend en charge un large éventail de formats de codes-barres. En outre, divers symboles, formats et caractères sont pris en charge.

ZXing.NET barcode 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 différents formats. ZXing.NET vous permet également de modifier l'apparence d'un code-barres, en changeant sa hauteur, sa largeur, le texte du code-barres, etc.

Par rapport à ZXing.NET, les packages IronBarcode offrent une licence et un support fiables. IronBarcode coûte $749. Bien que ZXing soit gratuit, il n'offre aucune possibilité d'utilisation commerciale et ne dispose pas non plus d'une assistance permanente. En plus d'être plus flexible que ZXing.NET, la solution IronBarcode possède également plus de fonctionnalités. Il est donc évident qu'IronBarcode a un avantage certain sur ZXing.NET.

Si l'on compare les temps de traitement pour la reconnaissance et la génération de 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'images et de documents PDF. Elle nous 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 acquérir un essai gratuit pour la production ou l'utilisation commerciale. IronBarcode propose trois niveaux de prix en fonction des besoins du développeur. Vous pouvez choisir la solution qui répond le mieux à vos besoins. Vous pouvez désormais obtenir une suite de cinq produits Iron Software pour le prix de deux produits Iron Software. Visiter ce site site web pour plus d'informations.

< PRÉCÉDENT
Comparaison entre ZXing Decoder et IronBarcode
SUIVANT >
Une comparaison entre IronBarcode et Aspose.Barcode