QR-Code-Scanner for .NET MAUI
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.
Wie man einen QR-Code-Scanner in .NET MAUI erstellt
- Installieren Sie die IronQR C#-Bibliothek, um QR-Codes auf Mobilgeräten zu scannen
- Gestalten Sie das Anwendungs-Layout in
MainPage.xaml - Verwenden Sie
FilePicker, um dem Benutzer zu ermöglichen, ein QR-Code-Bild vom Gerät auszuwählen - Laden Sie das Bild und umwickeln Sie es in einem
QrImageInput - Rufen Sie
Readauf und zeigen Sie den dekodierten Wert in einemLabelan
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
- Visual Studio 2022 mit installiertem .NET MAUI-Workload
- 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>
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.
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
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.
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.

