Zum Fußzeileninhalt springen
IRONBARCODE VERWENDEN

Wie entwickelt man einen .NET MAUI Barcode-Scanner in C#?

Mit IronBarcode können Sie Barcodes direkt aus Bilddateien innerhalb einer .NET MAUI Anwendung scannen – ohne Kamerastream, ohne Treiberkonfiguration, ohne plattformspezifische Berechtigungsschleifen.

Mit einem einzigen Methodenaufruf können Sie Barcodes aus JPEG-, PNG-, GIF-, TIFF- und BMP-Dateien scannen. Derselbe Code ist ohne Änderungen für Windows, Android und iOS geeignet. Starten Sie mit einer kostenlosen Testversion und folgen Sie den unten stehenden Codebeispielen.

Wie erstellt man ein .NET MAUI Projekt zum Scannen von Barcodes?

Das Einrichten eines .NET MAUI Projekts in Visual Studio ist unkompliziert. Starten Sie Visual Studio 2022 oder höher, wählen Sie "Neues Projekt erstellen" , wählen Sie die Vorlage ".NET MAUI App" , geben Sie Ihren Projektnamen ein und wählen Sie Ihre Zielplattformen aus. Dieses Tutorial konzentriert sich auf die Bereitstellung unter Windows, das gleiche Projekt läuft aber auch unter Android und iOS. .NET MAUI ist Microsofts plattformübergreifendes Framework zum Erstellen nativer mobiler und Desktop-Apps mit C# und XAML aus einer einzigen gemeinsamen Codebasis.

Im Gegensatz zu kamerabasierten Lösungen wie ZXing.Net.MAUI, die eine CameraView Steuerungseinrichtung und eine MauiProgram.cs Registrierung erfordern, benötigt IronBarcode keine spezielle Konfiguration. Ihr MauiProgram.cs bleibt im Standardvorlagenzustand. Dadurch bleibt Ihr Startcode frei von Drittanbieter-Handler-Registrierungen und die Angriffsfläche für Initialisierungsfehler beim Start wird verringert.

Um IronBarcode zu installieren, führen Sie folgenden Befehl in der Paket-Manager-Konsole aus:

Install-Package BarCode

Dieses Komplettpaket bietet Ihnen Barcode-Scanning, QR-Code-Erkennung, Multi-Barcode-Erkennung und Barcode-Generierung. Es sind keine zusätzlichen Abhängigkeiten erforderlich.

Um IronBarcode in der Produktion zu aktivieren, setzen Sie Ihren Lizenzschlüssel in App.xaml.cs oder MauiProgram.cs ein:

IronBarCode.License.LicenseKey = "YOUR_IRONBARCODE_LICENSE_KEY";
IronBarCode.License.LicenseKey = "YOUR_IRONBARCODE_LICENSE_KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR_IRONBARCODE_LICENSE_KEY"
$vbLabelText   $csharpLabel

Sie können einen Lizenzschlüssel auf derIronBarcode -Lizenzseite erhalten oder mit einer kostenlosen Testlizenz beginnen.

Wie unterscheiden sich die Berechtigungen für bildbasiertes Scannen?

Herkömmliche kamerabasierte Barcode-Scanner benötigen explizite Berechtigungen in den Plattformmanifesten. Unter Android fügen Sie zu AndroidManifest.xml hinzu:

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

Unter iOS deklarieren Sie NSCameraUsageDescription in Info.plist. Die Behandlung verweigerter Berechtigungen zur Laufzeit birgt zusätzliche Fehlerquellen, die leicht übersehen werden können.

Da IronBarcode aus einem Dateistream und nicht aus einer Kameravorschau liest, benötigen Sie lediglich Zugriff auf das Dateisystem. Unter Windows wird dies automatisch gewährt. Unter Android und iOS behandelt FilePicker die Benutzereinwilligung, wenn der Benutzer ein Bild auswählt – keine manuellen Berechtigungsanfragen erforderlich.

Welche XAML-Schnittstelle eignet sich am besten für einen MAUI-Barcodescanner?

