.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;
}
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는 MAUI 플랫폼 추상화 계층에서 제공하며, 플랫폼별 코드 없이 Android, iOS 및 Windows에서 작동합니다. 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는 Android, iOS 및 Windows에서 플랫폼 고유의 이미지 선택 기능을 제공하며, IronQR의 QrReader.Read는 단일 호출로 디코딩을 처리합니다. .First()를 호출하는 대신 전체 결과 컬렉션을 반복 처리함으로써, 동일한 접근 방식을 사용하여 이미지당 여러 개의 QR 코드를 처리할 수 있습니다.

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

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

자주 묻는 질문

.NET MAUI QR 코드 스캐너 튜토리얼에 대한 내용은 무엇입니까?

.NET MAUI QR 코드 스캐너 튜토리얼은 IronQR을 사용하여 Android, iOS 및 Windows 플랫폼에서 QR 코드 스캐너를 구축하는 방법에 대한 지침을 제공합니다.

.NET MAUI QR 코드 스캐너가 지원하는 플랫폼은 무엇입니까?

.NET MAUI QR 코드 스캐너는 Android, iOS 및 Windows 플랫폼을 지원하며, 개발자가 IronQR을 사용하여 크로스 플랫폼 애플리케이션을 만들 수 있게 해줍니다.

.NET MAUI 애플리케이션에서 QR 코드 스캐닝을 위해 이미지를 선택하는 방법은 무엇입니까?

.NET MAUI 애플리케이션에서는 FilePicker 구성 요소를 사용하여 이미지를 선택할 수 있으며, 이를 IronQR의 QrReader.Read() 메서드로 처리하여 QR 코드를 디코딩할 수 있습니다.

튜토리얼에서 QR 코드를 디코딩하는 데 사용되는 함수는 무엇입니까?

튜토리얼에서는 .NET MAUI 애플리케이션에서 선택한 이미지에서 QR 코드를 디코딩하기 위해 IronQR의 QrReader.Read() 함수를 사용합니다.

크로스 플랫폼 애플리케이션에서 QR 코드 스캐닝을 위해 IronQR을 사용할 수 있습니까?

예, IronQR은 크로스 플랫폼 애플리케이션에서 사용하도록 설계되었으며, .NET MAUI 프레임워크를 사용하여 Android, iOS 및 Windows용 QR 코드 스캐너를 만들 수 있습니다.

.NET MAUI에 특정한 QR 코드 리더 함수가 있습니까?

예, 튜토리얼은 .NET MAUI 애플리케이션 내부에서 QR 코드를 읽고 디코딩하기 위해 IronQR의 QrReader.Read() 함수를 사용하는 방법을 보여줍니다.

IronQR이 모바일 장치에서 QR 코드 스캐닝을 지원 합니까?

IronQR은 모바일 장치에서 QR 코드 스캐닝을 지원하며, .NET MAUI QR 코드 스캐너 튜토리얼에서 Android와 iOS를 포함한 스캐너를 구현하는 방법을 보여줍니다.

QR 코드 스캐닝 과정에서 FilePicker의 역할은 무엇입니까?

FilePicker는 장치 저장소에서 이미지를 선택하는 데 사용되며, 이는 .NET MAUI 애플리케이션에서 QR 코드 디코딩을 위해 IronQR의 QrReader.Read()에 전달됩니다.

.NET MAUI를 사용하여 Windows 애플리케이션에 QR 코드 스캐너를 통합할 수 있습니까?

예, .NET MAUI QR 코드 스캐너 튜토리얼은 IronQR을 사용하여 Windows 애플리케이션에 QR 코드 스캐너를 통합하는 방법을 보여줍니다.

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

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

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

시작할 준비 되셨나요?
Nuget 다운로드 67,270 | 버전: 2026.5 just released
Still Scrolling Icon

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

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