QR-Code-Scanner for .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English

Einführung

.NET MAUI (.NET Multi-platform App UI) ist ein plattformübergreifendes Framework zur Erstellung nativer mobiler und Desktop-Anwendungen aus einer einzigen C#-Codebasis. Ein einziges Projekt kann Android, iOS, macOS und Windows anvisieren, wobei UI-Layouts und Geschäftslogik über alle Plattformen hinweg geteilt werden. Die Integration von MAUI in das .NET-Ökosystem ermöglicht es Entwicklern, mobile Nutzer zu erreichen, ohne auf vertraute Werkzeuge oder Sprachen verzichten zu müssen.

In diesem Artikel erklären wir, wie man einen nativen QR-Code-Scanner in einer .NET MAUI-Anwendung erstellt, der IronQR zum Dekodieren von QR-Codes verwendet, die aus der Fotobibliothek des Geräts ausgewählt werden.

IronQR: C# QR-Code-Bibliothek

Um QR-Codes in der Anwendung zu lesen, verwenden wir die IronQR .NET-Bibliothek. Sie bietet eine unkomplizierte API zum Erkennen und Dekodieren von QR-Codes aus jeder Bildquelle, einschließlich Dateien, die auf einem mobilen Gerät ausgewählt werden. IronQR läuft auf allen MAUI-Zielplattformen und erfordert kein Barcode-Domänenwissen zur Integration.

IronQR kann standardmäßige QR-Codes, Mikro-QR-Codes und rMQR-Codes dekodieren und akzeptiert Bildeingaben als Dateien, Streams oder Bitmaps. Es kann in Sekundenschnelle über den NuGet-Paketmanager installiert werden.

Schritte zum Erstellen eines QR-Code-Scanners in .NET MAUI

Folgen Sie diesen Schritten, um einem .NET MAUI-Anwendungsprojekt die QR-Code-Scan-Funktion hinzuzufügen.

Voraussetzungen

  1. Visual Studio 2022 mit installiertem .NET MAUI-Workload
  2. Ein .NET MAUI-Projekt, das Android oder iOS anvisiert

Installieren Sie IronQR

Installieren Sie die IronQR-Bibliothek mit der NuGet-Paket-Manager-Konsole in Visual Studio. Navigieren Sie zu Tools > NuGet Package Manager > Package Manager Console und führen Sie Folgendes aus:

Install-Package IronQR

Alternativ suchen Sie nach IronQR auf NuGet und installieren die neueste Version.

Front-End-Design

Das Scanner-UI besteht aus einem Button zum Auslösen der Bildauswahl, einer Bildanzeige zur Vorschau des ausgewählten QR-Codes und einem Label zur Anzeige des dekodierten Ergebnisses.

Ersetzen Sie den Inhalt von MainPage.xaml durch Folgendes:

<?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="MauiQrScanner.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Button
                x:Name="scanButton"
                Text="Select QR Code Image"
                SemanticProperties.Hint="Select Image"
                Clicked="OnScanButtonClicked"
                HorizontalOptions="Center" />

            <Image
                x:Name="qrImage"
                SemanticProperties.Description="Selected QR Code"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                x:Name="resultLabel"
                Text="Scanned Text: "
                HorizontalOptions="Center"
                VerticalOptions="Center" />

        </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="MauiQrScanner.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Button
                x:Name="scanButton"
                Text="Select QR Code Image"
                SemanticProperties.Hint="Select Image"
                Clicked="OnScanButtonClicked"
                HorizontalOptions="Center" />

            <Image
                x:Name="qrImage"
                SemanticProperties.Description="Selected QR Code"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                x:Name="resultLabel"
                Text="Scanned Text: "
                HorizontalOptions="Center"
                VerticalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

Beispiel-Input

Verwenden Sie den untenstehenden QR-Code als Testbild. Speichern Sie es auf Ihrem Gerät und wählen Sie es dann über den Dateiauswahler der App aus. Der dekodierte Wert sollte als https://ironsoftware.com angezeigt werden.

Sample QR code encoding https://ironsoftware.com for testing the .NET MAUI QR scanner

Beispiel-QR-Code — kodiert `https://ironsoftware.com`

QR-Code-Scan mit IronQR

Wenn der Scan-Button gedrückt wird, öffnet FilePicker die Bildbibliothek des Geräts. Nachdem der Benutzer ein Foto ausgewählt hat, wird der vollständige Pfad in ein AnyBitmap geladen, das an QrReader.Read() übergeben wird. Der dekodierte Wert des ersten erkannten QR-Codes wird im Ergebnislabel angezeigt.

Fügen Sie die folgende Methode zu MainPage.xaml.cs hinzu:

using IronQr;
using IronSoftware.Drawing;

private async void OnScanButtonClicked(object sender, EventArgs e)
{
    // Start scanning QR codes
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();

    var inputBmp = AnyBitmap.FromFile(imageSource);

    // Load the asset into QrImageInput
    QrImageInput imageInput = new QrImageInput(inputBmp);

    // Create a QR Reader object
    QrReader reader = new QrReader();

    // Read the input and get all embedded QR Codes
    IEnumerable<QrResult> results = reader.Read(imageInput);

    // Display the first result
    resultLabel.Text = "Scanned Text: " + results.First().Value;
}
using IronQr;
using IronSoftware.Drawing;

private async void OnScanButtonClicked(object sender, EventArgs e)
{
    // Start scanning QR codes
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
        PickerTitle = "Pick image",
        FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();

    var inputBmp = AnyBitmap.FromFile(imageSource);

    // Load the asset into QrImageInput
    QrImageInput imageInput = new QrImageInput(inputBmp);

    // Create a QR Reader object
    QrReader reader = new QrReader();

    // Read the input and get all embedded QR Codes
    IEnumerable<QrResult> results = reader.Read(imageInput);

    // Display the first result
    resultLabel.Text = "Scanned Text: " + results.First().Value;
}
Imports IronQr
Imports IronSoftware.Drawing

Private Async Sub OnScanButtonClicked(sender As Object, e As EventArgs)
    ' Start scanning QR codes
    Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
        .PickerTitle = "Pick image",
        .FileTypes = FilePickerFileType.Images
    })
    Dim imageSource = images.FullPath.ToString()

    Dim inputBmp = AnyBitmap.FromFile(imageSource)

    ' Load the asset into QrImageInput
    Dim imageInput As New QrImageInput(inputBmp)

    ' Create a QR Reader object
    Dim reader As New QrReader()

    ' Read the input and get all embedded QR Codes
    Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)

    ' Display the first result
    resultLabel.Text = "Scanned Text: " & results.First().Value
End Sub
$vbLabelText   $csharpLabel

FilePicker.Default.PickAsync wird von der MAUI-Plattformabstraktionsschicht bereitgestellt und funktioniert auf Android, iOS und Windows ohne plattformspezifischen Code. AnyBitmap.FromFile übernimmt die Bilddekodierung, und QrReader.Read gibt ein IEnumerable<QrResult> zurück, das einen Eintrag pro im Bild gefundenen QR-Code enthält.

Ausgabe

Die Auswahl eines QR-Code-Bildes löst den Scan aus. Der dekodierte Wert erscheint im Ergebnislabel unterhalb der Bildvorschau.

.NET MAUI QR Code Scanner using IronQR — app selecting a QR code image and displaying the decoded value

QR-Code ausgewählt und dekodierter Wert im Ergebnislabel angezeigt

Projekt herunterladen

Klicken Sie hier, um das vollständige MauiQrScanner-Projekt herunterzuladen.

Abschluss

In diesem Artikel haben wir gezeigt, wie man einen nativen QR-Code-Scanner in einer .NET MAUI-Anwendung mit IronQR erstellt. Die FilePicker API bietet plattformnative Bildauswahl auf Android, iOS und Windows, während IronQRs QrReader.Read das Dekodieren mit einem einzigen Aufruf übernimmt. Der gleiche Ansatz skaliert auf mehrere QR-Codes pro Bild durch Iteration über die vollständige Ergebnissammlung, anstatt .First() aufzurufen.

IronQR erfordert eine Lizenz für die Entwicklung und kommerzielle Nutzung. Lizenzdetails sind hier verfügbar.

Für einen tieferen Einblick in das Lesen von QR-Code-Eigenschaften über den Wert hinaus, sehen Sie sich die Anleitungen QR-Code-Wert lesen und QR-Code-Typ lesen an.

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
Bereit anzufangen?
Nuget Downloads 63,625 | Version: 2026.4 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronQR
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihre URL zu einem QR-Code wird.