IRONSOFTWAREHOME
PORÓWNAJ Z INNYMI KOMPONENTAMI

LEADTOOLS Barcode vs IronBarcode: Przewodnik porównania Enterprise

Curtis Chau
Curtis Chau
Updated: 21 kwietnia 2026

BarCode scanner may not always be appropriate for our applications. Być może masz już cyfrowy obraz BarCODE i chcesz wiedzieć, co on oznacza w języku angielskim. Ponadto skaner ten odczytuje wyłącznie barcody 1D, które zawierają ograniczoną ilość danych i mogą być używane wyłącznie w bibliotece Windows RT Class. BarCodes 2D (znane również jako kody QR) są obecnie powszechne i mogą zawierać znacznie więcej informacji.

Można stworzyć aplikację opartą na języku C#, która odczytuje kody kreskowe za pomocą prostych wywołań API i kilku kroków kodowania. Aplikacja obsługująca platformę .NET działa w systemach Windows, macOS lub Linux bez konieczności korzystania z narzędzi lub interfejsów API innych firm.

W tym artykułe porównamy dwie najpotężniejsze biblioteki aplikacji .NET Core służące do programowego odczytu kodów kreskowych. Te dwie biblioteki to biblioteka IronBarcode i ZXing.NET. Zobaczymy, co sprawia, że IronBarcode jest bardziej wydajny i niezawodny niż ZXing.NET.


Czym jest ZXing.NET

ZXing.NET to biblioteka, która dekoduje i generuje BARCODES (takie jak QR Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar). ZXing, co oznacza "zebra crossing", to oparta na Javie biblioteka typu open source, która obsługuje różne formaty kodów kreskowych 1D i 2D.

Jego podstawowe cechy są następujące:

  • Posiada możliwość przechowywania adresów URL, danych kontaktowych, wydarzeń kalendarzowych i nie tylko
  • Jest dostosowany do aplikacji Java SE
  • Umożliwia integrację skanera BarCode poprzez intencję
  • Jest to prosta aplikacja na Google Glass

Czym jest IronBarcode

IronBarcode to biblioteka C#, która pozwala programistom odczytywać i generować kody kreskowe. Jako wiodąca biblioteka kodów kreskowych, biblioteka IronBarcode obsługuje szeroką gamę kodów kreskowych 1- i 2-wymiarowych, w tym ozdobione (kolorowe i opatrzone logo) kody QR. Obsługuje .NET Standard i .NET Core w wersji 2 i wyższej, co pozwala na korzystanie z niego na różnych platformach, takich jak Azure, Linux, macOS, Windows i Web. IronBarcode to znana biblioteka klas lub komponent dla systemu .NET, który umożliwia programistom C#, VB.NET i F# pracę ze standardowymi językami programowania. Umożliwia to klientom przeglądanie tagów skanera i tworzenie nowych, znormalizowanych etykiet. Działa wyjątkowo dobrze z kodami kreskowymi 2D i innymi standardowymi kodami kreskowymi 3D.

IronBarcode obsługuje teraz kody kreskowe 2D. Zapewnia funkcje optymalizacji kolorystyki, stylizacji i pikselizacji tych kodów oraz możliwość dodawania do nich logo w celu wykorzystania w materiałach PRINT lub reklamowych. Biblioteka ta potrafi również odczytywać przekrzywione i zniekształcone kody kreskowe, których inne oprogramowanie do odczytu kodów kreskowych może nie być w stanie odczytać.

Instalacja IronBarcode i ZXing.NET

Instalacja ZXing.NET

Aby korzystać z biblioteki ZXing.NET, zainstaluj następujące dwa pakiety w swojej aplikacji ASP.NET Core za pomocą konsoli NuGet Package Manager Console:

1. ZXing.Net

PM > Install-Package ZXing.Net

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

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

Alternatywnie, zainstaluj ZXing.NET w swoim projekcie za pomocą menedżera pakietów NuGet. Aby to zrobić, przejdź do Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązań..., a następnie przejdź do zakładki "Przeglądaj" i wyszukaj "ZXing.NET".

A Comparison between IronBarcode and Zxing.NET, Figure 1: Aplikacja internetowa ASP.NET

