Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Ein Barcode-Scanner ist nicht immer für unsere Anwendungen geeignet. Vielleicht haben Sie bereits ein digitales Bild des Strichcodes und möchten wissen, was er in englischer Sprache bedeutet. Außerdem liest dieser Scanner nur 1-D-Barcodes, die nur eine begrenzte Datenmenge enthalten und nur in der Windows RT-Klassenbibliothek verwendet werden können. 2-D-Barcodes (auch bekannt als QR-Codes) sind heute weit verbreitet und können viel mehr Informationen enthalten.
Mit einfachen API-Aufrufen und wenigen Programmierschritten kann eine C#-basierte Anwendung zum Lesen von Barcodes erstellt werden. Eine .NET-unterstützte Anwendung läuft unter Windows, macOS oder Linux, ohne auf ein Tool oder eine API eines Drittanbieters angewiesen zu sein.
In diesem Artikel werden die beiden leistungsfähigsten .NET Core App-Bibliotheken zum programmatischen Lesen von Barcodes verglichen. Diese beiden Bibliotheken sind IronBarcode und ZXing.NET. Wir werden sehen, was den IronBarcode leistungsfähiger und robuster als ZXing.NET macht.
BarcodeSchreiben SierPixelData
klasse zum Anpassen des BarcodesFormat
eigenschaftQrCodeEncodingOptions
klasse zur weiteren Anpassung von Größe, Gewicht und RandSchreiben Sie
methode des Objekts in Schritt 2ZXing.NET ist eine Bibliothek, die Barcodes dekodiert und generiert (wie QR-Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar). ZXing, was für "Zebrastreifen" steht, ist eine Java-basierte Open-Source-Bibliothek, die eine Vielzahl von 1D- und 2D-Barcodeformaten unterstützt.
Seine wesentlichen Merkmale sind die folgenden:
IronBarcode ist eine C#-Bibliothek, mit der Programmierer Strichcodes lesen und erzeugen können. Als eine führende Barcode-Bibliothek unterstützt IronBarcode eine Vielzahl von 1-dimensionalen und 2-dimensionalen Barcodes, einschließlich dekorierter (farbig und gebrandmarkt) QR-Codes. Es unterstützt die .NET-Standard- und Core-Versionen 2 und höher, so dass es plattformübergreifend auf Azure, Linux, macOS, Windows und Web eingesetzt werden kann. IronBarcode ist eine bekannte Klassenbibliothek oder Komponente für das .NET-System, die es C#-, VB.NET- und F#-Entwicklern ermöglicht, mit standardisierten Programmiersprachen zu arbeiten. Sie ermöglicht es den Kunden, Scanner-Tags zu durchsuchen und neue standardisierte Etiketten zu erstellen. Es funktioniert hervorragend mit 2D-Barcodes und anderen standardisierten 3D-Barcodes.
IronBarcode unterstützt jetzt auch 2D-Barcodes. Es bietet Funktionen zur Optimierung der Farbgebung, des Stylings und der Verpixelung dieser Codes sowie die Möglichkeit, ihnen Logos zur Verwendung in Druck- oder Werbematerialien hinzuzufügen. Diese Bibliothek kann auch schräge und deformierte Barcodes lesen, was andere Barcode-Software möglicherweise nicht kann.
Um die ZXing.NET-Bibliothek zu verwenden, installieren Sie die folgenden beiden Pakete in Ihrer ASP.NET Core-Anwendung mithilfe der NuGet Package Manager Console:
Install-Package ZXing.Net
Install-Package ZXing.Net.Bindings.CoreCompat.System.Drawing -Version 0.16.5-beta
Alternativ können Sie ZXing.NET auch mit dem NuGet Package Manager in Ihrem Projekt installieren. Gehen Sie dazu zu Tools > NuGet-Paketmanager > NuGet-Pakete für Lösungen verwalten..., wechseln Sie dann zur Registerkarte "Durchsuchen" und suchen Sie nach "ZXing.NET".
Installieren Sie IronBarcode mit dem NuGet Package Manager oder laden Sie die DLL direkt von der produkt-Website. Die IronBarcode namespace enthält alle IronBarcode-Klassen.
IronBarcode kann mit dem NuGet Package Manager für Visual Studio installiert werden: der Paketname ist "Barcode".
Install-Package BarCode
Erstellen Sie zunächst einen neuen Ordner namens "qrr" im Stammordner der Projektdatei.
Anschließend erstellen wir QR-Dateien und speichern die Bildsystemdateien im Ordner "qrr".
Fügen Sie innerhalb des Controllers die Funktion `GenerateFile()methode wie unten im Quellcode gezeigt.
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
Die einzige Änderung besteht darin, die QR-Code-Datei im Ordner "qrr" zu speichern. Dies wird mit den beiden folgenden Codezeilen durchgeführt.
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)
Sie müssen auch die Ansicht "GenerateFile" erstellen und den folgenden Code darin einfügen. Die Ansicht "GenerateFile" ist identisch mit der Ansicht "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
Geben Sie einen beliebigen Wert in das Textfeld ein und klicken Sie auf die Schaltfläche "Senden". Der QR-Code wird erzeugt und als PNG-Datei im Ordner "qrr" gespeichert.
IronBarcode unterstützt eine Vielzahl gängiger Barcodeformate, darunter:
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)
ZXing hingegen ist eine Java-basierte Open-Source-Bibliothek zur Verarbeitung von 1D/2D-Barcode-Bildern. UPC-A, UPC-E, EAN-8, Code 93, Code 128, QR Code, Data Matrix, Aztec, PDF 417 und andere Barcodeformate werden unterstützt.
Um QR-Codes mit IronBarcode zu erstellen, können wir die Klasse QRCodeWriter
anstelle der Klasse BarcodeWriter
verwenden. In diesem Kurs werden einige neue und faszinierende Funktionen zur Erstellung von QR-Codes vorgestellt. Es ermöglicht uns, die QR-Fehlerkorrekturstufe einzustellen, so dass Sie ein Gleichgewicht zwischen der Größe und der Lesbarkeit Ihres QR-Codes finden können.
// 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")
Mit der Fehlerkorrektur können wir angeben, wie leicht ein QR-Code in der Praxis zu lesen ist. Höhere Fehlerkorrekturstufen führen zu größeren QR-Codes mit mehr Pixeln und mehr Komplexität. In der folgenden Abbildung wird die QR-Code-Datei angezeigt.
Wir beginnen mit der Angabe des Barcodewertes und des Barcodeformats aus der Aufzählung IronBarcode.BarcodeWriterEncoding
. Wir können dann ein Bild, ein System.Drawing.Image oder ein Bitmap-Code-Objekt speichern. Das ist der gesamte Quellcode, den Sie benötigen!
// 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")
IronBarcode unterstützt auch das Styling von QR-Codes, z. B. die Platzierung einer Logo-Grafik, die an einem Raster genau in der Mitte des Bildes ausgerichtet wird. Es kann auch farblich an eine bestimmte Marke oder grafische Identität angepasst werden.
Erstellen Sie zum Testen ein Logo im folgenden Codebeispiel und sehen Sie, wie einfach es ist, die Methode QRCodeWriter.CreateQRCodeWithLogo
zu verwenden.
// 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)
Schließlich speichern wir den generierten QR-Code als PDF-Datei. Der Einfachheit halber speichert die letzte Codezeile den QR-Code als HTML-Datei.
// 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")
Im Folgenden sehen Sie, wie Sie einen Strichcode mit nur einer Zeile Code erstellen, gestalten und exportieren können.
IronBarcode enthält eine fließende API, die ähnlich wie System.Linq
ist. Wir erstellen einen Strichcode, legen seine Ränder fest und exportieren ihn als Bitmap in einer einzigen Zeile, indem wir Methodenaufrufe verketten. Dies kann sehr nützlich sein und macht den Code leichter lesbar.
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()
Als Ergebnis erscheint ein "System.Drawing.Image" eines PDF417-Barcodes wie unten dargestellt:
Das Lesen eines Barcodes oder QR-Codes ist ein Kinderspiel, wenn Sie die IronBarcode-Klassenbibliothek in Verbindung mit dem .NET-Barcode-Leser verwenden. In unserem ersten Beispiel sehen wir, wie ein Barcode mit nur einer Zeile Code gelesen werden kann.
Wir können den Barcodewert, das Bild, den Codierungstyp und die Binärdaten abrufen (wenn überhaupt) und geben es dann auf der Konsole aus.
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
Wir werden uns das Lesen eines gescannten PDF-Dokuments und das Auffinden aller eindimensionalen Barcodes in ein paar Zeilen Code ansehen.
Wie Sie sehen können, ist es sehr ähnlich wie das Lesen eines einzelnen Strichcodes von einem einzelnen Dokument, außer dass wir jetzt wissen, auf welcher Seitennummer der Strichcode entdeckt wurde.
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
Sie erhalten eine Ergebnisdatei mit allen Bitmap-Barcodes in der PDF-Datei.
// 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
Das folgende Beispiel zeigt, wie QR-Codes und PDF-417-Barcodes aus einer gescannten PDF-Datei gelesen werden können. Wir haben ein angemessenes Niveau der Barcode-Drehungskorrektur und der Barcode-Bildkorrektur eingestellt, um das Dokument leicht zu bereinigen, ohne dass es zu einem erheblichen Leistungsverlust kommt, weil wir unsere Anforderungen übererfüllen.
// 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
Das folgende Beispiel zeigt, dass diese C# Barcode-Bibliothek sogar ein beschädigtes Barcode-Miniaturbild lesen kann.
Die Größe der Barcode-Miniaturansicht wird automatisch korrigiert. IronBarcode in C# macht eine Datei lesbar.
Die Lesemethoden erkennen automatisch Barcode-Bilder, die zu klein sind, um ein echter Barcode zu sein, und skalieren sie hoch. Sie beseitigen alle digitalen Störungen, die bei der Arbeit mit Miniaturansichten auftreten, und machen sie wieder lesbar.
// 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)
In der Praxis kann es vorkommen, dass wir Strichcodes von unvollkommenen Bildern lesen wollen. Es könnte sich um schiefe Bilder oder Fotos mit digitalem Rauschen handeln. Dies wäre mit den meisten Open-Source-Bibliotheken zur Erzeugung und zum Lesen von .NET-Barcodes unmöglich. IronBarcode hingegen macht das Lesen von Strichcodes aus unvollkommenen Bildern zu einem Kinderspiel.
Wir werden uns nun die Methode "ReadASingleBarcode" ansehen. Mit dem Parameter RotationCorrection
versucht IronBarcode, Barcodes aus unvollkommenen digitalen Mustern zu de-skewen und zu lesen.
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)
IronBarcode kann auch mehrere Barcodes gleichzeitig lesen. Wir erhalten bessere Ergebnisse von IronBarcode, wenn wir eine Liste von Dokumenten erstellen und den Barcodeleser verwenden, um zahlreiche Dokumente zu lesen. Die Methode ReadBarcodesMultithreaded
für den Barcode-Scanprozess verwendet mehrere Threads und möglicherweise alle Kerne Ihrer CPU und kann exponentiell schneller sein als das Lesen von Barcodes nacheinander.
// 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
Um die QR-Code-Dateien zu lesen, fügen Sie eine "ViewFile"-Aktionsmethode zu Ihrem Controller hinzu, wie unten gezeigt.
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
// 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
ZXing Decoder Online ist ein online verfügbarer Barcode- und QR-Code-Scanner, der die Dekodierung unterstützt. Laden Sie ein PNG- oder ein anderes Format des QR-Code-Bildes hoch, und die Dekodierung wird beginnen. Auf ähnliche Weise können Sie einen QR-Code für beliebige Daten erzeugen. Meistens handelt es sich bei diesen Informationen um eine URL oder einen Text, den Sie in einem QR-Code kodieren möchten.
Rufen Sie die ZXing Decoder-Website auf.
Die ZXing.NET-Bibliothek ist eine kostenlose Open-Source-Bibliothek, mit der Sie Barcode-Leseanwendungen erstellen können. Sie unterliegt jedoch einer Apache-Lizenz, die eine freie Nutzung für kommerzielle Zwecke nicht erlaubt.
Eine Entwicklerlizenz für IronBarcode wird kostenlos angeboten. IronBarcode hat ein einzigartiges Preissystem: das Lite-Paket beginnt bei $749 ohne zusätzliche Kosten. SaaS- und OEM-Artikel können ebenfalls erneut vertrieben werden. Jede Lizenz umfasst eine unbefristete Lizenz, Gültigkeit für Entwicklung/Training/Produktion, eine 30-tägige Geld-zurück-Garantie sowie ein Jahr Software-Support und Upgrades (einmaliger Kauf). Besuchen Sie diese seite um die vollständigen Preis- und Lizenzinformationen von IronBarcode einzusehen.
IronBarcode enthält eine benutzerfreundliche API für Entwickler zum Lesen und Schreiben von Barcodes in .NET, die die Genauigkeit und eine niedrige Fehlerquote in realen Anwendungsfällen optimiert.
Die Klasse BarcodeWriter
beispielsweise validiert und korrigiert Prüfsummen von UPCA- und UPCE-Barcodes. Außerdem werden Zahlen, die zu kurz sind, um in ein bestimmtes numerisches Format eingegeben zu werden, mit einem "Zero-Pad" versehen. Wenn Ihre Daten nicht mit dem angegebenen Datenformat kompatibel sind, informiert IronBarcode den Entwickler über ein geeigneteres Barcodeformat, das er verwenden kann.
IronBarcode eignet sich hervorragend zum Lesen von Barcodes, wenn der Barcode gescannt oder von einem fotografischen Bild gelesen wurde, d. h. wenn das Bild grafisch nicht perfekt ist und es sich nicht um einen maschinell erstellten Screenshot handelt.
IronBarcode basiert auf dem ZXing.NET (Zebrastreifen) kern, mit verbesserter Verarbeitungsfähigkeit. Sie verfügt über eine einfach zu bedienende API und eine niedrige Fehlerrate im Vergleich zur ZXing.NET Core-Bibliothek. Darüber hinaus unterstützt IronBarcode for .NET eine breitere Palette von Barcode-Formaten als die übliche ZXing.NET-Bibliothek.
IronBarcode for .NET ist eine verbesserte Version von ZXing.NET, die dem Benutzer eine Plattform für die kommerzielle Nutzung und die Möglichkeit bietet, das gleiche Paket auf mehreren Plattformen zu verwenden. Außerdem steht Ihnen ein umfassender technischer Support zur Verfügung, der Sie bei Bedarf jederzeit unterstützt.
IronBarcode umfasst automatische Drehung, Perspektivkorrektur und digitale Rauschkorrektur und kann den Typ des in einem Bild kodierten Strichcodes erkennen.
Zusammenfassend lässt sich sagen, dass IronBarcode eine vielseitige .NET-Softwarebibliothek und ein C#-QR-Code-Generator zum Lesen einer Vielzahl von Barcodeformaten ist, unabhängig davon, ob es sich um Screenshots, Fotos, Scans oder andere unvollkommene Bilder aus der Realität handelt.
IronBarcode ist eine der effektivsten Bibliotheken zur Erstellung und Identifizierung von Barcodes. Was die Erstellung und Identifizierung von Barcodes angeht, gehört sie ebenfalls zu den schnellsten Bibliotheken. Verschiedene Betriebssysteme sind mit der Bibliothek kompatibel. Es ist einfach zu entwerfen und unterstützt eine breite Palette von Barcode-Formaten. Außerdem werden verschiedene Symbole, Formate und Zeichen unterstützt.
ZXing.NET Barcode ist eine leistungsstarke Bibliothek, die Barcodes in verschiedenen Bildformaten erzeugt und erkennt. Wir können Bilder in einer Vielzahl von Formaten lesen und erstellen. Mit ZXing.NET können Sie auch das Erscheinungsbild eines Barcodes ändern, indem Sie seine Höhe, Breite, den Barcodetext und so weiter verändern.
Im Vergleich zu ZXing.NET bieten die IronBarcode-Pakete eine zuverlässige Lizenzierung und Unterstützung. IronBarcode kostet $749. Obwohl ZXing kostenlos ist, bietet es keine Möglichkeit zur kommerziellen Nutzung und es fehlt auch ein allgegenwärtiger Support. IronBarcode for .NET ist nicht nur flexibler als ZXing.NET, sondern bietet auch mehr Funktionalität. Daher ist IronBarcode gegenüber ZXing.NET eindeutig im Vorteil.
Beim Vergleich der Verarbeitungszeiten für das Erkennen und Generieren von Barcodes übertrifft IronBarcode ZXing.NET. IronBarcode hat auch mehrere Eigenschaften, die es uns ermöglichen, Barcodes aus verschiedenen Bildformaten und PDF-Dokumenten zu lesen. Außerdem können wir damit Bilder in den Barcode oder QR-Code einfügen, was in keiner anderen Bibliothek möglich ist.
IronBarcode ist in der frühen Entwicklungsphase kostenlos. Sie können eine kostenloser Test für die Produktion oder die gewerbliche Nutzung. Je nach den Anforderungen des Entwicklers bietet IronBarcode drei Preisstufen an. Sie können die Lösung wählen, die Ihren Anforderungen am besten gerecht wird. Sie können jetzt eine Suite von fünf Iron Software Produkten zum Preis von zwei Iron Software Produkten erhalten. Besuchen Sie diese website für weitere Informationen.
9 .NET API-Produkte für Ihre Bürodokumente