.NET MAUI QR 코드 스캐너

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

소개

.NET MAUI (.NET 멀티 플랫폼 앱 UI)은 단일 C# 코드베이스에서 네이티브 모바일 및 데스크톱 애플리케이션을 구축하기 위한 크로스 플랫폼 프레임워크입니다. 단일 프로젝트는 Android, iOS, macOS 및 Windows를 타겟팅하여 모든 플랫폼 간에 UI 레이아웃 및 비즈니스 논리를 공유할 수 있습니다. MAUI의 .NET 생태계 통합은 개발자가 친숙한 도구나 언어를 포기하지 않고도 모바일 사용자에 도달할 수 있음을 의미합니다.

이 문서에서는 IronQR을 사용하여 장치의 사진 라이브러리에서 선택한 QR 코드를 디코딩하는 .NET MAUI 응용 프로그램에서 네이티브 QR 코드 스캐너를 구축하는 방법을 설명합니다.

IronQR: C# QR 코드 라이브러리

응용 프로그램에서 QR 코드를 읽으려면 IronQR .NET 라이브러리를 사용할 것입니다. 이는 모바일 장치에서 선택한 파일을 포함하여 모든 이미지 소스에서 QR 코드를 감지하고 디코딩하기 위한 간단한 API를 제공합니다. IronQR은 모든 MAUI 타겟 플랫폼에서 실행 가능하며 통합에 바코드 도메인 지식이 필요하지 않습니다.

IronQR은 표준 QR 코드, 마이크로 QR 코드, rMQR 코드를 디코딩할 수 있으며 파일, 스트림 또는 비트맵으로 이미지 입력을 허용합니다. 이를 NuGet 패키지 관리자를 통해 몇 초 만에 설치할 수 있습니다.

.NET MAUI에서 QR 코드 스캐너를 구축하는 단계

.NET MAUI 응용 프로그램에 QR 코드 스캔 기능을 추가하려면 다음 단계를 따르세요.

필수 조건

  1. .NET MAUI 워크로드가 설치된 Visual Studio 2022
  2. Android 또는 iOS를 타겟팅하는 .NET MAUI 프로젝트

IronQR 설치

Visual Studio의 NuGet 패키지 관리 콘솔을 사용하여 IronQR 라이브러리를 설치하세요. 다음으로 이동하여 Tools > NuGet Package Manager > Package Manager Console을 실행하십시오:

Install-Package IronQR

또는 NuGet에서 IronQR을 검색하여 최신 버전을 설치하십시오.

프론트엔드 디자인

스캐너 UI는 이미지 선택을 트리거하는 버튼, 선택된 QR 코드를 미리보기 할 수 있는 이미지 보기, 디코딩된 결과를 표시하는 레이블로 구성됩니다.

다음을 사용하여 MainPage.xaml의 내용을 교체하십시오:

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

샘플 입력

아래 QR 코드를 테스트 이미지로 사용하세요. 이를 장치에 저장한 후 앱의 파일 선택기를 통해 선택하세요. 디코딩된 값은 https://ironsoftware.com으로 표시되어야 합니다.

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

표본 QR 코드 — `https://ironsoftware.com`을 인코딩

IronQR로 QR 코드 스캔하기

스캔 버튼을 탭하면 FilePicker이(가) 디바이스의 이미지 라이브러리를 엽니다. 사용자가 사진을 선택한 후, 전체 경로가 AnyBitmap에 로드되어 QrReader.Read()에 전달됩니다. 처음으로 감지된 QR 코드에서 디코딩된 값이 결과 레이블에 표시됩니다.

다음 메서드를 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;
}
$vbLabelText   $csharpLabel

FilePicker.Default.PickAsync은(는) MAUI 플랫폼 추상화 계층에 의해 제공되며, 안드로이드, iOS 및 윈도우에서 플랫폼 특정 코드 없이 작동합니다. AnyBitmap.FromFile은(는) 이미지 디코딩을 처리하고, QrReader.Read은(는) 이미지에서 발견된 각 QR 코드당 하나의 항목이 있는 IEnumerable<QrResult>을 반환합니다.

산출

QR 코드 이미지 선택은 스캔을 트리거합니다. 디코딩된 값은 이미지 미리보기 아래의 결과 레이블에 나타납니다.

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

선택된 QR 코드와 디코딩된 값이 결과 레이블에 표시됨

프로젝트 다운로드

완전한 MauiQrScanner 프로젝트를 다운로드하려면 여기를 클릭하세요.

결론

이 기사에서는 IronQR을 사용하여 .NET MAUI 애플리케이션에서 네이티브 QR 코드 스캐너를 빌드하는 방법을 시연했습니다. FilePicker API는 안드로이드, iOS 및 윈도우에서 플랫폼 네이티브 이미지 선택을 제공하는 반면, IronQR의 QrReader.Read은(는) 단일 호출에서 디코딩을 처리합니다. 같은 접근 방식은 .First()을(를) 호출하는 대신 전체 결과 컬렉션을 반복하여 이미지 당 여러 QR 코드를 확장합니다.

IronQR은 개발 및 상업적 사용을 위한 라이선스가 필요합니다. 라이선스 세부정보는 여기에서 확인하실 수 있습니다.

값 이상의 QR 코드 속성 읽기에 대한 심층적인 정보를 원하시면 QR 코드 값 읽기QR 코드 유형 읽기 가이드를 참조하십시오.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 61,359 | 버전: 2026.3 방금 출시되었습니다
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronQR
샘플을 실행하세요 URL이 QR 코드로 바뀌는 것을 확인해 보세요.