.NET MAUI QRコードスキャナ
はじめに
.NET MAUI (.NET Multi-platform App UI) は、単一のC# コードベースからネイティブのモバイルおよびデスクトップアプリケーションを構築するためのクロスプラットフォームフレームワークです。 単一のプロジェクトでAndroid、iOS、macOS、およびWindowsをターゲットにでき、すべてのプラットフォームでUIレイアウトとビジネスロジックを共有します。 MAUI for .NETエコシステムとの統合により、開発者は慣れ親しんだツールや言語を放棄することなく、モバイルユーザーにリーチできます。
この記事では、デバイスのフォトライブラリから選択したQRコードをデコードするためにIronQRを使用して、.NET MAUIアプリケーションでネイティブQRコードスキャナを構築する方法を説明します。
.NET MAUIでQRコードスキャナを構築する方法
- モバイルでQRコードをスキャンするためにIronQR C# ライブラリをインストールします
MainPage.xamlでアプリケーションレイアウトを設計しますFilePickerを使用して、ユーザーがデバイスからQRコード画像を選択できるようにします- 画像をロードし、それを
QrImageInputにラップします Readを呼び出し、デコードされた値をLabelに表示します
IronQR: C# QR コードライブラリ
アプリケーション内でQRコードを読み取るには、IronQR .NET ライブラリを使用します。 このライブラリは、モバイルデバイスで選択されたファイルを含むあらゆる画像ソースからQRコードを検出してデコードするためのシンプルなAPIを提供します。IronQRはすべてのMAUIターゲットプラットフォームで動作し、バーコードのドメイン知識を必要とせずに統合できます。
IronQRは標準のQRコード、Micro QRコード、およびrMQRコードをデコードでき、画像入力をファイル、ストリーム、またはビットマップとして受け入れます。 NuGetパッケージマネージャを通じて数秒でインストールできます。
.NET MAUIでQRコードスキャナを構築する手順
.NET MAUIアプリケーションにQRコードスキャンを追加するために、以下の手順に従ってください。
前提条件
- .NET MAUIのワークロードがインストールされたVisual Studio 2022
- 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>
サンプル入力
以下のQRコードをテスト画像として使用します。 それをデバイスに保存し、アプリのファイルピッカーを通じて選択します。 デコードされた値は https://ironsoftware.com の形式で表示される必要があります。
サンプル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
FilePicker.Default.PickAsync は MAUI プラットフォーム抽象化レイヤーによって提供され、プラットフォーム固有のコードを一切使用せずに Android、iOS、および Windows で動作します。 AnyBitmap.FromFile は画像のデコードを処理し、QrReader.Read は画像内で検出された QR コードごとに 1 つのエントリを含む IEnumerable<QrResult> を返します。
出力
QRコード画像を選択すると、スキャンがトリガーされます。 デコードされた値が画像プレビューの下の結果ラベルに表示されます。
QRコードを選択して、デコードされた値を結果ラベルに表示します
プロジェクトをダウンロードする
結論
この記事では、.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コードスキャナーを統合する方法を示しています。

