Skaner kodów QR .NET MAUI

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

Wprowadzenie

.NET MAUI (.NET Multi-platform App UI) to multiplatformowy framework do tworzenia natywnych aplikacji mobilnych i desktopowych z jednego kodu źródłowego w C#. Jeden projekt może celować w Androida, iOS, macOS i Windows, udostępniając układy interfejsu użytkownika i logikę biznesową na wszystkich platformach. Integracja MAUI z ekosystemem .NET oznacza, że programiści mogą dotrzeć do użytkowników mobilnych bez rezygnacji z znanych narzędzi lub języków.

W tym artykułe wyjaśnimy, jak zbudować natywny skaner kodów QR w aplikacji .NET MAUI, używając IronQR do dekodowania kodów QR wybranych z biblioteki zdjęć urządzenia.

IronQR: C# Biblioteka kodów QR

Aby odczytywać kody QR w aplikacji, użyjemy biblioteki IronQR dla .NET. Zapewnia ona prosty API do wykrywania i dekodowania kodów QR z dowolnego źródła obrazów, w tym plików wybranych na urządzeniu mobilnym. IronQR działa na wszystkich platformach docelowych MAUI i nie wymaga wiedzy domenowej o kodach kreskowych do integracji.

IronQR może dekodować standardowe kody QR, Micro QR i kody rMQR, przyjmując wejście obrazów jako pliki, strumienie lub bitmapy. Można ją zainstalować w kilka sekund za pomocą Menedżera pakietów NuGet.

Kroki budowy skanera kodów QR w .NET MAUI

Postępuj według tych kroków, aby dodać skanowanie kodu QR do aplikacji .NET MAUI.

Wymagania wstępne

  1. Visual Studio 2022 z zainstalowanym środowiskiem pracy .NET MAUI
  2. Projekt .NET MAUI celujący w Androida lub iOS

Zainstaluj IronQR

Zainstaluj bibliotekę IronQR za pomocą NuGet Package Manager Console w Visual Studio. Przejdź do Tools > NuGet Package Manager > Package Manager Console i uruchom:

Install-Package IronQR

Alternatywnie, wyszukaj IronQR w NuGet i zainstaluj najnowszą wersję.

Projektowanie front-endu

Interfejs użytkownika skanera składa się z przycisku do wyzwalania wyboru obrazu, widoku obrazu do podglądu wybranego kodu QR oraz etykiety do wyświetlania zdekodowanego wyniku.

Zastąp treść MainPage.xaml następującym tekstem:

<?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

Przykładowe dane wejściowe

Użyj poniższego kodu QR jako obrazu testowego. Zapisz to na swoim urządzeniu, a następnie wybierz przez selektor plików aplikacji. Wynik dekodowania powinien wyglądać następująco: https://ironsoftware.com.

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

Przykładowy kod QR — koduje https://ironsoftware.com

Skanowanie kodów QR za pomocą IronQR

Po naciśnięciu przycisku skanowania FilePicker otwiera bibliotekę obrazów urządzenia. Po wybraniu zdjęcia przez użytkownika pełna ścieżka jest ładowana do AnyBitmap, która jest przekazywana do QrReader.Read(). Zdekodowana wartość z pierwszego wykrytego kodu QR jest wyświetlana w etykiecie wyników.

Dodaj następującą metodę do MainPage.xaml.cs:

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 jest dostarczany przez warstwę abstrakcji platformy MAUI i działa na systemach Android, iOS oraz Windows bez konieczności stosowania kodu specyficznego dla danej platformy. AnyBitmap.FromFile obsługuje dekodowanie obrazów, a QrReader.Read zwraca IEnumerable<QrResult> z jednym wpisem na każdy kod QR znaleziony na obrazie.

Wynik

Wybranie obrazu kodu QR wyzwala skanowanie. Zdekodowana wartość pojawia się w etykiecie wyników poniżej podglądu obrazu.

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

Kod QR wybrany, a zdekodowana wartość wyświetlona w etykiecie wyniku

Pobierz projekt

Kliknij tutaj, aby pobrać kompletny projekt MauiQrScanner.

Wnioski

W tym artykułe pokazaliśmy, jak zbudować natywny skaner kodów QR w aplikacji .NET MAUI, używając IronQR. Interfejs API FilePicker zapewnia natywny dla platformy wybór obrazów w systemach Android, iOS i Windows, natomiast QrReader.Read firmy IronQR obsługuje dekodowanie w ramach jednego wywołania. To samo podejście można zastosować do wielu kodów QR na jednym obrazie, iterując przez pełny zbiór wyników zamiast wywoływać .First().

IronQR wymaga licencji do użytku w środowisku deweloperskim i komercyjnym. Szczegóły licencji dostępne tutaj.

Aby szczegółowo przyjrzeć się odczytywaniu właściwości kodu QR poza wartością, zobacz przewodniki Read QR Code Value i Read QR Code Type.

Często Zadawane Pytania

O czym jest Samouczek skanera QR kodow .NET MAUI?

Samouczek skanera QR kodow .NET MAUI dostarcza wskazowek dotyczących budowania skanera kodow QR z uzyciem IronQR, z instrukcjami dostosowanymi do aplikacji .NET MAUI na platformach Android, iOS i Windows.

Ktore platformy sa obslugiwane przez skaner kodow QR .NET MAUI?

Skaner kodow QR .NET MAUI obsluguje platformy Android, iOS i Windows, pozwalajac programistom na tworzenie aplikacji wieloplatformowych z uzyciem IronQR.

Jak moge wybrac obrazy do skanowania kodow QR w aplikacji .NET MAUI?

Mozesz uzyc komponentu FilePicker w aplikacji .NET MAUI, aby wybrac obrazy, ktore nastepnie moga byc przetwarzane przez metode QrReader.Read() IronQR do dekodowania kodow QR.

Jaka funkcja jest uzywana do dekodowania kodow QR w samouczku?

W samouczku do dekodowania kodow QR z wybranych obrazow w aplikacji .NET MAUI uzywana jest funkcja QrReader.Read() z IronQR.

Czy moge uzyc IronQR do skanowania kodow QR w aplikacji multiplatformowej?

Tak, IronQR jest zaprojektowane do uzytku w aplikacjach multiplatformowych, a za pomoca frameworka .NET MAUI mozesz tworzyc skanery kodow QR dla platform Android, iOS i Windows.

Czy istnieje specyficzna funkcja czytnika kodow QR dla .NET MAUI?

Tak, samouczek pokazuje, jak uzywac funkcji QrReader.Read() z IronQR w aplikacji .NET MAUI do odczytu i dekodowania kodow QR.

Czy IronQR obsluguje skanowanie kodow QR na urzadzeniach mobilnych?

IronQR obsluguje skanowanie kodow QR na urzadzeniach mobilnych, w tym Android i iOS, co jest widoczne w Samouczku skanera kodow QR .NET MAUI.

Jaka jest rola FilePicker w procesie skanowania kodow QR?

FilePicker sluzy do wyboru obrazow z pamieci urzadzenia, ktore nastepnie sa przekazywane do QrReader.Read() IronQR w aplikacji .NET MAUI do dekodowania kodow QR.

Czy jest mozliwe zintegrowanie skanera kodow QR z aplikacja Windows uzywajac .NET MAUI?

Tak, Samouczek skanera kodow QR .NET MAUI pokazuje, jak zintegrowac skaner kodow QR z aplikacja Windows uzywajac IronQR.

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ę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 67,270 | Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronQR
uruchom próbkę obserwuj, jak Twój URL staje się kodem QR.