Aplikacja internetowa ASP.NET

Instalacja IronBarcode

Zainstaluj IronBarcode za pomocą menedżera pakietów NuGet lub pobierając bibliotekę DLL bezpośrednio ze strony produktu. Przestrzeń nazw IronBarcode zawiera wszystkie klasy IronBarcode.

IronBarcode można zainstalować za pomocą menedżera pakietów NuGet dla Visual Studio: nazwa pakietu to "Barcode".

PM > Install-Package BarCode

Tworzenie kodów kreskowych 2D

Korzystanie z ZXing.NET

Najpierw utwórz nowy folder o nazwie "qrr" w folderze głównym pliku projektu.

Następnie przystąpimy do tworzenia plików QR i zapisania plików systemu obrazów w folderze "qrr".

W kontrolerze dodaj metode GenerateFile(), jak pokazano ponizej w kodzie zrodlowym.

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

[HttpPost]
public ActionResult GenerateFile(string qrText)
{
    Byte [] byteArray;
    var width = 250; // width of the QR Code
    var height = 250; // height of the QR Code
    var margin = 0;
    
    // BarcodeWriterPixelData acts as a QR code generator
    var qrCodeWriter = new ZXing.BarcodeWriterPixelData
    {
        Format = ZXing.BarcodeFormat.QR_CODE,
        Options = new QrCodeEncodingOptions
        {
            Height = height,
            Width = width,
            Margin = margin
        }
    };
    var pixelData = qrCodeWriter.Write(qrText);

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

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

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

Jedyna pozostała zmiana to zapisanie pliku z kodem QR w folderze "qrr". Wykonuje się to za pomocą dwóch poniższych wierszy kodu.

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

Nastepnie nalezy utworzyc widok GenerateFile i umiescic w nim ponizszy kod. Widok GenerateFile jest identyczny z widokiem Index.

@model Byte []
@using (Html.BeginForm(null, null, FormMethod.Post))
{
    <table>
        <tbody>
            <tr>
                <td>
                    <label>Enter text for creating QR Code</label>
                </td>
                <td>
                <input type="text" name="qrText" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <button>Submit</button>
                </td>
            </tr>
        </tbody>
    </table>
}
@{
    if (Model != null)
    {
        <h3>QR Code Successfully Generated</h3>
        <img src="@String.Format("data:image/png;base64,{0}", Convert.ToBase64String(Model))" />
    }
}

Wpisz dowolną wartość w polu tekstowym i kliknij przycisk "Prześlij". Kod QR zostanie wygenerowany i zapisany jako plik .PNG w folderze "qrr".

A Comparison between IronBarcode and ZXing.NET, Figure 2: Generator kodów QR

Generator kodów QR

A Comparison between IronBarcode and ZXing.NET, Figure 3: Wyświetlane pliki kodów QR

Wyświetlane pliki kodów QR

Obsługiwane formaty BarCode

IronBarcode obsługuje szeroki zakres powszechnie używanych formatów kodów kreskowych, w tym:

  • Kody QR z logo i kolorami (w tym kody ozdobione i opatrzone marką)
  • Kody kreskowe w wielu formatach, w tym Aztec, Data Matrix, CODE 93, CODE 128, RSS Expanded Databar, UPS MaxiCode oraz kody kreskowe USPS i IMB (OneCode)
  • Kod kreskowy liniowy RSS-14 i PDF-417
  • UPCA, UPCE, EAN-8, EAN-13, Codabar, ITF, MSI i Plessey to tradycyjne numeryczne formaty BARCODE.

Utwórz i zapisz BarCode

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

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

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

// Stamp barcode onto an existing PDF at a specific position
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);

Z drugiej strony, ZXing to oparta na Javie biblioteka open source do przetwarzania obrazów BarCode 1D/2D. Obsługiwane są formaty kodów kreskowych UPC-A, UPC-E, EAN-8, Code 93, Code 128, QR Code, Data Matrix, Aztec, PDF 417 i inne.

A Comparison between IronBarcode and Zxing.NET, Figure 4: Obsługiwane formaty BarCode

Obsługiwane formaty BarCode

Tworzenie plików kodów QR za pomocą IronBarcode

Aby tworzyc kody QR za pomoca IronBarcode, mozemy uzyc klasy QRCodeWriter zamiast klasy BarcodeWriter. Ta klasa wprowadza kilka nowatorskich i intrygujących funkcji do tworzenia kodów QR. Umożliwia to ustawienie poziomu korekcji błędów kodu QR, co pozwala znaleźć równowagę między rozmiarem a czytelnością kodu QR.

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

Korekta błędów pozwala nam określić, jak łatwe będzie odczytanie kodu QR w rzeczywistych sytuacjach. Wyższy poziom korekcji błędów skutkuje większymi kodami QR o większej liczbie pikseli i większej złożoności. Na poniższym obrazku widoczny jest plik z kodem QR.

A Comparison between IronBarcode and ZXing.NET, Figure 5: Obsługiwane formaty BarCode

Obraz kodu QR

Zaczynamy od okreslenia wartosci kodu kreskowego i formatu kodu kreskowego z wyliczenia IronBarCode.BarcodeWriterEncoding. Nastepnie mozemy zapisac jako obraz, System.Drawing.Image lub obiekt kodu Bitmap.

using IronBarCode;
using System.Diagnostics;

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

// This line opens the image in your default image viewer
Process.Start("MyBarCode.png");
A Comparison between IronBarcode and ZXing.NET, Figure 6: Przykład tworzenia obrazu BarCode w języku C#

Przykład tworzenia obrazu BarCode w języku C#

IronBarcode obsługuje również stylizację kodów QR, np. umieszczanie grafiki z logo i dopasowywanie jej do siatki dokładnie w środku obrazu. Może być również dostosowany kolorystycznie do konkretnej marki lub identyfikacji wizualnej.

Do testowania utworz logo w ponizszym przykladzie kodu i zobacz, jak latwe jest uzycie metody QRCodeWriter.CreateQRCodeWithLogo.

using IronBarCode;

// Adding a Logo
var MyQRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", "visual-studio-logo.png", 500);
MyQRWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkGreen);
A Comparison between IronBarcode and ZXing.NET, Figure 7: Utwórz kod QR z obrazem logo

Utwórz kod QR z obrazem logo

Na koniec zapisujemy wygenerowany kod QR jako plik PDF. Dla Twojej wygody ostatnia linijka kodu zapisuje kod QR jako plik HTML.

using IronBarCode;

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

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

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

Poniżej pokazujemy, jak utworzyć, sformatować i wyeksportować BARCODE za pomocą zaledwie jednej linii kodu.

IronBarcode zawiera plynne API podobne do System.Linq. Tworzymy BARCODE, ustawiamy jego marginesy i eksportujemy go do formatu bitmapowego w jednej linii, łącząc wywołania metod. Może to być bardzo przydatne i ułatwia czytanie kodu.

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();

W rezultacie zdjecie kodu kreskowego PDF417 pojawia sie tak, jak pokazano ponizej:

A Comparison between IronBarcode and ZXing.NET, Figure 8: Proste i płynne generowanie BarCodes PDF417 w języku C#

Proste i płynne generowanie BarCodes PDF417 w języku C#

Odczytywanie plików kodów QR

Odczytywanie kodów QR za pomocą IronBarcode

Odczytanie kodu kreskowego lub kodu QR jest dziecinnie proste, gdy używasz biblioteki IronBarcode w połączeniu z czytnikiem kodów kreskowych .NET. W naszym pierwszym przykładzie możemy zobaczyć, jak odczytać BARCODE za pomocą zaledwie jednej linii kodu.

A Comparison between IronBarcode and ZXing.NET, Figure 9: Obraz BarCode kreskowego Code128 do zeskanowania za pomocą języka C#

Obraz BarCode kreskowego Code128 do zeskanowania za pomocą języka C#

Możemy uzyskać wartość BARCODE, obraz, typ kodowania i dane binarne (jeśli są), a następnie wyświetlić je w konsoli.

using IronBarCode;
using System;

