Porównanie dekodera ZXing i IronBarcode
BarCODE zapewniają przejrzysty i czytelny dla maszyn sposób prezentacji danych. Początkowo BarCodes składały się z równoległych linii o różnej szerokości i odstępach, służących jako reprezentacja danych. Te tradycyjne liniowe lub jednowymiarowe (1D) BARCODE-y mogą być skanowane przez specjalistyczne urządzenia optyczne zwane czytnikami BARCODE-ów. Jednak ewolucja kodów kreskowych doprowadziła do wynalezienia kodów kreskowych dwuwymiarowych (2D), znanych również jako kody matrycowe. W przeciwieństwie do tradycyjnych BARCODE-ów, BARCODE-y 2D wykorzystują wzory, takie jak prostokąty, kropki i sześciokąty zamiast kresek. Do odczytu tych BARCODE'ów 2D dostępne są specjalne skanery optyczne lub alternatywne metody polegające na użyciu aparatu cyfrowego podłączonego do komputera z oprogramowaniem do dekodowania. Ponadto urządzenia mobilne, takie jak smartfony, mogą wykorzystywać wbudowane aparaty fotograficzne i dedykowane aplikacje do pełnienia funkcji skanera BARCODE 2D.
Skaner BarCode ZXing
Zebra Crossing, często nazywany ZXing, to otwarty, wieloformatowy zestaw narzędzi do przetwarzania obrazów kodów kreskowych 1D/2D, który został opracowany w języku Java i posiada porty dla innych języków. Podstawowa biblioteka dekodująca obrazy, kod kliencki specyficzny dla Javy oraz klient BarCode Scanner dla systemu Android to tylko niektóre z modułów tworzących ZXing. Na tej platformie opiera się wiele innych niezależnych projektów open source.
1. Funkcje
- Może śledzić adresy URL, dane kontaktowe, wydarzenia kalendarzowe i nie tylko.
- Została stworzona z myślą o aplikacjach Java SE.
- Dzięki tej funkcji możliwa jest integracja skanera BARCODE.
- Jest to prosta aplikacja na Google Glass.
2. Korzystanie z ZXing w środowisku .NET
Otwórz program Visual Studio, wybierz "nowy projekt" z menu Plik, a następnie "aplikacja konsolowa". W tym artykułe wybieramy aplikację konsolową C#.

Wprowadź nazwę projektu i ścieżkę do pliku w odpowiednim polu tekstowym. Następnie kliknij przycisk Utwórz, aby wybrać wymagany .NET Framework.
Jeśli wybrałeś aplikację konsolową, projekt utworzy teraz swoją strukturę i otworzy plik program.cs, umożliwiając wprowadzenie kodu programu oraz jego kompilację lub uruchomienie.

2.1 Zainstaluj ZXing BarCode
Wpisz następujące polecenie w konsoli menedżera pakietów NuGet, aby zainstalować bibliotekę ZXing:
Alternatywnie można pobrać pakiet za pomocą narzędzia do zarządzania pakietami NuGet. Podobnie jak na poniższej ilustracji. Spróbuj zainstalować pierwszy wybrany wynik.

2.2 Odczytywanie i zapisywanie BARCODE za pomocą ZXing
Możemy utworzyć BARCODE, korzystając z poniższego przykładowego kodu. ZXing pozwala nam tworzyć ponad 10 rodzajów formatów kodów kreskowych.
using ZXing.Windows.Compatibility;
var options = new QrCodeEncodingOptions
{
Width = 250,
Height = 250,
};
var writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;
// Encode the string into a QR code bitmap image
System.Drawing.Bitmap _bitmap = writer.Write("Hello world");
// Save the bitmap as a PNG file
_bitmap.Save("Demo1.png");Imports ZXing.Windows.Compatibility
Private options = New QrCodeEncodingOptions With {
.Width = 250,
.Height = 250
}
Private writer = New BarcodeWriter()
writer.Format = BarcodeFormat.QR_CODE
writer.Options = options
' Encode the string into a QR code bitmap image
Dim _bitmap As System.Drawing.Bitmap = writer.Write("Hello world")
' Save the bitmap as a PNG file
_bitmap.Save("Demo1.png")Powyższy kod ustawia wysokość i szerokość dla QrCodeEncodingOptions. Następnie tworzy instancję BarcodeWriter. Dla BarcodeWriter ustawiamy format kodu kreskowego jako kod QR. Przekazujemy autorowi wcześniej utworzone opcje kodów QR. Metoda Write w BarcodeWriter koduje podany ciąg znaków w kod kreskowy i zwraca go jako obraz bitmapowy. Obraz jest zapisywany przy użyciu metody Save bitmapy. Poniżej znajduje się wynik z kodu.

Poniższy przykład kodu pokazuje dekodowanie BarCoda przy użyciu ZXing.
using ZXing.Windows.Compatibility;
// Load the barcode image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
// Create a BarcodeReader object
var reader = new BarcodeReader();
// Decode the bitmap into a result
var result = reader.Decode(barcodeBitmap);
if (result != null)
{
// Output the decoded text to the console
Console.WriteLine(result.Text);
Console.ReadKey();
}Imports ZXing.Windows.Compatibility
' Load the barcode image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)
' Create a BarcodeReader object
Private reader = New BarcodeReader()
' Decode the bitmap into a result
Private result = reader.Decode(barcodeBitmap)
If result IsNot Nothing Then
' Output the decoded text to the console
Console.WriteLine(result.Text)
Console.ReadKey()
End IfW powyższym kodzie najpierw ładujemy obraz do bitmapy, a następnie tworzymy obiekt BarcodeReader. Funkcja Decode pozwala nam przekazać bitmapę jako parametr, który może zwracać wyniki w różnych formatach. Używamy właściwości Text, aby uzyskać tekst zakodowany w kodzie kreskowym.

IronBarcode
Dzięki tej bibliotece BarCode odczytywanie i tworzenie BarCode jest proste. Dynamiczny BARCODE można łatwo utworzyć za pomocą biblioteki IronBarcode. Za pomocą zaledwie kilku linii kodu ta prosta biblioteka może wygenerować BARCODE, co pomaga nam w kodowaniu obrazów BARCODE. IronBarcode umożliwia generowanie kodów kreskowych w językach takich jak C# i VB.NET.
1. Funkcje
- IronBarcode potrafi odczytywać i zapisywać większość formatów obrazów kodów kreskowych oraz standardów QR, w tym UPC A/E, Databar, EAN 8/13, MSI, Code 39/93/128, CodaB, RSS 14/Expanded oraz ITF.
- Podczas skanowania obrazów i klatek wideo w czasie rzeczywistym IronBarcode może korygować obrót, szumy, zniekształcenia i przekrzywienie. Aby poprawić dokładność i szybkość odczytu, IronBarcode automatycznie przetwarza obrazy kodów kreskowych w trakcie ich tworzenia. Często stosuje się barcody dynamiczne, ponieważ umożliwiają one zmianę treści.
- Zdolność IronBarcode do wykorzystania wielu rdzeni i wątków jest korzystna dla serwerów przetwarzających dane w trybie wsadowym.
- W dokumentach jedno- i wielostronicowych IronBarcode może automatycznie znaleźć jeden lub więcej BarCodes.
2. Korzystanie z IronBarcode
Aby wykorzystać bibliotekę IronBarcode w rozwiązaniu, należy pobrać wymagany pakiet. Aby to zrobić, użyj następującego polecenia w konsoli menedżera pakietów NuGet:
Alternatywnie można skorzystać z menedżera pakietów NuGet, który wyświetli wszystkie wyniki wyszukiwania, aby znaleźć i pobrać pakiet "BarCode". Następnie można wybrać niezbędny pakiet do pobrania do programu.

3. Odczytywanie i zapisywanie BarCodes za pomocą IronBarcode
Wystarczy kilka wierszy kodu, aby szybko utworzyć obrazy kodów kreskowych przy użyciu biblioteki IronBarcode. Dodatkowo umożliwia nam to zapisanie utworzonego kodu BarCode jako oddzielnego pliku graficznego. Oto przykładowy kod w języku C# służący do tworzenia etykiety z kodem BarCode za pomocą programu konsolowego.
using IronBarCode;
// Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png");Imports IronBarCode
' Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png")Ten kod tworzy grafikę o rozmiarze 500 na 500 pikseli, używając średniej korekcji błędów, a następnie zapisuje ją do lokalizacji pliku przy użyciu metody SaveAsPng.
Poniższy przykład kodu odczytuje tekst zakodowany w kodzie QR, który utworzyliśmy w poprzednim przykładzie.
using IronBarCode;
// Load the QR code image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
// Read the barcode image
var reader = IronBarCode.BarcodeReader.Read(barcodeBitmap);
// Output the decoded value to the console
Console.WriteLine(reader.Values[0]);
Console.ReadKey();Imports IronBarCode
' Load the QR code image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)
' Read the barcode image
Private reader = IronBarCode.BarcodeReader.Read(barcodeBitmap)
' Output the decoded value to the console
Console.WriteLine(reader.Values(0))
Console.ReadKey()Najpierw ładujemy obraz do bitmapy, a następnie odczytujemy obraz przy użyciu metody Read klasy BarcodeReader. Używamy właściwości Values na obiekcie BarcodeResults zwróconym z metody Read, aby uzyskać zawartość odczytaną z kodu QR.
Aby dowiedzieć się więcej o ZXing i porównać go z IronBarcode, przeczytaj następny wpis na blogu.
Nasz samouczek dotyczący odczytu kodów kreskowych zawiera również więcej informacji na temat korzystania z IronBarcode do odczytu kodów kreskowych i kodów QR. Więcej samouczków dotyczących kodowania w IronBarcode.
Wnioski
Skaner kodów kreskowych ZXing pozwala tworzyć kody kreskowe wysokiej jakości, ale jest przestarzały i obsługuje niewiele formatów kodów kreskowych. Posiada również ograniczoną dokumentację i wsparcie techniczne.
Z drugiej strony IronBarcode jest bardzo wydajny i elastyczny oraz może działać na wielu systemach operacyjnych. IronBarcode umożliwia zmianę koloru, rozmiaru, odstępów i czcionki używanej w barcode'ach. Obsługuje również Crystal Reports.
Programiści mogą korzystać z IronBarcode za darmo. Użytkownicy mogą nabyć licencję, aby uzyskać dostęp do dodatkowych funkcji oraz otrzymać roczną pomoc techniczną i aktualizacje produktu.

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.