.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
または、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>
サンプル入力
以下のQRコードをテスト画像として使用します。 それをデバイスに保存し、アプリのファイルピッカーを通じて選択します。 デコードされた値はhttps://ironsoftware.comとして表示されるはずです。

サンプルQRコード — https://ironsoftware.comをエンコード
IronQRによるQRコードスキャン
スキャンボタンがタップされると、FilePickerがデバイスの画像ライブラリを開きます。 ユーザーが写真を選択した後、完全なパスが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;
}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 SubFilePicker.Default.PickAsyncはMAUIプラットフォーム抽象化レイヤーによって提供されており、Android、iOS、およびWindowsでプラットフォーム固有のコードなしで動作します。 IEnumerable<QrResult>を返します。
出力
QRコード画像を選択すると、スキャンがトリガーされます。 デコードされた値が画像プレビューの下の結果ラベルに表示されます。

QRコードを選択して、デコードされた値を結果ラベルに表示します
プロジェクトをダウンロードする
完全なMauiQrScannerプロジェクトをダウンロードするにはこちらをクリックしてください。
結論
この記事では、.NET MAUIアプリケーションでIronQRを使用してネイティブのQRコードスキャナを構築する方法を示しました。 FilePicker APIはAndroid、iOS、およびWindowsでプラットフォームネイティブの画像選択を提供し、IronQRのQrReader.Readがデコードを単一の呼び出しで処理します。 同じアプローチで、.First()を呼び出す代わりに、完全な結果コレクションを反復処理することで、画像ごとに複数の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コードスキャナーを統合する方法を示しています。
What are the capabilities of the QRReader.Read method in IronQR?
The QrReader.Read method in IronQR can decode QR codes from various image sources like files, streams, or bitmaps and provides the results as an IEnumerable

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