// Read a barcode or QR code from an image
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("GetStarted.png");
if (Result != null && Result.Text == "https://ironsoftware.com/csharp/barcode/")
{
    Console.WriteLine("GetStarted was a success.  Read Value: " + Result.Text);
}

Odczytywanie BarCodes w plikach PDF

Przyjrzymy się, jak odczytać zeskanowany dokument PDF i znaleźć wszystkie jednowymiarowe BARCODES za pomocą kilku linii kodu.

Jak widać, jest to bardzo podobne do odczytu pojedynczego BarCoda z pojedynczego dokumentu, z tą różnicą, że teraz wiemy, na której stronie został znaleziony.

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);
}

Otrzymasz dane wynikowe ze wszystkimi BARCODAMI w formacie bitmapowym w pliku PDF.

A Comparison between IronBarcode and ZXing.NET, Figure 10: Odczytywanie BarCodes zapisanych w plikach PDF

Odczytywanie BarCodes zapisanych w plikach PDF

Odczytywanie BarCodes z plików GIF i TIFF

using IronBarCode;
using System;

// Multi-frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
PagedBarcodeResult[] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.High, BarcodeReader.BarcodeImageCorrection.MediumCleanPixels);
foreach (var PageResult in MultiFrameResults)
{
    // Process each page result
}
A Comparison between IronBarcode and ZXing.NET, Figure 11: Odczytywanie BarCodes z obrazu TIFF zawierającego wiele klatek

Odczytywanie BarCodes z obrazu TIFF zawierającego wiele klatek

Poniższy przykład pokazuje, jak odczytywać kody QR i kody kreskowe PDF-417 ze zeskanowanego pliku PDF. Ustaliliśmy odpowiedni poziom korekcji obrotu BARCODE oraz korekcji obrazu BARCODE, aby delikatnie oczyścić dokument bez znaczącego obniżenia wydajności.

using IronBarCode;
using System;

// PDF documents can also be scanned, and multiple threads will be used automatically in the background for improved performance
var ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.All, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LightlyCleanPixels);

// Work with the results
foreach (var PageResult in ScanResults)
{
    string Value = PageResult.Value;
    //...
}
A Comparison between IronBarcode and ZXing.NET, Figure 12: Odczytywanie BarCodes ze zeskanowanego dokumentu PDF

Odczytywanie BarCodes ze zeskanowanego dokumentu PDF

Odczytywanie uszkodzonych kodów QR z obrazów bitmapowych

Poniższy przykład pokazuje, że ta biblioteka BarCode w języku C# potrafi odczytać nawet uszkodzoną miniaturę kodu kreskowego.

Korekta rozmiaru miniatur BARCODE-ów odbywa się automatycznie. IronBarcode w języku C# sprawia, że plik jest czytelny.

Metody odczytu automatycznie wykrywają obrazy BARCODE, które są zbyt małe, aby mogły być prawidłowymi BARCODE, i powiększają je. Usuwają one wszelkie zakłócenia cyfrowe związane z pracą z miniaturami, przywracając ich czytelność.

using IronBarCode;

// Small or 'Thumbnail' barcode images are automatically detected by IronBarcode and corrected wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
A Comparison between IronBarcode and ZXing.NET, Figure 13: Automatyczna korekcja rozmiaru miniatur BarCode

Automatyczna korekcja rozmiaru miniatur BarCode

Odczytywanie BarCodes z niedoskonałych obrazów

W rzeczywistych sytuacjach może zaistnieć potrzeba odczytania BARCODE-ów z niedoskonałych obrazów. Mogą to być zniekształcone obrazy lub zdjęcia z cyfrowym szumem. Byłoby to niemożliwe w przypadku większości bibliotek open source do generowania i odczytu BarCode'ów w środowisku .NET. Z kolei IronBarcode sprawia, że odczytywanie kodów kreskowych z niedoskonałych obrazów staje się dziecinnie proste.

Teraz przyjrzymy sie metodzie ReadASingleBarcode. Dzieki parametrowi RotationCorrection, IronBarcode probuje usuwac skosy i odczytywac kody kreskowe z niedoskonalych cyfrowych probek.

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);
A Comparison between IronBarcode and ZXing.NET, Figure 14: Odczytywanie BarCoda za pomocą aparatu w telefonie