Eine minimalistische Benutzeroberfläche – bestehend aus einer Schaltfläche zur Bildauswahl, einem Bildanzeigebereich und einer Ergebnisbezeichnung – deckt die meisten Barcode-Scan-Szenarien ab. Das folgende XAML erstellt dieses Layout für eine .NET MAUI ContentPage:

<?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">
    <ScrollView>
        <VerticalStackLayout Spacing="20" Padding="30">
            <Label Text="MAUI Barcode Scanner"
                   FontSize="24"
                   HorizontalOptions="Center" />
            <Button x:Name="SelectImageBtn"
                    Text="Select Image File"
                    Clicked="OnSelectImage" />
            <Image x:Name="SelectedImageDisplay"
                   HeightRequest="250" />
            <Label x:Name="ResultsLabel"
                   Text="Barcode results will appear here" />
        </VerticalStackLayout>
    </ScrollView>
</ContentPage>
<?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">
    <ScrollView>
        <VerticalStackLayout Spacing="20" Padding="30">
            <Label Text="MAUI Barcode Scanner"
                   FontSize="24"
                   HorizontalOptions="Center" />
            <Button x:Name="SelectImageBtn"
                    Text="Select Image File"
                    Clicked="OnSelectImage" />
            <Image x:Name="SelectedImageDisplay"
                   HeightRequest="250" />
            <Label x:Name="ResultsLabel"
                   Text="Barcode results will appear here" />
        </VerticalStackLayout>
    </ScrollView>
</ContentPage>
XML

Das Layout bietet eine Schaltfläche zum Aufrufen der Dateiauswahl, einen Anzeigebereich für das ausgewählte Bild und eine Beschriftung für die dekodierten Barcode-Werte. Es wird auf allen .NET MAUI Zielplattformen ohne plattformspezifische Anpassungen korrekt dargestellt.

Für Produktions-Apps sollten Sie ResultsLabel durch eine CollectionView ersetzen, um mehrere Barcode-Ergebnisse in einer scrollbaren Liste anzuzeigen, insbesondere beim Scannen von Dokumenten, die mehr als einen Barcode enthalten.

Wie scannt man Barcodes aus Bilddateien in .NET MAUI?

Der Code-Behind in MainPage.xaml.cs behandelt die Bildauswahl und das Barcode-Lesen. BarcodeReader.Read akzeptiert einen Dateipfad und gibt eine BarcodeResults Kollektion zurück. Jedes Element in der Kollektion gibt die Barcode-Value, BarcodeType, und Positionskoordinaten frei.

Hier ist die vollständige Implementierung:

using IronBarCode;
namespace BarcodeScanner;

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

    private async void OnSelectImage(object sender, EventArgs e)
    {
        try
        {
            // Open the system file picker filtered to image types
            var result = await FilePicker.PickAsync(new PickOptions
            {
                FileTypes = FilePickerFileType.Images,
                PickerTitle = "Select a barcode image"
            });

            if (result != null)
            {
                // Display the selected image in the UI
                var stream = await result.OpenReadAsync();
                SelectedImageDisplay.Source = ImageSource.FromStream(() => stream);

                // Decode all barcodes found in the image
                var barcodes = BarcodeReader.Read(result.FullPath);

                if (barcodes.Count > 0)
                {
                    // Build a display string listing each barcode type and value
                    string output = string.Join("\n",
                        barcodes.Select(b => $"{b.BarcodeType}: {b.Value}"));
                    ResultsLabel.Text = output;
                }
                else
                {
                    ResultsLabel.Text = "No barcodes detected in image";
                }
            }
        }
        catch (Exception ex)
        {
            ResultsLabel.Text = $"Error: {ex.Message}";
        }
    }
}
using IronBarCode;
namespace BarcodeScanner;

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

    private async void OnSelectImage(object sender, EventArgs e)
    {
        try
        {
            // Open the system file picker filtered to image types
            var result = await FilePicker.PickAsync(new PickOptions
            {
                FileTypes = FilePickerFileType.Images,
                PickerTitle = "Select a barcode image"
            });

            if (result != null)
            {
                // Display the selected image in the UI
                var stream = await result.OpenReadAsync();
                SelectedImageDisplay.Source = ImageSource.FromStream(() => stream);

                // Decode all barcodes found in the image
                var barcodes = BarcodeReader.Read(result.FullPath);

                if (barcodes.Count > 0)
                {
                    // Build a display string listing each barcode type and value
                    string output = string.Join("\n",
                        barcodes.Select(b => $"{b.BarcodeType}: {b.Value}"));
                    ResultsLabel.Text = output;
                }
                else
                {
                    ResultsLabel.Text = "No barcodes detected in image";
                }
            }
        }
        catch (Exception ex)
        {
            ResultsLabel.Text = $"Error: {ex.Message}";
        }
    }
}
Imports IronBarCode

Namespace BarcodeScanner

    Public Partial Class MainPage
        Inherits ContentPage

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Async Sub OnSelectImage(sender As Object, e As EventArgs)
            Try
                ' Open the system file picker filtered to image types
                Dim result = Await FilePicker.PickAsync(New PickOptions With {
                    .FileTypes = FilePickerFileType.Images,
                    .PickerTitle = "Select a barcode image"
                })

                If result IsNot Nothing Then
                    ' Display the selected image in the UI
                    Dim stream = Await result.OpenReadAsync()
                    SelectedImageDisplay.Source = ImageSource.FromStream(Function() stream)

                    ' Decode all barcodes found in the image
                    Dim barcodes = BarcodeReader.Read(result.FullPath)

                    If barcodes.Count > 0 Then
                        ' Build a display string listing each barcode type and value
                        Dim output As String = String.Join(vbCrLf, barcodes.Select(Function(b) $"{b.BarcodeType}: {b.Value}"))
                        ResultsLabel.Text = output
                    Else
                        ResultsLabel.Text = "No barcodes detected in image"
                    End If
                End If
            Catch ex As Exception
                ResultsLabel.Text = $"Error: {ex.Message}"
            End Try
        End Sub
    End Class

End Namespace
$vbLabelText   $csharpLabel

BarcodeReader.Read verarbeitet die Datei am angegebenen Pfad, erkennt automatisch alle vorhandenen Barcode-Symbologien und gibt die Ergebnisse sofort zurück. Das Verfahren unterstützt alle gängigen 1D- und 2D-Barcodeformate, einschließlich Code 128, Code 39, QR-Code, Data Matrix, PDF417 und EAN-13.

Der FilePicker.PickAsync-Aufruf beschränkt den Picker auf Bildtypen, sodass Benutzer nicht versehentlich Nicht-Bild-Dateien auswählen können. Wenn result null ist, hat der Benutzer abgebrochen -- die if (result != null)-Absicherung behandelt dies stillschweigend.

Wie zeigt man Scan-Ergebnisse in einem Dialogfeld an?

Für kurze Bestätigungsnachrichten bietet DisplayAlert einen modalen Dialog, ohne dass zusätzliche UI-Elemente erforderlich sind:

private async void ShowScanSummary(BarcodeResults barcodes)
{
    if (barcodes.Count > 0)
    {
        // Inform the user how many barcodes were detected
        string message = $"Found {barcodes.Count} barcode(s) in the image.";
        await DisplayAlert("Scan Complete", message, "OK");
    }
    else
    {
        await DisplayAlert("No Results", "No barcodes were found in the image.", "OK");
    }
}
private async void ShowScanSummary(BarcodeResults barcodes)
{
    if (barcodes.Count > 0)
    {
        // Inform the user how many barcodes were detected
        string message = $"Found {barcodes.Count} barcode(s) in the image.";
        await DisplayAlert("Scan Complete", message, "OK");
    }
    else
    {
        await DisplayAlert("No Results", "No barcodes were found in the image.", "OK");
    }
}
Private Async Sub ShowScanSummary(barcodes As BarcodeResults)
    If barcodes.Count > 0 Then
        ' Inform the user how many barcodes were detected
        Dim message As String = $"Found {barcodes.Count} barcode(s) in the image."
        Await DisplayAlert("Scan Complete", message, "OK")
    Else
        Await DisplayAlert("No Results", "No barcodes were found in the image.", "OK")
    End If
End Sub
$vbLabelText   $csharpLabel

Dieses Muster eignet sich gut für einfache Bestätigungsabläufe. Für Apps, die auf die dekodierten Werte reagieren müssen – beispielsweise um ein Produkt nach seinem Barcode in einem Barcode-Inventurverwaltungssystem nachzuschlagen – übergeben Sie die barcodes-Kollektion direkt aus dem OnSelectImage-Handler an Ihre Geschäftsschicht.

Wie scannt man mehrere Barcodes und optimiert die Erkennungsgeschwindigkeit?

Wenn ein Bild mehrere Barcodes enthält, erkennt IronBarcode diese standardmäßig alle. Für eine bessere Leistung, wenn Sie wissen, welche Formate zu erwarten sind, konfigurieren Sie BarcodeReaderOptions, bevor Sie BarcodeReader.Read aufrufen:

using IronBarCode;

// Target only QR codes and Code 128 for faster detection
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}");
}
using IronBarCode;

// Target only QR codes and Code 128 for faster detection
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}");
}
Imports IronBarCode

' Target only QR codes and Code 128 for faster detection
Dim options As New BarcodeReaderOptions With {
    .ExpectMultipleBarcodes = True,
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
    .Speed = ReadingSpeed.Balanced
}

Dim barcodes = BarcodeReader.Read(imagePath, options)

For Each barcode In barcodes
    Console.WriteLine($"Type: {barcode.BarcodeType} | Value: {barcode.Value}")
Next
$vbLabelText   $csharpLabel

Die ExpectBarcodeTypes-Eigenschaft beschränkt die Erkennungseinheit auf die angegebenen Symbologien. Das Setzen von Speed auf ReadingSpeed.Faster eignet sich für kontrastreiche, unverzerrte Bilder. ReadingSpeed.Detailed wendet zusätzliche Bildkorrekturvorgänge an und behandelt Drehung, Verzerrung und Eingaben in niedriger Auflösung auf Kosten zusätzlicher Verarbeitungszeit.

ExpectMultipleBarcodes = true weist den Leser an, nach dem ersten Treffer weiter zu scannen, anstatt frühzeitig zurückzukehren. Bei Szenarien mit nur einem Barcode spart das Weglassen dieser Option einige Millisekunden bei jedem Scan.

Durch diese Konfiguration eignet sich der Scanner für eine Reihe von Anwendungen: eine Einzelhandels-App zum Einlesen von Produkt-Barcodes, ein Lagertool zur Verarbeitung gedruckter Barcode-Etiketten auf Versandfotos oder ein Dokumenten-Workflow zum Extrahieren von QR-Codes aus hochgeladenen Rechnungen.

Wie gehen Sie mit schwierigen oder qualitativ minderwertigen Bildern um?

Produktionsbilder sind selten makellos. Lagerfotos, die unter grellem Licht aufgenommen wurden, Screenshots aus E-Mail-Clients und gescannte Dokumente weisen alle Rauschen, Kompressionsartefakte und geometrische Verzerrungen auf. IronBarcode stellt ImageFilterCollection zur Verfügung, um Bilder vor dem Dekodieren vorzuverarbeiten:

using IronBarCode;
using IronSoftware.Drawing;

// Apply corrections for a low-quality warehouse photo
var options = new BarcodeReaderOptions
{
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter(1.2f),
        new DenoiseFilter()
    },
    Speed = ReadingSpeed.Detailed
};

var barcodes = BarcodeReader.Read(imagePath, options);
using IronBarCode;
using IronSoftware.Drawing;

// Apply corrections for a low-quality warehouse photo
var options = new BarcodeReaderOptions
{
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter(1.2f),
        new DenoiseFilter()
    },
    Speed = ReadingSpeed.Detailed
};

var barcodes = BarcodeReader.Read(imagePath, options);
Imports IronBarCode
Imports IronSoftware.Drawing

' Apply corrections for a low-quality warehouse photo
Dim options As New BarcodeReaderOptions With {
    .ImageFilters = New ImageFilterCollection From {
        New SharpenFilter(),
        New ContrastFilter(1.2F),
        New DenoiseFilter()
    },
    .Speed = ReadingSpeed.Detailed
}

Dim barcodes = BarcodeReader.Read(imagePath, options)
$vbLabelText   $csharpLabel

SharpenFilter stellt die Kantendefinition von komprimierten oder unscharfen Aufnahmen wieder her. ContrastFilter hilft bei ungleichmäßiger Beleuchtung. DenoiseFilter reduziert Flecken bei Scans mit niedriger Auflösung. Das Kombinieren dieser Filter mit ReadingSpeed.Detailed maximiert die Lesequoten bei schwierigen Materialien.

Bei .NET MAUI Apps, die vom Benutzer hochgeladene Bilder aus verschiedenen Quellen akzeptieren, verbessert die Anwendung eines standardmäßig festgelegten konservativen Filters und die Eskalation zu einer aggressiveren Korrektur bei einem zweiten Wiederholungsversuch das Benutzererlebnis, ohne im Normalfall eine sichtbare Latenz zu verursachen. Sie können auch eine Uri oder byte[] direkt an BarcodeReader.Read übergeben, was nützlich ist, wenn das Bild aus einer Netzwerkantwort statt vom Dateisystem kommt. Weitere Beispiele für Eingabequellen finden Sie in den Anleitungen von IronBarcode .

Warum eignet sich bildbasiertes Scannen for .NET MAUI Anwendungen?

Live-Kamera-Scans über ein CameraView-Steuerelement erfordern plattformspezifische Berechtigungsvergaben, Lebenszyklusmanagement für die Kamera-Vorschau und die Handhabung von Fokuserereignissen. Bei iOS bedeutet dies auch, AVCaptureSession zu konfigurieren; bei Android CameraX. Jede Plattform birgt ihre eigenen Fehlerquellen.

Bildbasiertes Scannen beseitigt diese ganze Problematik. Die IronBarcode API-Referenz zeigt, dass BarcodeReader.Read einen Dateipfad, eine Stream, eine Bitmap oder eine byte[] akzeptiert – jede Darstellung, die Ihre MAUI-App erstellen kann. Das bedeutet, dass dieselbe Scan-Logik funktioniert, unabhängig davon, ob das Bild von FilePicker, einem Netzdownload, einer zu Bitmap gerenderten PDF-Seite oder einem E-Mail-Anhang stammt.

Der Batterieverbrauch ist geringer, da die Kamerahardware ausgeschaltet bleibt. Bei der Live-Vorschau gibt es kein Flimmern der Benutzeroberfläche, und es ist nicht erforderlich, Kamera-Lebenszyklusereignisse beim Anhalten und Fortsetzen der App zu verwalten. Auf Tablet- und Desktop-Formfaktoren – wo ein Live-Kamera-Sucherbild selten angemessen ist – ist bildbasiertes Dekodieren die natürliche Standardeinstellung und kein Kompromiss. Benutzer können Dateien aus der Cloud, lokalen Ordnern oder Kamerarollen mit demselben FilePicker-Aufruf unabhängig vom Gerätetyp öffnen.

Für Workflows, bei denen Benutzer Barcodes fotografieren und hochladen – üblich in ASP.NET Barcode-Scanner-Webanwendungen – funktioniert derselbe BarcodeReader.Read-Aufruf sowohl auf dem mobilen Client als auch auf dem Server, sodass zwei Scan-Implementierungen nicht beibehalten werden müssen.

Wie schneidet IronBarcode im Vergleich zu ZXing .NET.MAUI ab?

ZXing .NET.MAUI zielt auf Live-Kamera-Scanning ab und funktioniert gut, wenn Echtzeit-Sucher-Feedback eine Produktanforderung ist. Es erfordert CameraView-Integration, Plattform-Handler-Registrierung und Laufzeit-Berechtigungsanforderungen.

IronBarcode zielt auf dateibasierte und streambasierte Dekodierung ab, was den Großteil der Dokumenten-Workflows in Enterprise abdeckt. Es unterstützt eine breitere Palette von Symbologien, darunter PDF417 , Data Matrix und Code 128 , und bietet eine Bildfilter-Vorverarbeitung, die ZXing nicht bietet. Für Anwendungen, bei denen Benutzer Bilder aufnehmen oder hochladen, anstatt Artikel live zu scannen, ist IronBarcode die direktere Lösung.

Wenn Ihre App neben der dateibasierten Dekodierung auch das Scannen mit der Live-Kamera benötigt, können Sie beide Bibliotheken kombinieren: ZXing .NET.MAUI für den Sucher-Workflow und IronBarcode für die Stapelverarbeitung von Dateien.

Was sind Ihre nächsten Schritte?

Die Entwicklung eines .NET MAUI Barcode-Scanners mit IronBarcode erfordert weniger als 30 Zeilen C#-Code. Durch die Verwendung von Bilddateien bleibt Ihre MAUI-Codebasis frei von Kamera-Berechtigungslogik und plattformspezifischer Initialisierung, und der gleiche Scan-Aufruf läuft auf Windows, Android und iOS identisch ab.

Die IronBarcode API-Dokumentation behandelt zusätzliche Funktionen: das Lesen von Barcodes aus PDF-Dokumenten, die Stapelverarbeitung mehrerer Bilder, das Schreiben benutzerdefinierter Bildfilter und das Generieren von Barcodes während des Lesens. Die Funktionsübersicht listet alle unterstützten Symboliken und Formate auf.

Starten Sie eine kostenlose Testphase , um IronBarcode in Ihrem Projekt zu testen, oder erwerben Sie eine Lizenz, wenn Sie bereit für den Produktiveinsatz sind.

Starten Sie jetzt mit IronBarcode.
green arrow pointer

Häufig gestellte Fragen

Wie erstellt man einen Barcode-Scanner in .NET MAUI ohne Kamera?

Installieren Sie IronBarcode über NuGet (`Install-Package BarCode`) und rufen Sie anschließend `BarcodeReader.Read(filePath)` mit einem Pfad auf, den Sie mit `FilePicker.PickAsync` ermittelt haben. Es sind keine Kameraberechtigungen oder eine `CameraView`-Konfiguration erforderlich.

Kann IronBarcode Barcodes auf Android und iOS in .NET MAUI scannen?

Ja. Derselbe `BarcodeReader.Read`-Aufruf läuft unter Windows, Android und iOS ohne plattformspezifische Codepfade oder Manifeständerungen.

Welche Bildformate unterstützt IronBarcode für das Scannen von Barcodes?

IronBarcode liest Barcodes aus JPEG-, PNG-, GIF-, TIFF- und BMP-Dateien. Es akzeptiert außerdem `Stream`-, `Bitmap`- und `byte[]`-Eingaben, sodass Bilder aus Netzwerkantworten ohne vorheriges Speichern auf der Festplatte verarbeitet werden können.

Wie scannt man mehrere Barcodes aus einem einzigen Bild in .NET MAUI?

Setzen Sie `ExpectMultipleBarcodes = true` in `BarcodeReaderOptions` und übergeben Sie die Optionen an `BarcodeReader.Read`. Der Reader gibt alle erkannten Barcodes in einer einzigen `BarcodeResults`-Sammlung zurück.

Worin besteht der Unterschied zwischen IronBarcode und ZXing .NET.MAUI?

ZXing .NET.MAUI zielt auf Live-Kamera-Scanning über ein `CameraView`-Steuerelement ab. IronBarcode zielt auf datei- und streambasierte Dekodierung ab, unterstützt mehr Symbologien (einschließlich PDF417 und Data Matrix) und bietet Bildfilter-Vorverarbeitung für Eingaben mit geringer Qualität.

Wie lässt sich die Barcode-Erkennung auf unscharfen oder qualitativ minderwertigen Bildern verbessern?

Fügen Sie den `BarcodeReaderOptions` eine `ImageFilterCollection` mit `SharpenFilter`, `ContrastFilter` und `DenoiseFilter` hinzu und setzen Sie `Speed ​​= ReadingSpeed.Detailed`. Dadurch werden Bildkorrekturen vor dem Dekodierungsvorgang angewendet.

Welche Barcode-Formate unterstützt IronBarcode in .NET MAUI?

IronBarcode unterstützt alle gängigen 1D- und 2D-Symbologien: Code 128, Code 39, QR-Code, Data Matrix, PDF417, EAN-13, EAN-8, UPC-A, UPC-E, Aztec und weitere. Die vollständige Liste finden Sie auf der IronBarcode -Funktionsseite.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an