Twórz i odczytuj obrazy kodów kreskowych Xamarin za pomocą nowoczesnej biblioteki skanującej C#
Rozwiązania Xamarin do obsługi kodów kreskowych pozostają niezbędne dla programistów mobilnych zajmujących się aplikacjami na systemy Android i iOS w branżach handlu detalicznego, logistyki i zarządzania zapasami. Mimo że firma Microsoft zakończyła oficjalne wsparcie dla platformy Xamarin w maju 2024 r., miliony aplikacji Xamarin nadal działają, a aplikacje te nadal muszą niezawodnie tworzyć, skanować i dekodować BARCODE-y. IronBarcode to zestaw SDK do obsługi kodów kreskowych w środowisku .NET, który umożliwia generowanie i odczytywanie kodów kreskowych za pomocą zaledwie kilku wierszy kodu w języku C#. Działa jako skaner i generator kodów kreskowych na platformach Android, iOS i Windows, a gdy nadejdzie czas migracji projektu, przechodzi bezpośrednio do .NET MAUI.
Rozpocznij bezpłatny okres próbny IronBarcode i już dziś dodaj do swojego projektu funkcję odczytu kodów kreskowych Xamarin.
Jak działa skanowanie BarCode w aplikacjach Xamarin?
Skanowanie BarCode w aplikacji Xamarin polega na przechwytywaniu informacji z BarCode z obrazu z kamery lub zapisanego pliku na urządzeniu, a następnie przekazywaniu tych danych do biblioteki skanującej, która dekoduje zakodowane informacje. W przeszłości wielu programistów Xamarin korzystało z biblioteki open source ZXing (Zebra Crossing), tworząc nową instancję ZXingScannerPage, umieszczając ją w stosie nawigacji i obsługując zdarzenie OnScanResult w celu przetwarzania BARCODE-ów. Chociaż takie podejście sprawdzało się w podstawowych przypadkach skanowania kodów QR w Xamarin.Forms, od lat nie wprowadzono żadnych znaczących poprawek błędów w ZXing, a programiści często zgłaszali błędy podczas skanowania BARCODE-ów w słabym oświetleniu lub podczas dekodowania złożonych formatów, takich jak Data Matrix.
IronBarcode to nowoczesny zestaw SDK do skanowania kodów kreskowych, który stosuje inne podejście. Zamiast udostępniać dedykowaną stronę skanera z interfejsem kamery na żywo, IronBarcode działa na dowolnym źródle, które może zapewnić aplikacja Xamarin, takich jak zdjęcia z kamery, pliki przesłane przez użytkownika, zrzuty ekranu lub dokumenty PDF. To sprawia, że jest to elastyczna biblioteka skanowania dla projektów BARCODE Xamarin, w których programiści potrzebują pełnej kontroli nad interfejsem użytkownika i procesem skanowania. Klasa BarCodeReader obsługuje ponad 30 formatów kodów kreskowych i kodów QR, a zestaw SDK zawiera wbudowane filtry przetwarzania wstępnego, które poprawiają wydajność skanowania kodów kreskowych w warunkach słabego oświetlenia lub w przypadku uszkodzonych kodów.
Aby rozpocząć, zainstaluj pakiet IronBarcode NuGet w swoim rozwiązaniu Xamarin:
Install-Package BarCode
Pakiet BarCode jest dostępny w serwisie NuGet i obsługuje platformę .NET Standard 2.0, dzięki czemu jest kompatybilny z Xamarin.Forms, natywnymi projektami Xamarin oraz frameworkiem MAUI firmy Microsoft. Podstawowe funkcje SDK nie wymagają żadnych dodatkowych pakietów NuGet specyficznych dla platformy ani dodatkowych kroków konfiguracyjnych. Wystarczy zainstalować pakiet i od razu przetestować go w swoim projekcie.
Jak tworzyć kody kreskowe i kody QR w aplikacji Xamarin?
Generowanie kodów kreskowych do wyświetlania na ekranie urządzenia, do etykietowania lub do wymiany danych jest proste dzięki klasie BarcodeWriter w IronBarcode. Poniższy przykład jest typowym przykładem dla aplikacji do obsługi BarCodes Xamarin, które muszą generować zarówno BarCodes 1D, jak i 2D.
using IronBarCode;
// Barcode generation: create a Code 128 barcode for product scanning
// Comment: BarcodeWriter handles all supported encoding formats
var barcode = BarcodeWriter.CreateBarcode(
"PROD-2025-XMR", // Value to encode in the barcode
BarcodeWriterEncoding.Code128, // Barcode format for the scanner
400, 150 // Width and height in pixels
);
// Customize the barcode: add visible text below the barcode image
// Comment: this text helps users verify the encoded value
barcode.AddBarcodeValueTextBelowBarcode();
barcode.SaveAsPng("product_barcode.png");
// Generate a QR code that users can scan with any mobile device camera
// Comment: QR codes are ideal for URLs, contact data, and Wi-Fi config
var qrCode = BarcodeWriter.CreateBarcode(
"https://ironsoftware.com",
BarcodeWriterEncoding.QRCode,
300, 300
);
// Configure margins and export the QR code as image lines of pixels
qrCode.SetMargins(10);
qrCode.SaveAsPng("qr_code.png");
using IronBarCode;
// Barcode generation: create a Code 128 barcode for product scanning
// Comment: BarcodeWriter handles all supported encoding formats
var barcode = BarcodeWriter.CreateBarcode(
"PROD-2025-XMR", // Value to encode in the barcode
BarcodeWriterEncoding.Code128, // Barcode format for the scanner
400, 150 // Width and height in pixels
);
// Customize the barcode: add visible text below the barcode image
// Comment: this text helps users verify the encoded value
barcode.AddBarcodeValueTextBelowBarcode();
barcode.SaveAsPng("product_barcode.png");
// Generate a QR code that users can scan with any mobile device camera
// Comment: QR codes are ideal for URLs, contact data, and Wi-Fi config
var qrCode = BarcodeWriter.CreateBarcode(
"https://ironsoftware.com",
BarcodeWriterEncoding.QRCode,
300, 300
);
// Configure margins and export the QR code as image lines of pixels
qrCode.SetMargins(10);
qrCode.SaveAsPng("qr_code.png");
Imports IronBarCode
' Barcode generation: create a Code 128 barcode for product scanning
' Comment: BarcodeWriter handles all supported encoding formats
Dim barcode = BarcodeWriter.CreateBarcode(
"PROD-2025-XMR", ' Value to encode in the barcode
BarcodeWriterEncoding.Code128, ' Barcode format for the scanner
400, 150 ' Width and height in pixels
)
' Customize the barcode: add visible text below the barcode image
' Comment: this text helps users verify the encoded value
barcode.AddBarcodeValueTextBelowBarcode()
barcode.SaveAsPng("product_barcode.png")
' Generate a QR code that users can scan with any mobile device camera
' Comment: QR codes are ideal for URLs, contact data, and Wi-Fi config
Dim qrCode = BarcodeWriter.CreateBarcode(
"https://ironsoftware.com",
BarcodeWriterEncoding.QRCode,
300, 300
)
' Configure margins and export the QR code as image lines of pixels
qrCode.SetMargins(10)
qrCode.SaveAsPng("qr_code.png")
Wynikowy obraz BarCode

Powyższy kod pokazuje generowanie kodów kreskowych przez IronBarcode za pomocą zaledwie kilku wierszy kodu, a każdy komentarz w przykładowym kodzie podkreśla cel każdego kroku. Przyjmuje dane do zakodowania, format kodu kreskowego z wyliczenia BarcodeWriterEncoding oraz wymiary wyjściowe. SDK IronBarcode obsługuje szeroki zakres typów kodowania, w tym EAN-13, Code 39, QR, Data Matrix, PDF417 i Aztec. Po utworzeniu instancji GeneratedBarcode można ją szeroko dostosować: użyj ResizeTo(), aby dostosować wymiary, SetMargins(), aby skonfigurować wypełnienie, oraz AddAnnotationTextAboveBarcode(), aby dodać widoczne etykiety. Wygenerowane BARCODES można eksportować w formatach PNG, JPEG, GIF, TIFF lub PDF, bez konieczności pisania kodu specyficznego dla platformy Android lub iOS.
Aby zapoznać się z zaawansowanymi funkcjami, takimi jak dodawanie logo do kodów QR lub dostosowywanie kolorów kodów BarCode, zapoznaj się z samouczkiem dotyczącym generowania kodów BarCode oraz stroną z przykładami tworzenia kodów BarCode.
Jak odczytywać i dekodować BarCodes z aparatu i plików?
Odczytywanie kodów kreskowych z obrazów zarejestrowanych przez aparat urządzenia lub wybranych z biblioteki zdjęć użytkownika to obszar, w którym IronBarcode zapewnia największą wartość jako rozwiązanie do obsługi kodów kreskowych w Xamarin. Proces skanowania obsługuje wszystko, od nieskazitelnych kodów kreskowych w formie cyfrowej po trudne zdjęcia zrobione w rzeczywistych warunkach, przy użyciu jednej spójnej metody.
using IronBarCode;
// Comment: read and decode barcodes from a camera-captured file
var results = BarcodeReader.Read("scanned_photo.png");
// Iterate through each barcode scanning result
foreach (var result in results)
{
// Comment: access the decoded barcode value and format type
string value = result.Value;
string type = result.BarcodeType.ToString();
// Display the scanned barcode data to the user on screen
Console.WriteLine($"Type: {type}, Value: {value}");
}
using IronBarCode;
// Comment: read and decode barcodes from a camera-captured file
var results = BarcodeReader.Read("scanned_photo.png");
// Iterate through each barcode scanning result
foreach (var result in results)
{
// Comment: access the decoded barcode value and format type
string value = result.Value;
string type = result.BarcodeType.ToString();
// Display the scanned barcode data to the user on screen
Console.WriteLine($"Type: {type}, Value: {value}");
}
Imports IronBarCode
' Comment: read and decode barcodes from a camera-captured file
Dim results = BarcodeReader.Read("scanned_photo.png")
' Iterate through each barcode scanning result
For Each result In results
' Comment: access the decoded barcode value and format type
Dim value As String = result.Value
Dim type As String = result.BarcodeType.ToString()
' Display the scanned barcode data to the user on screen
Console.WriteLine($"Type: {type}, Value: {value}")
Next
Odczytywanie danych z BarCodes

Ten fragment kodu przekazuje plik do czytnika i przechodzi w pętli przez wyniki. Każda instancja BarCodeResult zapewnia dostęp do typu BarCode, zdekodowanego tekstu, danych binarnych, współrzędnych pozycji oraz wskaźnika pewności, dając programistom wszystko, czego potrzebują w środowiskach aplikacji produkcyjnych. Pełna lista obsługiwanych typów kodów kreskowych znajduje się na stronie poświęconej obsługiwanym formatom kodów kreskowych.
W rzeczywistych sytuacjach, w których liczy się wydajność skanowania kodów kreskowych — skanowanie w magazynie przy słabym oświetleniu, odczytywanie uszkodzonych kodów kreskowych na ruchomym przenośniku lub dekodowanie wielu kodów kreskowych na jednej stronie — klasa BarcodeReaderOptions pozwala skonfigurować każdy aspekt procesu odczytu:
using IronBarCode;
// Comment: configure the barcode reader for challenging conditions
var options = new BarcodeReaderOptions
{
// Comment: balance between scanning speed and accuracy on the device
Speed = ReadingSpeed.Balanced,
// Expect multiple barcodes per page or camera capture
ExpectMultipleBarcodes = true,
// Limit scanning to specific barcode types for faster results
ExpectBarcodeTypes = BarcodeEncoding.QRCode
| BarcodeEncoding.Code128
| BarcodeEncoding.DataMatrix,
// Auto-rotate barcodes captured at any camera angle
AutoRotate = true,
// Apply image filters to improve scanning in poor conditions
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(), // Sharpen blurry camera captures
new ContrastFilter(1.5f) // Boost contrast for low light
}
};
// Comment: read barcodes from a sample image using configured options
var results = BarcodeReader.Read("warehouse_scan.jpg", options);
// Iterate and display results for the user
foreach (var barcode in results)
{
// Output each decoded barcode value from the scanner
Console.WriteLine($"Found: {barcode.Value}");
}
using IronBarCode;
// Comment: configure the barcode reader for challenging conditions
var options = new BarcodeReaderOptions
{
// Comment: balance between scanning speed and accuracy on the device
Speed = ReadingSpeed.Balanced,
// Expect multiple barcodes per page or camera capture
ExpectMultipleBarcodes = true,
// Limit scanning to specific barcode types for faster results
ExpectBarcodeTypes = BarcodeEncoding.QRCode
| BarcodeEncoding.Code128
| BarcodeEncoding.DataMatrix,
// Auto-rotate barcodes captured at any camera angle
AutoRotate = true,
// Apply image filters to improve scanning in poor conditions
ImageFilters = new ImageFilterCollection
{
new SharpenFilter(), // Sharpen blurry camera captures
new ContrastFilter(1.5f) // Boost contrast for low light
}
};
// Comment: read barcodes from a sample image using configured options
var results = BarcodeReader.Read("warehouse_scan.jpg", options);
// Iterate and display results for the user
foreach (var barcode in results)
{
// Output each decoded barcode value from the scanner
Console.WriteLine($"Found: {barcode.Value}");
}
Imports IronBarCode
' Comment: configure the barcode reader for challenging conditions
Dim options As New BarcodeReaderOptions With {
' Comment: balance between scanning speed and accuracy on the device
.Speed = ReadingSpeed.Balanced,
' Expect multiple barcodes per page or camera capture
.ExpectMultipleBarcodes = True,
' Limit scanning to specific barcode types for faster results
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128 Or BarcodeEncoding.DataMatrix,
' Auto-rotate barcodes captured at any camera angle
.AutoRotate = True,
' Apply image filters to improve scanning in poor conditions
.ImageFilters = New ImageFilterCollection From {
New SharpenFilter(), ' Sharpen blurry camera captures
New ContrastFilter(1.5F) ' Boost contrast for low light
}
}
' Comment: read barcodes from a sample image using configured options
Dim results = BarcodeReader.Read("warehouse_scan.jpg", options)
' Iterate and display results for the user
For Each barcode In results
' Output each decoded barcode value from the scanner
Console.WriteLine($"Found: {barcode.Value}")
Next
Właściwość Speed kontroluje kompromis między szybkością a dokładnością. Użyj ReadingSpeed.Faster do skanowania dużych ilości lub ReadingSpeed.Detailed do maksymalnego wykrywania trudnych BarCodes. Konfiguracja ExpectBarcodeTypes ogranicza formaty sprawdzane przez SDK skanera, co pozwala uniknąć fałszywych wyników błędów i poprawia wydajność. Funkcja AutoRotate automatycznie koryguje BarCodes uchwycone pod nietypowymi kątami przez aparat urządzenia, natomiast SharpenFilter i ContrastFilter poprawiają skanowanie BarCodes w słabym oświetleniu. Programiści mogą również używać przycinania w stylu Zoom za pomocą właściwości CropArea, aby skonfigurować skaner tak, aby skupiał się na określonym obszarze przechwyconej strony.
Aby uzyskać pełny opis wszystkich opcji konfiguracyjnych czytnika, zapoznaj się z przewodnikiem dotyczącym odczytu kodów kreskowych z obrazów oraz Dokumentacją API BarCodeReaderOptions. Programiści, którzy muszą odczytywać kody kreskowe z dokumentów PDF, powinni również zapoznać się z metodą odczytu kodów kreskowych z plików PDF.
Jakie są najlepsze zastosowania mobilnego rozwiązania do odczytu BarCode'ów?
Rozwiązania Xamarin do skanowania kodów BarCode i kodów QR obsługują dziesiątki zastosowań w różnych branżach. Oto najczęstsze scenariusze, w których IronBarcode zapewnia zarówno skaner kodów kreskowych, jak i generator, który zapewnia wartość dodaną na urządzeniach mobilnych:
- Zarządzanie zapasami i magazynem: użytkownicy urządzeń z systemem Android i iOS skanują BARCODE-sy na produktach i półkach, aby śledzić stan zapasów w czasie rzeczywistym, co zmniejsza liczbę błędów związanych z ręcznym wprowadzaniem danych i zwiększa szybkość pracy. Każda aplikacja magazynowa zyskuje na szybkim i niezawodnym skanowaniu BARCODE-ów.
- Punkt sprzedaży detalicznej: skanowanie kodów QR przy kasie umożliwia szybkie wyszukiwanie produktów, realizację kuponów i przetwarzanie płatności mobilnych, a wszystko to jest widoczne dla użytkownika na ekranie aplikacji. Funkcja skanera obsługuje zarówno formaty 1D, jak i 2D.
- Logistyka i wysyłka: skanowanie BARCODE-ów na paczkach w celu weryfikacji trasy i potwierdzenia dostawy na całej flocie urządzeń z systemem Android i iOS. IronBarcode potrafi odczytać kody kreskowe nawet z pogniecionych lub częściowo zasłoniętych etykiet na skanowanej stronie.
- Rejestracja na wydarzeniu: aplikacja Xamarin, która odczytuje kody QR przy wejściach na konferencję, zapewnia natychmiastową weryfikację uczestników — nie są potrzebne standardowe bilety papierowe ani ręczne sprawdzanie kont. Aplikacja odczytuje każdy kod w mniej niż sekundę.
- Opieka zdrowotna: BarCODE na opaskach pacjentów, etykietach leków i próbkach laboratoryjnych jest skanowany przez urządzenia mobilne, aby zapobiegać błędom i zapewnić prawidłowe leczenie przez użytkownika. Każda strona do odczytu w aplikacji może być dostosowana do konkretnych typów BARCODE-ów.
IronBarcode zapewnia obsługę wszystkich tych przypadków użycia kodów kreskowych w Xamarin jako kompleksowy skaner kodów kreskowych na różnych platformach, w tym .NET Standard, .NET Core i .NET MAUI. Dla programistów utrzymujących rozwiązanie do obsługi kodów kreskowych Xamarin w środowisku produkcyjnym IronBarcode oferuje stałe wsparcie, regularne aktualizacje oraz przejrzyste opcje licencyjne. Gdy w planach jest migracja z Xamarin do .NET MAUI, IronBarcode przechodzi na nową platformę płynnie, bez konieczności przepisywania kodu. Zobacz samouczek dotyczący skanera BARCODE .NET MAUI, aby zapoznać się z przykładem krok po kroku.
Przewodnik Microsoftu dotyczący migracji projektów Xamarin zawiera szczegółowe instrukcje dotyczące przejścia na najnowszy framework wielopłatformowy. Pomocny link do rozwiązań społecznościowych można również znaleźć w tym poście na Stack Overflow, poświęconym typowym problemom z kodami kreskowymi w Xamarin, a ten link do społeczności programistów Xamarin na Reddicie zawiera dodatkowe dyskusje na temat metod odczytu kodów kreskowych na urządzeniach mobilnych na różnych platformach.
Jak już dziś rozpocząć korzystanie ze skanowania BarCode w Xamarin?
IronBarcode sprawia, że generowanie i skanowanie kodów kreskowych w Xamarin jest szybkie, niezawodne i przyjazne dla programistów. Zapewnia obsługę ponad 30 formatów BarCode, zaawansowane funkcje, takie jak automatyczne obracanie i konfigurowalne przetwarzanie wstępne, oraz płynny interfejs C#, który sprawia, że kod jest przejrzysty i czytelny. Niezależnie od tego, czy rozwiązanie wymaga stworzenia prostej aplikacji z przykładowym kodem QR, przetwarzania kodów kreskowych z dokumentów PDF, czy też zbudowania pełnego czytnika kodów kreskowych dla aplikacji na Androida lub iOS, IronBarcode obsługuje to wszystko w ramach jednej, dobrze udokumentówanej biblioteki IronBarcode. Każda funkcja w API została zaprojektowana z myślą o przejrzystości i łatwości użytkowania w środowiskach aplikacji produkcyjnych.
Wypróbuj IronBarcode w swoim projekcie Xamarin, zarejestruj się, aby skorzystać z bezpłatnej wersji próbnej. Gdy będziesz gotowy do produkcji, zapoznaj się z opcjami licencyjnymi i przejdź do strony z cennikiem, aby uzyskać szczegółowe informacje — ceny zaczynają się od 749 USD. Jeśli chodzi o wsparcie po zakupie, programiści mogą dostosować zakres pomocy technicznej na stronie dodatków do licencji.
Często Zadawane Pytania
Jak IronBarcode wspiera rozwój aplikacji Xamarin?
IronBarcode umożliwia programistom aplikacji Xamarin tworzenie, odczytywanie i dekodowanie kodów kreskowych za pomocą zaledwie kilku linii kodu C#. Wspiera platformy Android, iOS i Windows, zapewniając bezproblemową funkcjonalność kodów kreskowych w aplikacjach mobilnych.
Czy IronBarcode może być używany do skanowania i generowania kodów kreskowych?
Tak, IronBarcode działa zarówno jako skaner, jak i generator kodów kreskowych, co pozwala deweloperom na łatwe tworzenie i odczytywanie kodów kreskowych w swoich aplikacjach Xamarin.
Jakie typy kodów kreskowych obsługuje IronBarcode?
IronBarcode obsługuje różne typy kodów kreskowych, w tym Code 128, Data Matrix i kody QR, czyniąc go wszechstronnym dla różnych potrzeb aplikacji.
Czy IronBarcode jest zgodny z .NET MAUI?
Tak, IronBarcode został zaprojektowany, aby płynnie przejść do .NET MAUI, zapewniając ciągłe wsparcie i funkcjonalność podczas migracji z Xamarin.
Dlaczego IronBarcode jest ważny dla istniejących aplikacji Xamarin?
Wraz z zakończeniem oficjalnego wsparcia Microsoftu dla Xamarin, IronBarcode dostarcza niezawodne rozwiązanie dla utrzymania funkcjonalności kodów kreskowych w istniejących aplikacjach Xamarin w różnych branżach, takich jak handel detaliczny i logistyka.
Jak IronBarcode pomaga w logistyce i zarządzaniu zapasami?
IronBarcode pomaga w logistyce i zarządzaniu zapasami, wydajnie generując i dekodując kody kreskowe, usprawniając tym samym procesy takie jak śledzenie i kontrola zapasów.
Jakie platformy są wspierane przez IronBarcode?
IronBarcode wspiera platformy Android, iOS i Windows, czyniąc go wszechstronnym narzędziem dla aplikacji kodów kreskowych dla wielu platform.