Odczytywanie BarCoda za pomocą aparatu w telefonie

IronBarcode może również odczytywać wiele kodów kreskowych jednocześnie. Uzyskujemy lepsze wyniki z IronBarcode, gdy tworzymy listę dokumentów i używamy czytnika kodów kreskowych do odczytu wielu dokumentów. Metoda ReadBarcodesMultithreaded dla procesu skanowania kodow kreskowych wykorzystuje wiele watkow i potencjalnie wszystkie rdzenie procesora, co moze byc znaczaco szybsze niz odczytywanie kodow kreskowych pojedynczo.

using IronBarCode;

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

// Work with the results
foreach (var Result in BatchResults)
{
    string Value = Result.Value;
    //...
}

Odczytywanie i dekodowanie kodów QR za pomocą ZXing.NET

Aby odczytac pliki kodow QR, dodaj do swojego kontrolera metode akcji ViewFile, jak pokazano ponizej.

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);
}
A Comparison between IronBarcode and ZXing.NET, Figure 15: Odczytywanie i dekodowanie kodów QR

Odczytywanie i dekodowanie kodów QR

A Comparison between IronBarcode and ZXing.NET, Figure 16: Zdekodowany kod QR

Zdekodowany kod QR

Odkodowywanie BarCode w pliku bitmapowym

using ZXing;
using System.Drawing;

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

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

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

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

ZXing Decoder Online

ZXing Decoder Online to dostępny online skaner barcode'ów i kodów QR, który obsługuje dekodowanie. Prześlij obraz kodu QR w formacie PNG lub innym, a rozpocznie się jego dekodowanie. Podobnie można wygenerować kod QR dla dowolnych danych. W większości przypadków informacją tą będzie adres URL lub tekst, który chcesz zakodować w kodzie QR.

Przejdź do strony internetowej ZXing Decoder.

A Comparison between IronBarcode and ZXing.NET, Figure 17: Zdekodowany kod QR

Strona internetowa ZXing Decoder

A Comparison between IronBarcode and ZXing.NET, Figure 18: Zdekodowany kod QR

Wynik dekodowania ZXing

Ceny i licencje

Biblioteka ZXing.NET to bezpłatna biblioteka typu open source, która umożliwia tworzenie aplikacji do odczytu kodów kreskowych, na licencji Apache License 2.0, która zezwala na bezpłatne wykorzystanie komercyjne z odpowiednim podaniem źródła.

Licencja programisty na IronBarcode jest oferowana bezpłatnie. IronBarcode ma unikalny system cenowy: pakiet Lite zaczyna się od $999 bez żadnych dodatkowych kosztów. Produkty SaaS i OEM mogą być również ponownie dystrybuowane. Każda licencja obejmuje Licencję wieczystą, ważność w środowiskach deweloperskich, stagingowych i produkcyjnych, 30-dniową gwarancję zwrotu pieniędzy oraz roczną pomoc techniczną i aktualizacje oprogramowania (jednorazowy zakup). Odwiedź tę stronę, aby zapoznać się z pełnymi informacjami dotyczącymi cen i licencji IronBarcode.

Dlaczego warto wybrać IronBarcode?

IronBarcode zawiera łatwe w użyciu API dla programistów do odczytu i zapisu kodów kreskowych w środowisku .NET, co zapewnia optymalną dokładność i niski wskaźnik błędów w rzeczywistych zastosowaniach.

Klasa BarcodeWriter, na przyklad, zweryfikuje i skoryguje 'suma kontrolna' na kodach kreskowych UPCA i UPCE. Ponadto należy uzupełnić zerami liczby, które są zbyt krótkie, aby można je było wprowadzić w określonym formacie numerycznym. Jeśli dane użytkownika są niezgodne z określonym formatem danych, IronBarcode poinformuje programistę o bardziej odpowiednim formacie BarCode, z którego może skorzystać.

IronBarcode doskonale radzi sobie z odczytywaniem kodów kreskowych, gdy kod został zeskanowany lub odczytany z obrazu fotograficznego, innymi słowy, gdy obraz nie jest idealny pod względem graficznym i nie jest zrzutem ekranu wygenerowanym maszynowo.

