Zum Fußzeileninhalt springen
IRONBARCODE VERWENDEN

.NET MAUI Scannen von Barcodes in Windows-Anwendungen mit einer leistungsstarken Barcode-Scanner-Bibliothek

Sie müssen sich nicht mit komplexen Kameratreibern oder endlosen Berechtigungsschleifen herumschlagen, um einen Barcodescanner in .NET MAUI zum Laufen zu bringen. Die meisten Entwickler denken bei "BarCode" sofort an den Overhead des Live-Kamerastreams. Es gibt einen besseren Weg. Mit der IronBarcode for .NET-Bibliothek können Sie Barcodes direkt aus Bilddateien wie JPEGs oder PNGs scannen und sich so die Mühe der Kameraverwaltung sparen. Auch wenn wir uns in diesem Tutorial auf Microsoft Windows konzentrieren, kann derselbe Code auch für Ihre Android-App und iOS-Projekte verwendet werden.

Starten Sie mit einer kostenlosen Testversion, um mitzumachen.

Wie erstellt man eine .NET MAUI App für Barcode-Scanning?

Das Einrichten eines .NET MAUI-Projekts in Visual Studio Code oder Visual Studio ist einfach, für dieses Tutorial verwenden wir Visual Studio. Starten Sie Visual Studio 2022 oder höher, wählen Sie Neues Projekt erstellen und wählen Sie die Vorlage .NET MAUI App. Geben Sie Ihren Projektnamen ein und wählen Sie Ihre Zielplattformen aus. Für dieses Tutorial konzentrieren wir uns auf die Bereitstellung unter Windows.

Im Gegensatz zu Lösungen wie Scanbot SDK, die eine komplexe Initialisierung in MauiProgram.cs mit Var-Builder-Konfigurationen und Kamera-Vorschau-Setup erfordern, ist für IronBarcode keine spezielle Registrierung erforderlich. Die öffentliche statische Klasse MauiProgram bleibt gegenüber der Standardvorlage unverändert, was die Integration für .NET MAUI-Anwendungen bemerkenswert einfach macht.

Um das IronBarcode NuGet-Paket zu installieren, können Sie die Befehlspalette verwenden (Strg+Umschalt+P in VS Code) oder den folgenden Befehl in der Paketmanager-Konsole in Visual Studio ausführen:

Install-Package BarCode

Dieses einzelne NuGet-Paket bietet alles, was für das Scannen von Barcodes, das Scannen mehrerer Barcodes und die Erkennung von QR-Codes benötigt wird. Die neueste Version unterstützt alle wichtigen Barcodeformate ohne zusätzliche Abhängigkeiten, im Gegensatz zu kamerabasierten Scannern, die oft Berechtigungshandler und CameraView-Steuerkonfigurationen erfordern.

Um IronBarcode in einer Produktionsumgebung zu verwenden, müssen Sie einen Lizenzschlüssel anwenden. Sie können dies in Ihrer MauiProgram.cs oder innerhalb des App.xaml.cs-Konstruktors festlegen:

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

Behandlung von Berechtigungen für iOS und Android

Einer der Hauptvorteile der Verwendung einer bildbasierten .NET-Bibliothek ist das vereinfachte Berechtigungsmodell. Traditionelle kamerabasierte Scanner erfordern die folgenden Berechtigungen in Ihrer AndroidManifest.xml:

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

Bei der Entwicklung für iOS und Android können diese erforderlichen Berechtigungen oft zu Fehlern wie "Berechtigung verweigert" führen, wenn sie nicht perfekt gehandhabt werden. Da IronBarcode jedoch von einem Bild oder Dateistrom scannt, müssen Sie nur sicherstellen, dass die Anwendung Zugriff auf das Dateisystem hat.

Welches Interface Design eignet sich am besten für einen MAUI BarCode Scanner?

Eine saubere, funktionale Schnittstelle ermöglicht es den Benutzern, eine Bilddatei mit Barcodes auszuwählen und die Scanergebnisse anzuzeigen. Die folgende XAML erstellt eine einfache, aber effektive Barcode-Scanner-Benutzeroberfläche für Ihre .NET MAUI-Anwendung:

<?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 display 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 display here" />
        </VerticalStackLayout>
    </ScrollView>
</ContentPage>
$vbLabelText   $csharpLabel

Dieses Layout bietet eine Schaltfläche zur Auswahl einer Bilddatei, einen Bereich zur Anzeige des ausgewählten Bildes und eine Beschriftung für die Ergebnisse der Barcode-Erkennung. Das Design funktioniert auf allen .NET MAUI-Zielplattformen, wobei die native Leistung unter Windows erhalten bleibt.

Wie implementiert man eine Barcode-Erkennung aus Bilddateien?

In Ihrer MainPage.xaml.cs können Sie Lebenszyklusmethoden wie async void OnAppearing verwenden, um Einstellungen zu initialisieren oder zu prüfen, ob der Benutzer den erforderlichen Dateizugriff gewährt hat.

Die öffentliche Teilklasse MainPage enthält die Scan-Logik. Die Methode BarcodeReader.Read von IronBarcode bewältigt die gesamte Komplexität der Barcode-Erkennung und unterstützt das Scannen von Barcodes in den Formaten JPEG, PNG, GIF, TIFF und BMP. Hier ist die vollständige Umsetzung:

using IronBarCode;
namespace BarcodeScanner;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private async void OnSelectImage(object sender, EventArgs e)
    {
        try
        {
            // Open file picker for image selection
            var result = await FilePicker.PickAsync(new PickOptions
            {
                FileTypes = FilePickerFileType.Images,
                PickerTitle = "Select a barcode image"
            });
            if (result != null)
            {
                // Display the selected image
                var stream = await result.OpenReadAsync();
                SelectedImageDisplay.Source = ImageSource.FromStream(() => stream);
                // Read barcodes from the image file
                var barcodes = BarcodeReader.Read(result.FullPath);
                // Display all detected barcode values
                if (barcodes.Count > 0)
                {
                    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 occurred: {ex.Message}";
        }
    }
}
using IronBarCode;
namespace BarcodeScanner;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private async void OnSelectImage(object sender, EventArgs e)
    {
        try
        {
            // Open file picker for image selection
            var result = await FilePicker.PickAsync(new PickOptions
            {
                FileTypes = FilePickerFileType.Images,
                PickerTitle = "Select a barcode image"
            });
            if (result != null)
            {
                // Display the selected image
                var stream = await result.OpenReadAsync();
                SelectedImageDisplay.Source = ImageSource.FromStream(() => stream);
                // Read barcodes from the image file
                var barcodes = BarcodeReader.Read(result.FullPath);
                // Display all detected barcode values
                if (barcodes.Count > 0)
                {
                    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 occurred: {ex.Message}";
        }
    }
}
$vbLabelText   $csharpLabel

Ausgabe

.NET MAUI Scan Barcode in Windows Apps mit einer leistungsfähigen Barcode Scanner Library: Bild 1 - Gescannte Barcode-Ausgabe

Die Methode BarcodeReader.Read erkennt und dekodiert automatisch alle in der Bilddatei vorhandenen Barcodeformate. Jedes Ergebnis enthält den Barcodetyp, den Wert und die Standortinformationen. Dieser Ansatz macht Kamerazulassungen, Android- und iOS-spezifische Konfigurationen oder die Behandlung von Barcode-Erkennungsereignissen überflüssig, die bei kamerabasierten Lösungen wie dem Scanbot SDK erforderlich sind.

private async void ProcessResults(BarcodeResults barcodes)
{
    if (barcodes.Count > 0)
    {
        string msg = $"Found {barcodes.Count} barcodes.";
        // Use await DisplayAlert to show results to the user
        await DisplayAlert("Scan Success", msg, "OK");
    }
    else
    {
        await DisplayAlert("No Results", "No barcodes were found in the image.", "OK");
    }
}
private async void ProcessResults(BarcodeResults barcodes)
{
    if (barcodes.Count > 0)
    {
        string msg = $"Found {barcodes.Count} barcodes.";
        // Use await DisplayAlert to show results to the user
        await DisplayAlert("Scan Success", msg, "OK");
    }
    else
    {
        await DisplayAlert("No Results", "No barcodes were found in the image.", "OK");
    }
}
$vbLabelText   $csharpLabel

Benutzer-Feedback mit await DisplayAlert

In einer mobilen oder Desktop-Umgebung ist ein sofortiges Feedback entscheidend. Anstatt ein Etikett zu aktualisieren, können Sie die Methode await DisplayAlert verwenden, um ein modales Dialogfeld anzuzeigen, sobald der Scan abgeschlossen ist. Dadurch wird sichergestellt, dass der Benutzer das Ergebnis zur Kenntnis nimmt, bevor er fortfährt.

Wie können Sie mehrere BarCodes scannen und Erkennungsoptionen konfigurieren?

Wenn Ihre Bilddatei mehrere Barcodes enthält, erkennt IronBarcode sie alle automatisch. Um die Leistung zu optimieren, wenn Sie die erwarteten Barcodetypen kennen, verwenden Sie BarcodeReaderOptions:

using IronBarCode;
// Configure options for scanning multiple barcodes
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
// Process each detected barcode
foreach (var barcode in barcodes)
{
    Console.WriteLine($"Found: {barcode.Value}");
}
using IronBarCode;
// Configure options for scanning multiple barcodes
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
// Process each detected barcode
foreach (var barcode in barcodes)
{
    Console.WriteLine($"Found: {barcode.Value}");
}
$vbLabelText   $csharpLabel

Multi-BarCode-Scanning-Ausgabe

.NET MAUI Scan Barcode in Windows Apps mit einer leistungsstarken Barcode Scanner Library: Bild 2 - Ausgabe zum Scannen mehrerer Barcodes

Die Angabe von ExpectBarcodeTypes verbessert die Scangeschwindigkeit, indem die Erkennung auf relevante Formate konzentriert wird. Die Eigenschaft Geschwindigkeit stellt ein Gleichgewicht zwischen Genauigkeit und Leistung her; verwenden Sie ReadingSpeed.Faster für unverfälschte Bilder oder ReadingSpeed.Detailed für anspruchsvolle Scans mit Rotation oder Rauschen.

Dank dieser Flexibilität eignet sich der .NET MAUI Barcode-Scanner für verschiedene Szenarien: Einzelhandelsanwendungen, die Produktcodes lesen, Lagersysteme, die Versandetiketten verarbeiten, oder Dokumenten-Workflows, die eingebettete QR-Codes extrahieren.

Warum sich für bildbasiertes BarCode-Scannen entscheiden?

Das bildbasierte Scannen von Barcodes bietet deutliche Vorteile für die Entwicklung von .NET MAUI-Scan-Barcodes. Während Scanbot SDK und ähnliche Tools sich auf die Live-Kamera-Vorschau konzentrieren, bietet der Ansatz von IronBarcode eine einfachere Integration, ein konsistentes Verhalten auf verschiedenen Plattformen und die Möglichkeit, vorhandene Bilddateien aus beliebigen Quellen zu verarbeiten, einschließlich gescannter Dokumente, E-Mail-Anhänge oder Benutzer-Uploads.

Für Android- und iOS-Implementierungen funktioniert derselbe Code ohne Änderungen, es sind keine Kamerarechte oder plattformspezifischen Konfigurationen erforderlich.

Erweiterte Funktionen: AR Overlay vs. Bildverarbeitung

Während sich einige SDKs auf ein Live-AR-Overlay (Augmented Reality) konzentrieren, um Barcodes in einem Kamera-Feed hervorzuheben, konzentriert sich IronBarcode auf Hochgeschwindigkeitsgenauigkeit für statische Bilder. Dies ist ideal für plattformübergreifende Anwendungen, bei denen die Benutzer möglicherweise Quittungen, Versandetiketten oder Screenshots hochladen, anstatt Gegenstände "live" vor Ort zu scannen.

Durch den Verzicht auf eine Live-Kameraübertragung reduzieren Sie den Batterieverbrauch und vermeiden das Flackern der Benutzeroberfläche, das häufig bei mobilen AR-Komponenten auftritt.

Abschluss

Die Entwicklung eines .NET MAUI-Barcodescanners mit IronBarcode erfordert nur minimalen Code und bietet gleichzeitig robuste Barcode-Erkennungsfunktionen. Der bilddateibasierte Ansatz vereinfacht die Entwicklung, da Kamerarechte, gerätespezifische Konfigurationen und komplexe Initialisierungen entfallen. Sie konzentrieren sich auf Ihre Anwendungslogik, während IronBarcode das Scannen übernimmt.

Die komplette API-Dokumentation deckt zusätzliche Funktionen ab, darunter das Lesen von PDF-Barcodes, Stapelverarbeitung und erweiterte Bildfilter. Sind Sie bereit, das Scannen von Barcodes in Ihrem plattformübergreifenden .NET MAUI-Projekt zu implementieren? Erwerben Sie eine Lizenz für den produktiven Einsatz, oder testen Sie den vollen Funktionsumfang mit einer kostenlosen Testversion.

Starten Sie jetzt mit IronBarcode.
green arrow pointer

Häufig gestellte Fragen

Wie kann ich einen Barcode-Scanner in .NET MAUI erstellen?

Sie können einen Barcode-Scanner in .NET MAUI erstellen, indem Sie die IronBarcode for .NET-Bibliothek verwenden, mit der Sie Barcodes direkt aus Bilddateien wie JPEGs oder PNGs scannen können. Mit dieser Methode lässt sich die Komplexität der Verwaltung von Live-Kamerastreams umgehen.

Kann ich IronBarcode zum Scannen von Barcodes auf Android und iOS verwenden?

Ja, Sie können denselben IronBarcode-Code zum Scannen von Barcodes in Android- und iOS-Projekten verwenden. Die Bibliothek ist mit diesen Plattformen kompatibel und ermöglicht eine nahtlose Integration.

Welche Vorteile bietet die Verwendung von IronBarcode for .NET MAUI-Anwendungen?

Die Verwendung von IronBarcode in .NET MAUI-Anwendungen vereinfacht das Scannen von Barcodes, da keine komplexen Kameratreiber oder Berechtigungen erforderlich sind. Es ermöglicht das Scannen direkt aus Bilddateien, wodurch der Prozess einfacher und effizienter wird.

Ist es schwierig, Kameraströme in .NET MAUI zum Scannen von Barcodes zu verwalten?

Die Verwaltung von Kamera-Streams in .NET MAUI für das Scannen von Barcodes kann aufgrund von Kameratreibern und Berechtigungsschleifen sehr komplex sein. Mit IronBarcode können Sie diese Herausforderungen jedoch vermeiden, indem Sie Barcodes stattdessen aus Bilddateien scannen.

Unterstützt IronBarcode sowohl das Scannen von QR-Codes als auch von Barcodes?

Ja, IronBarcode unterstützt sowohl das Scannen von Barcodes als auch von QR-Codes und bietet damit eine vielseitige Lösung für verschiedene Arten von Code-Scanning-Anforderungen in Ihren Anwendungen.

Ist IronBarcode nur auf Windows-Anwendungen beschränkt?

Auch wenn sich dieses Tutorial auf Microsoft Windows konzentriert, ist IronBarcode auch mit Android und iOS kompatibel, was es zu einer flexiblen Wahl für die plattformübergreifende Entwicklung macht.

Welche Bilddateiformate unterstützt IronBarcode beim Scannen?

IronBarcode unterstützt das Scannen von verschiedenen Bilddateiformaten, einschließlich JPEGs und PNGs, was eine breite Palette von Anwendungsfällen beim Scannen von Barcodes ermöglicht.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen