.NET MAUI QRコードスキャナ

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

はじめに

.NET MAUI (.NET Multi-platform App UI) は、単一のC# コードベースからネイティブのモバイルおよびデスクトップアプリケーションを構築するためのクロスプラットフォームフレームワークです。 単一のプロジェクトでAndroid、iOS、macOS、およびWindowsをターゲットにでき、すべてのプラットフォームでUIレイアウトとビジネスロジックを共有します。 MAUI for .NETエコシステムとの統合により、開発者は慣れ親しんだツールや言語を放棄することなく、モバイルユーザーにリーチできます。

この記事では、デバイスのフォトライブラリから選択したQRコードをデコードするためにIronQRを使用して、.NET MAUIアプリケーションでネイティブQRコードスキャナを構築する方法を説明します。

IronQR: C# QR コードライブラリ

アプリケーション内でQRコードを読み取るには、IronQR .NET ライブラリを使用します。 このライブラリは、モバイルデバイスで選択されたファイルを含むあらゆる画像ソースからQRコードを検出してデコードするためのシンプルなAPIを提供します。IronQRはすべてのMAUIターゲットプラットフォームで動作し、バーコードのドメイン知識を必要とせずに統合できます。

IronQRは標準のQRコード、Micro 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

あるいは、NuGetIronQR を検索し、最新バージョンをインストールしてください。

フロントエンドデザイン

スキャナの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 コードごとに 1 つのエントリを含む IEnumerable<QrResult> を返します。

出力

QRコード画像を選択すると、スキャンがトリガーされます。 デコードされた値が画像プレビューの下の結果ラベルに表示されます。

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

QRコードを選択して、デコードされた値を結果ラベルに表示します

プロジェクトをダウンロードする

完全なMauiQrScannerプロジェクトをダウンロードするにはこちらをクリックしてください。

結論

この記事では、.NET MAUIアプリケーションでIronQRを使用してネイティブのQRコードスキャナを構築する方法を示しました。 FilePicker APIは、Android、iOS、およびWindows上でプラットフォーム固有の画像選択機能を提供し、IronQRのQrReader.Readは単一の呼び出しでデコードを処理します。 .First() を呼び出す代わりに、結果コレクション全体を反復処理することで、このアプローチを 1 つの画像に複数の QR コードが含まれる場合にも拡張できます。

IronQRは開発および商用利用のためにライセンスが必要です。 ライセンスの詳細はこちらでご覧いただけます。

値を超えてQRコードのプロパティを読み取る詳しい説明は、QRコードの値を読むおよびQRコードのタイプを読むガイドをご覧ください。

よくある質問

.NET MAUI QR Code Scanner Tutorialは何について教えてくれますか?

.NET MAUI QR Code Scanner Tutorialは、IronQRを使用してQRコードスキャナーを構築するためのガイダンスを提供し、Android、iOS、およびWindowsプラットフォームで for .NET MAUIアプリケーション向けにカスタマイズされた手順を示しています。

.NET MAUI QR Code Scannerがサポートするプラットフォームはどれですか?

.NET MAUI QR Code Scannerは、Android、iOS、およびWindowsプラットフォームをサポートし、開発者がIronQRを使用してクロスプラットフォームのアプリケーションを作成できるようにします。

.NET MAUIアプリケーションでQRコードスキャン用の画像を選択するにはどうすればよいですか?

.NET MAUIアプリケーションでは、FilePickerコンポーネントを使用して画像を選択でき、その後IronQRのQrReader.Read()メソッドによってQRコードをデコードできます。

チュートリアルでQRコードをデコードするために使用される関数は何ですか?

チュートリアルでは、IronQRのQrReader.Read()関数を使用して、.NET MAUIアプリケーション内の選択された画像からQRコードをデコードします。

クロスプラットフォームアプリケーションでQRコードスキャンにIronQRを使用できますか?

はい、IronQRはクロスプラットフォームアプリケーションで使用するように設計されており、.NET MAUIフレームワークを使用してAndroid、iOS、およびWindows用のQRコードスキャナーを作成できます。

.NET MAUIに特化したQRコードリーダー関数はありますか?

はい、チュートリアルでは、.NET MAUIアプリケーション内でIronQRのQrReader.Read()関数を使用してQRコードを読み取ってデコードする方法を示しています。

IronQRはモバイルデバイスでのQRコードスキャンをサポートしていますか?

IronQRはモバイルデバイスでのQRコードスキャンをサポートしており、.NET MAUI QR Code Scanner TutorialでAndroidおよびiOSでの使用が示されています。

QRコードスキャンプロセスにおけるFilePickerの役割とは何ですか?

FilePickerはデバイスストレージから画像を選択するために使用され、その後IronQRのQrReader.Read()によってQRコードのデコードが行われます。

.NET MAUIを使用してWindowsアプリケーションにQRコードスキャナーを統合することは可能ですか?

はい、.NET MAUI QR Code Scanner Tutorialでは、IronQRを使用してWindowsアプリケーションにQRコードスキャナーを統合する方法を示しています。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 67,270 | バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronQR
サンプルを実行する URL が QR コードになるのを見る。