Czym IronBarcode różni się od ZXing.NET?

IronBarcode został zbudowany w oparciu o rdzeń ZXing.NET (Zebra Crossing) i charakteryzuje się zwiększoną wydajnością przetwarzania. Oferuje łatwe w użyciu API i niski wskaźnik błędów w porównaniu z biblioteką podstawową ZXing.NET Core. Co więcej, biblioteka IronBarcode obsługuje również szerszy zakres formatów kodów kreskowych niż standardowa biblioteka ZXing.NET.

IronBarcode to ulepszona wersja ZXing.NET, zapewniająca użytkownikowi platformę do użytku komercyjnego oraz możliwość korzystania z tego samego pakietu na wielu platformach. Oferuje również pełne wsparcie techniczne, zawsze gotowe do pomocy w razie potrzeby.

IronBarcode oferuje funkcje automatycznego obracania, korekcji perspektywy i korekcji szumów cyfrowych oraz potrafi rozpoznać typ kodu kreskowego zakodowanego na obrazie.

Wnioski

Podsumowując, IronBarcode to wszechstronna biblioteka oprogramowania .NET i generator kodów QR w języku C#, służący do odczytu szerokiej gamy formatów kodów kreskowych, niezależnie od tego, czy są to zrzuty ekranu, zdjęcia, skany czy inne niedoskonałe obrazy z rzeczywistego świata.

IronBarcode to jedna z najskuteczniejszych bibliotek do tworzenia i identyfikacji kodów kreskowych. Jeśli chodzi o tworzenie i identyfikację BarCodes, jest to również jedna z najszybszych bibliotek. Biblioteka jest kompatybilna z różnymi systemami operacyjnymi. Jest łatwy w projektowaniu i obsługuje szeroki zakres formatów BarCode. Ponadto obsługiwane są różne symbole, formaty i znaki.

ZXing.NET BARCODE to potężna biblioteka, która generuje i rozpoznaje BARCODE-sy w różnych formatach obrazów. Możemy odczytywać i tworzyć obrazy w różnych formatach. ZXing.NET pozwala również na zmianę wyglądu BARCODE, modyfikując jego wysokość, szerokość, tekst BARCODE i tak dalej.

W porównaniu z ZXing.NET pakiety IronBarcode oferują niezawodne licencjonowanie i wsparcie techniczne. IronBarcode kosztuje $999. Chociaż ZXing jest bezpłatny i dostępny na licencji open source, firma IronBarcode zapewnia kompleksowe wsparcie komercyjne i profesjonalną obsługę techniczną. Dodatkowo, będąc bardziej elastycznym niż ZXing.NET, rozwiązanie IronBarcode posiada również więcej funkcjonalności. W związku z tym oczywiste jest, że IronBarcode ma znaczną przewagę nad ZXing.NET.

Porównując czas przetwarzania potrzebny do rozpoznawania i generowania kodów kreskowych, IronBarcode przewyższa ZXing.NET. IronBarcode posiada również kilka funkcji, które pozwalają nam odczytywać BarCodes z różnych formatów obrazów i dokumentów PDF. Pozwala nam to również na umieszczanie obrazów w kodzie BARCODE lub kodzie QR, co nie jest dostępne w żadnej innej bibliotece.

IronBarcode jest bezpłatny na wczesnych etapach rozwoju. Możesz uzyskać bezpłatną wersję próbną do użytku produkcyjnego lub komercyjnego. Zgodnie z wymaganiami programisty, IronBarcode oferuje trzy poziomy cenowe. Możesz wybrać rozwiązanie, które najlepiej spełnia Twoje wymagania. Teraz możesz otrzymać Suite pięciu produktów Iron Software w cenie dwóch produktów Iron Software. Więcej informacji można znaleźć na tej stronie internetowej.

Zwróć uwagę: ZXing.NET jest zastrzeżonym znakiem towarowym odpowiedniego właściciela. Ta strona nie jest powiązana z serwisem ZXing.NET, nie jest przez niego promowana ani sponsorowana. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta