IRONSOFTWAREHOME
KORZYSTANIE Z IRONBARCODE

Jak zbudować aplikację SDK do skanowania kodów kreskowych w .NET MAUI

Curtis Chau
Curtis Chau
Updated: 28 czerwca 2026

.NET MAUI spełnia obietnicę jednej bazy kodu przeznaczonej dla systemów Android, iOS i Windows. Wyzwaniem jest sytuacja, w której konieczne jest zintegrowanie natywnych funkcji sprzętowych, takich jak skanowanie BarCode. Ręczne łączenie interfejsów API kamer oznacza konfiguracje specyficzne dla platformy, dyrektywy kompilacji warunkowej i wiele godzin debugowania. Istnieje szybsza droga.

Ten samouczek pokazuje, jak zbudować działający, wielopłatformowy skaner kodów kreskowych w .NET MAUI przy użyciu IronBarcode. Będziesz konfigurować projekt, ustawiać uprawnienia platformy, skanować BarCodes z plików graficznych, odczytywać BarCodes z dokumentów PDF oraz obsługiwać wiele symboli za pomocą opcji skanowania — wszystko to za pomocą kodu, który można uruchomić na dowolnym obsługiwanym urządzeniu docelowym.

Bezpłatna próba i postępuj zgodnie z poniższymi instrukcjami.

NuGetZainstaluj za pomocą NuGet

PM > Install-Package BarCode

Install IronBarcode by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

Jak skonfigurować SDK skanera BARCODE w .NET MAUI?

Konfiguracja zestawu SDK skanera kodów kreskowych .NET MAUI wymaga utworzenia nowego projektu, zainstalowania pakietu NuGet oraz skonfigurowania uprawnień platformy. Cały proces konfiguracji zajmuje kilka minut w Visual Studio.

Utwórz projekt .NET MAUI

Otwórz program Visual Studio i utwórz nowy projekt aplikacji .NET MAUI. Nadaj projektowi opisową nazwę, np. "BarcodeScanner", i wybierz .NET Framework 8 lub nowszą wersję jako docelową platformę. Visual Studio generuje domyślną strukturę projektu z folderami specyficznymi dla platformy Android i iOS.

Jeśli Twoim celem jest .NET 10, obowiązuje ten sam szablon projektu. Zaktualizuj wlasciwosc <TargetFrameworks> w pliku .csproj, aby zawierala net10.0-android, net10.0-ios i net10.0-windows10.0.19041.0 wedlug potrzeb. Pełną listę nazw frameworków docelowych oraz minimalnych wymagań dotyczących wersji systemu operacyjnego można znaleźć w dokumentacji dotyczącej platform obsługiwanych przez .NET MAUI.

Zainstaluj IronBarcode

Zainstaluj pakiet IronBarcode NuGet za pomocą konsoli menedżera pakietów:

PM > Install-Package BarCode

To polecenie pobiera i instaluje zestaw SDK skanera kodów kreskowych wraz ze wszystkimi wymaganymi zależnościami dla aplikacji .NET MAUI.

Konfiguracja uprawnień platformy

Nawet w przypadku skanowania z plików graficznych, a nie z obrazu na żywo z kamery, dobrą praktyką jest skonfigurowanie następujących uprawnień dla aplikacji skanującej kody kreskowe .NET MAUI.

Dla Androida dodaj nastepujace do Platforms/Android/AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
XML

Dla iOS dodaj te wpisy do Platforms/iOS/Info.plist:

<key>NSPhotoLibraryUsageDescription</key>
<string>Access needed to select barcode images for scanning.</string>
<key>NSCameraUsageDescription</key>
<string>Camera permission for barcode scanning.</string>
XML

Zainicjuj SDK

Ustaw klucz licencyjny na wczesnym etapie cyklu życia aplikacji, aby zapewnić pełną aktywację IronBarcode przed wykonaniem jakichkolwiek wywołań skanowania. Umiesc aktywacje w MauiProgram.cs:

using IronBarCode;

var builder = MauiApp.CreateBuilder();
builder
    .UseMauiApp<App>()
    .ConfigureFonts(fonts =>
    {
        fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
    });

// Activate IronBarcode before the app starts
License.LicenseKey = "YOUR_LICENSE_KEY_HERE";

return builder.Build();

IronBarcode oferuje bezpłatną licencję próbną do celów programistycznych i testowych. Ustal klucz jednokrotnie przy uruchomieniu; wszystkie kolejne wywolania BarcodeReader i BarcodeWriter w tym samym procesie korzystaja z aktywowanej licencji.

Jak odczytywać BarCodes z plików graficznych?

Podstawową funkcją każdego skanera BARCODE MAUI jest odczytywanie BARCODE-ów z wybranych obrazów. Metoda BarcodeReader.Read() przyjmuje sciezke do pliku i zwraca kolekcje obiektow BarcodeResult, jeden na kazdy wykryty kod kreskowy.

Zaprojektuj interfejs użytkownika

Utworz czysty interfejs w MainPage.xaml, ktory pozwala uzytkownikom wybrac plik obrazu i przegladać zeskanowane dane kodu kreskowego:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="BarcodeScanner.MainPage">
    <VerticalStackLayout Padding="20" Spacing="15">
        <Label Text=".NET MAUI Barcode Scanner" FontSize="24" HorizontalOptions="Center"/>
        <Button Text="Select Image to Scan" Clicked="OnSelectImageClicked"/>
        <Image x:Name="SelectedImageView" HeightRequest="200"/>
        <Label x:Name="ResultLabel" FontSize="16"/>
    </VerticalStackLayout>
</ContentPage>
XML

Wdrożenie skanowania BarCode

Dodaj logike skanowania do MainPage.xaml.cs. Ten kod obsluguje wybieranie obrazow za pomoca API MAUI FilePicker i przekazuje wybrana sciezke pliku do IronBarcode:

using IronBarCode;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private async void OnSelectImageClicked(object sender, EventArgs e)
    {
        var result = await FilePicker.PickAsync(new PickOptions
        {
            FileTypes = FilePickerFileType.Images,
            PickerTitle = "Select a barcode image"
        });

        if (result != null)
        {
            // Display the selected image
            SelectedImageView.Source = ImageSource.FromFile(result.FullPath);

            // Read barcodes from the image file
            var barcodes = BarcodeReader.Read(result.FullPath);

            ResultLabel.Text = barcodes.Any()
                ? $"Found: {barcodes.First().Value}"
                : "No barcodes detected in selected image.";
        }
    }
}

Wynik

.NET MAUI Barcode Scanner SDK: Zbuduj uniwersalny skaner w ciagu minut: Obraz 1 - Wynik skanowania kodu kreskowego

Metoda BarcodeReader.Read() analizuje wybrany obraz i zwraca wszystkie wykryte kody kreskowe. IronBarcode automatycznie rozpoznaje wiele symboli kodów kreskowych, w tym kody QR, Code 128, Code 39, EAN-13 i wiele innych obsługiwanych formatów. Kolekcja wynikow ujawnia wlasciwosci takie jak BarcodeType, Value, PageNumber oraz wspolrzedne ramki dla kazdego wykrytego kodu.

Jak skanować BarCodes z dokumentów PDF?

Jedną z funkcji, która wyróżnia IronBarcode spośród wielu alternatywnych rozwiązań, jest odczytywanie kodów kreskowych bezpośrednio z plików PDF. Ma to kluczowe znaczenie dla aplikacji .NET MAUI obsługujących przepływ dokumentów — listy przewozowe, zamówienia zakupu, dokumentacja medyczna i podobne przypadki użycia opierają się na BARCODES-ach osadzonych w plikach PDF.

Metoda BarcodeReader.ReadPdf() przyjmuje sciezke do pliku i zwraca taka sama kolekcje BarcodeResult jak czytnik obrazow, z dodatkowa wlasciwoscia PageNumber identyfikujaca, z ktorej strony PDF pochodzi kazdy kod kreskowy:

using IronBarCode;

private async void OnSelectPdfClicked(object sender, EventArgs e)
{
    var result = await FilePicker.PickAsync(new PickOptions
    {
        PickerTitle = "Select a PDF with barcodes"
    });

    if (result != null)
    {
        // Read barcodes from every page of the PDF
        var barcodes = BarcodeReader.ReadPdf(result.FullPath);

        var output = string.Join("\n", barcodes.Select(b =>
            $"Page {b.PageNumber}: [{b.BarcodeType}] {b.Value}"));

        await DisplayAlert("Scan Results", output.Length > 0 ? output : "No barcodes found.", "OK");
    }
}

Wynik

.NET MAUI Barcode Scanner SDK: Zbuduj uniwersalny skaner w ciagu minut: Obraz 2 - Wynik skanowania PDF z kodami QR

Metoda ReadPdf() skanuje wszystkie strony PDF i zwraca dane kodow kreskowych wraz z numerami stron, co ulatwia obsluge dokumentow zawierajacych wiele kodow. Jesli PDF obejmuje dziesiatki stron, rozwaz przekazanie obiektu BarcodeReaderOptions z ustawionym PageNumbers na konkretny zakres, aby ograniczyc skanowanie do odpowiednich stron i skrocic czas przetwarzania.

Jak radzisz sobie z wieloma kodami kreskowymi i kodami QR?

Aplikacje produkcyjne często muszą wykrywać wiele BARCODE-ów na jednym obrazie lub filtrować wyniki według typu BARCODE-a. Klasa BarcodeReaderOptions ujawnia wlasciwosci konfiguracji, ktore kontroluja zachowanie wykrywania. Ustawienie ExpectMultipleBarcodes na true nakazuje czytnikowi kontynuowanie skanowania po pierwszym dopasowaniu, zamiast wczesnego zatrzymania:

using IronBarCode;

// Configure the reader for multi-barcode detection with type filtering
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};

var barcodes = BarcodeReader.Read(imagePath, options);

foreach (var barcode in barcodes)
{
    Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}");
}

Wlasciwosc Speed kontroluje kompromis miedzy czasem skanowania a dokladnoscia. ReadingSpeed.Faster stawia na przepustowosc, co odpowiada aplikacjom skanujacym hurtowe ilosci wysokiej jakosci obrazow. ReadingSpeed.ExtraSlow stosuje bardziej agresywne sposoby korekcji obrazu przy trudnych danych wejsciowych -- niskim kontraście, przekatnych katow lub czesciowo przeslonietych kodach. ReadingSpeed.Balanced jest odpowiednim punktem wyjscia dla wiekszosci aplikacji.

Wyliczenie BarcodeEncoding wspiera kombinacje bitowe, co pozwala ograniczyc skanowanie do konkretnych symbologii istotnych dla przypadku uzycia, nie obciazajac wydajnosci niepotrzebnymi sprawdzaniami.

Jak odczytywać BarCodes ze strumieni pamięci?

Ścieżki plików sprawdzają się w większości scenariuszy, ale niektóre przepływy pracy .NET MAUI przekazują dane obrazu przez pamięć — klatki przechwycone z podglądu kamery, bajty pobrane z REST API lub dane obrazu generowane w trakcie procesu. IronBarcode obsluguje bezposrednie dane wejściowe System.IO.Stream na przeciazeniu BarcodeReader.Read():

using IronBarCode;
using System.IO;

// Read a barcode from a MemoryStream (e.g., an in-memory image buffer)
private BarcodeResult[] ReadFromStream(Stream imageStream)
{
    return BarcodeReader.Read(imageStream);
}

// Example: download an image and scan without writing to disk
private async Task<string> ScanDownloadedBarcode(string imageUrl)
{
    using var httpClient = new HttpClient();
    using var stream = await httpClient.GetStreamAsync(imageUrl);
    using var memoryStream = new MemoryStream();

    await stream.CopyToAsync(memoryStream);
    memoryStream.Position = 0;

    var barcodes = BarcodeReader.Read(memoryStream);
    return barcodes.Any() ? barcodes.First().Value : string.Empty;
}

Przeciazenie strumienia przyjmuje kazda podklase Stream, w tym MemoryStream, FileStream i strumienie sieciowe. Biblioteka obsluguje wewnetrzna detekcje formatu, wiec nie musisz okreslac typu obrazu przed wywolaniem Read().

Jak generować BarCodes w aplikacji MAUI?

IronBarcode obsługuje zarówno generowanie, jak i odczytywanie kodów kreskowych. Klasa BarcodeWriter tworzy kody kreskowe jako pliki obrazu, obiekty Bitmap lub instancje Stream, ktore mozesz wyswietlac bezposrednio w widoku MAUI. Jest to przydatne w aplikacjach do zarządzania zapasami, które oprócz funkcji skanowania wymagają drukowania lub udostępniania BarCodes:

using IronBarCode;

// Generate a QR code and display it in a MAUI Image control
private async void OnGenerateQrClicked(object sender, EventArgs e)
{
    // Create a QR code barcode
    var qrCode = QRCodeWriter.CreateQrCode(
        value: "https://ironsoftware.com/csharp/barcode/",
        qrCodeSize: 500,
        errorCorrection: QRCodeWriter.QrErrorCorrectionLevel.Medium
    );

    // Save to a temporary file and display
    var tempPath = Path.Combine(FileSystem.CacheDirectory, "generated-qr.png");
    qrCode.SaveAsPng(tempPath);

    GeneratedImageView.Source = ImageSource.FromFile(tempPath);
}

Klasa QRCodeWriter obsluguje wszystkie cztery poziomy korekcji bledow w kodach QR (Niski, Sredni, Kwartyl, Wysoki), niestandardowe rozmiary oraz opcje stylizacji, w tym kontrole koloru tla/przedniego planu. Dla symbologii innych niz QR, uzyj BarcodeWriter.CreateBarcode() z odpowiednia wartoscia BarcodeEncoding. Dokumentacja API generowania kodów kreskowych zawiera informacje o wszystkich obsługiwanych formatach wyjściowych.

Jakie są kluczowe możliwości tej biblioteki skanera BarCode?

IronBarcode zapewnia kilka korzyści dla projektów skanowania kodów kreskowych .NET MAUI, które odróżniają go od alternatywnych rozwiązań open source, takich jak ZXing.Net.MAUI:

Możliwości IronBarcode for .NET MAUI
MożliwościSzczegóły
Obsługa wielu platformObsługuje systemy Android, iOS i Windows z jednego pakietu NuGet
Wiele źródeł danych wejściowychSkanowanie ze ścieżek plików, strumieni pamięci i dokumentów PDF
Zakres formatowaniaOdczytuje ponad 30 symboli 1D i 2D, w tym QR, Data Matrix i PDF417
Generowanie BarCode'ówGeneruje kody QR i kody BARCODE 1D w formacie PNG, bitmapowym lub strumieniowym
Korekta obrazówAutomatycznie obsługuje dane wejściowe obrócone, przekrzywione i o niskim kontraście
Brak natywnej zależności od SDKCzysta biblioteka .NET, niewymagająca natywnych powiązań specyficznych dla platformy

Kwestia "braku zależności od natywnego SDK" ma znaczenie w projektach .NET MAUI, ponieważ biblioteki natywne specyficzne dla platformy wymagają oddzielnych etapów łączenia dla każdego celu. IronBarcode całkowicie eliminuje tę złożoność, co oznacza, że to samo odwołanie NuGet generuje działające pliki binarne dla wszystkich trzech obsługiwanych platform bez dodatkowej konfiguracji.

Pełna lista obsługiwanych formatów kodów kreskowych znajduje się w dokumentacji dotyczącej formatów obsługiwanych przez IronBarcode. Aby zapoznać się z cenami i warunkami licencji dotyczącymi wdrożenia produkcyjnego, przejrzyj stronę licencyjną IronBarcode.

Jakie są najlepsze praktyki dotyczące skanowania BarCodes w produkcji?

Wdrożenie skanera BARCODE do środowiska produkcyjnego wymaga zwrócenia uwagi na kilka obszarów wykraczających poza podstawowe wywołanie odczytu. Poniższe wytyczne dotyczą najczęstszych błędów w aplikacjach do obsługi kodów kreskowych .NET MAUI.

Wybierz odpowiednia predkosc czytania. ReadingSpeed.Balanced poprawnie obsluguje wiekszosc obrazow z prawdziwego swiata. Zarezerwuj ReadingSpeed.ExtraSlow dla skanow dokumentow drukowanych lub obrazow, ktorych uzytkownicy nie moga ponownie uchwycic. Unikaj ReadingSpeed.ExtraSlow w przypadku przeplywow z duza iloscia pracy, poniewaz kazde skanowanie zajmuje znacznie dluzej.

Filtrowanie wedlug oczekiwanych typow. Jesli aplikacja przetwarza tylko kody QR, ustaw ExpectBarcodeTypes = BarcodeEncoding.QRCode. Ograniczenie obszaru wyszukiwania skraca czas przetwarzania i eliminuje fałszywe alarmy spowodowane innymi symbolami obecnymi w grafice tła.

Uzywaj ExpectMultipleBarcodes tylko w razie potrzeby. Ustawienie tego na true zawsze powoduje, ze czytnik wykonuje dodatkowe przejscia. Dla danych wejsciowych z jednym kodem kreskowym pozostaw domyslne (false), aby skanowanie zakonczone bylo, gdy tylko zostanie znaleziony pierwszy poprawny kod.

Obsluguj puste wyniki z wdziekiem. BarcodeReader.Read() zwraca pusta tablice, zamiast generowac blad, gdy nie zostana wykryte zadne kody kreskowe. Sprawdz .Any() przed uzyskaniem dostepu do First() i przekaz uzytkownikowi jasny komunikat. Monit o ponowną próbę z instrukcją ("upewnij się, że BarCode jest dobrze oświetlony i wyśrodkowany") poprawia komfort użytkowania bardziej niż ogólny komunikat o błędzie.

Przechowuj w pamieci podręcznej obiekt opcji. Tworzenie instancji BarcodeReaderOptions przy kazdym skanowaniu dodaje alokacje. Zdefiniuj opcje raz na poziomie klasy i wykorzystuj je wielokrotnie w kolejnych wywołaniach.

Aby uzyskać dodatkowe wskazówki dotyczące diagnozowania błędów skanowania i optymalizacji wydajności, zapoznaj się z przewodnikiem rozwiązywania problemów IronBarcode oraz samouczkiem dotyczącym czytnika kodów kreskowych.

Jakie są Twoje kolejne kroki?

Budowanie skanera kodow kreskowych .NET MAUI z IronBarcode wymaga zainstalowania jednej paczki NuGet, skonfigurowania uprawnien platformowych oraz wywolania BarcodeReader.Read() ze sciezka do pliku lub strumieniem. To samo API jest przeznaczone dla systemów Android, iOS i Windows bez gałęzi kodu specyficznych dla danej platformy.

Aby rozszerzyć możliwości aplikacji, warto rozważyć następujące zasoby:

Bezpłatna próba, aby uzyskać klucz licencyjny do celów programistycznych, lub zapoznaj się z opcjami licencyjnymi dotyczącymi wdrożenia produkcyjnego.

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