IRONQRの使用

QRコードスキャナーのための.NET MAUI の使い方

更新済み 7月 1, 2024
共有:

イントロダクション

モバイルコンピューティングが普及した今、QRコードはスムーズで迅速な情報共有のために必要なツールになりつつある。 QRコードは、デジタル決済から製品パッケージまで、あらゆるものに使われている。 開発者としてモバイルアプリケーションにQRコードスキャン機能を追加することは、ユーザーエクスペリエンスを向上させ、多くのチャンスにつながります。 この投稿では、IronQRを使用して .NET MAUI のバーコードスキャナーおよび QR コードリーダーを作成する方法を説明します。

.NET MAUI QRコードスキャナーの使い方:図1 - (アイアンQR):C# QRコードライブラリ

QRコードスキャナーのための.NET MAUI の使い方

  1. .NET MAUIとIronQR (アイアンQR) NuGetパッケージのインストール

  2. メインページのレイアウトを作成する

  3. カメラの初期化

  4. キャプチャ画像

  5. QRコードを読む

  6. 表示結果

  7. パーミッションの取り扱い

.NET MAUIを理解する

.NET Multi-platform App UIと呼ばれるフレームワーク (.NET MAUI) により、C#(シーシャープ)とXAMLを使用してネイティブのクロスプラットフォームアプリケーションを作成できます。 1つのコードベースだけで、開発者はWindows、macOS、iOS、Android向けのアプリを制作できるようになった。 .NET MAUIは、ネイティブデバイスの機能にアクセスするための統一されたAPIを提供し、クロスプラットフォームアプリケーションの作成プロセスを容易にします。 .NET MAUIを開発者にとって効果的なツールにしている主な要素を以下に挙げる:

単一プロジェクト体制

プラットフォーム固有のプロジェクトは、.NET MAUIを使用して統一されたプロジェクト構造にまとめられます。 この統合により、開発者はすべてのプラットフォーム固有のリソースとコードを1つのプロジェクトで扱うことができ、開発プロセスが合理化される。

クロスプラットフォームのユーザーインターフェース

単一のユーザーインターフェイスをデザインすることもできます。 (ユーザーインターフェース (UI)) .NETのMAUIで複数のプラットフォームで動作する。 このフレームワークは、Windows、macOS、iOS、Androidと互換性のあるレイアウトとコントロールのコレクションを提供する。

ネイティブ・アクセスと統合

.NET MAUIの助けを借りて、開発者はネイティブAPIとプラットフォーム固有の機能を利用することができ、センサー、カメラ、GPS、その他のデバイス機能を使用することができます。 こうすることで、アプリはコードベースの多くをプラットフォーム間で共有しながら、ネイティブなユーザー体験を提供することができる。

ホット・リロード

.NET MAUIはXAMLとC#(シーシャープ)のホットリロードをサポートします。 この機能を使えば、開発者はプログラムを再起動することなく、UIの変更を瞬時に確認することができる。 ホット・リロードは、迅速な反復と即時のフィードバックを促進し、開発プロセスをスピードアップします。

Blazorの統合

Blazorと.NET MAUI間の統合により、開発者はBlazorコンポーネントを使用してハイブリッドアプリを作成することができます。この統合により、Blazorのウェブ開発能力とMAUIのネイティブモバイル開発の専門知識を組み合わせることで、最新のアプリケーションの作成が柔軟になります。

資源管理

.NET MAUIによって、複数のプラットフォームにまたがる画像、フォント、スタイルなどのリソースの管理が容易になる。 リソースを一度だけ定義することで、開発者はすべてのターゲット・プラットフォームでリソースを利用することができ、冗長性を最小限に抑え、一貫した外観と感触を保証することができる。

依存性注入

依存性注入は、.NET MAUIですぐにサポートされ、開発者がよりテストされ保守可能なコードを構築するのに役立ちます。 明確な役割分担とモジュラー・アーキテクチャーを必要とする複雑なアプリケーションの構築には、この機能が必要だ。

IronQRとは何ですか?

QRコードを作成し読み取るための堅牢で適応性の高い.NET用ライブラリがIronQR(アイアンQR)です。 QRコードの作成と読み取りの両方に信頼性が高く使いやすい機能を提供することで、.NETアプリケーションでQRコードを利用するプロセスを合理化します。 IronQRを含むIronソフトウェアパッケージは、.NETプログラミングを改善するために設計されたライブラリのコレクションである。

IronQR (アイアンQR)の特徴

IronQR (アイアンQR)はQRコードを扱う開発者にとって便利なツールです。 ここでは、その主な特徴をいくつか紹介しよう:

QRコード生成

IronQR (アイアンQR)はQRコードを簡単に作成できます。 開発者は、テキスト、URL、その他の種類のデータからQRコードを迅速かつ効果的に生成することができます。

  • 優れたQRコード: 当ライブラリーは、デジタル・ディスプレイや印刷など、さまざまな用途に適した高品質・高解像度のQRコードを作成します。
  • **色、サイズ、余白など、QRコードの外観を変更することができます。

QRコード読み取り

IronQR (アイアンQR)は、画像やストリームからQRコードを読み取るための強力な機能を提供します。

  • **JPEG、PNG、BMP、GIFは、ライブラリがQRコードを読み取ることができる画像フォーマットのほんの一部です。
  • **アイアンQRは高度なエラー訂正機能を内蔵しており、QRコードの一部が破損していたり、見えにくくなっていても正しく読み取ることができます。

高度なカスタマイズ

アイアンQRが提供する幅広いカスタマイズの可能性により、開発者はニーズに合わせたQRコードを作成、解釈することができます。

  • スタイル:あなたは、QRコードにロゴや写真を追加し、背景と前景の色を変更することができます。
  • データエンコーディング: 複数のデータエンコーディングオプションをサポートすることで、複数の情報フォーマットとの相互運用性を提供します。

バッチ処理

IronQR (アイアンQR)はバッチ処理に対応しており、同時に複数のQRコードの作成と読み取りが可能です。 大量のQRコードを効率的に処理する必要があるアプリケーションでは、この機能が特に役立つだろう。

パフォーマンスと効率

ライブラリーの高性能設計により、QRコードの作成と読み取りが迅速に行える。 QRコードをリアルタイムで処理する必要があるアプリにとって、これは極めて重要だ。

.NETエコシステムとの統合

IronQR (アイアンQR)は、.NET環境とのスムーズな統合により、ASP.NET、Windowsフォーム、WPF、Xamarinなどの.NETアプリケーションで簡単に使用できます。

.NET MAUIアプリケーション入門

C#.NET MAUIアプリケーションを作成するには、Visual Studio 2022と.NET 6フレームワークのインストールが必要です。 そして、.NET MAUIアプリを構築するために、次のステップに進みます。

Visual Studio を開く

Visual Studioを開いたら「新規プロジェクトの作成」ボタンをクリックします。 次に、検索バーで".NET MAUI project "を検索する。

.NET MAUI QRコードスキャナーの使い方:図2 - 新規プロジェクトの作成

.NET MAUIアプリを選択

Visual Studioの検索結果から.NET MAUIアプリ・テンプレートを選択します。 それが決まったら、それにふさわしい名前をつけ、プロジェクトの開催場所を決める。 設定後、「次へ」ボタンを押す。

.NET MAUI QRコードスキャナーの使い方:図3 - .NET MAUIアプリ・テンプレートの選択

フレームワークを選択

必要なフレームワークを選択してください。 とはいえ、.NETフレームワークの最新版を使用することをお勧めします。 Visual Studioでフレームワークのバージョンを選択したら、「作成」をクリックします。

.NET MAUI QRコードスキャナーの使い方:図4-希望するフレームワークを選択する

IronQR (アイアンQR)のインストール

ツール -> NuGetパッケージマネージャ`の下にあるパッケージマネージャコンソールに移動します。 表示されたコマンドライン・パネルで、以下のコマンドを入力し、ENTERを押す:

Install-Package IronQR

前述のコマンドは、実行中のプロジェクトにライブラリをインストールし、ダウンロードする。

QRコード・スキャナーの構築

ユーザーインターフェースの作成は、QRコードスキャナー開発の初期段階である。 QRコードのスキャンプロセスを開始するボタンと、スキャンされたQRコードを表示する画像は、基本的なユーザーインターフェースの一部となります。 (ユーザーインターフェース (UI)) XAMLを使って構築します。

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiQrScanner.MainPage">
    <StackLayout Padding="20" VerticalOptions="Center">
        <Button Text="Scan QR Code" Clicked="OnScanButtonClicked"/>
        <Image x:Name="QrCodeImage" WidthRequest="200" HeightRequest="200" VerticalOptions="CenterAndExpand"/>
        <Label x:Name="QrCodeResult" Text="Scan Result" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
    </StackLayout>
</ContentPage>

そして、IronQR(アイアンQR)を使ってQRコードを読み取る機能を実装しなければならない。 ボタンをクリックするイベントを処理する関数を書いて、QRコードをデバイスのカメラで撮影する。

MainPage.xaml.csを開いたら、以下のコードを追加する:

using IronQr;
using IronSoftware.Drawing;
using Microsoft.Maui.Controls;
using System;
using System.IO;
using System.Threading.Tasks;

namespace MauiAppQR
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private async void OnScanButtonClicked(object sender, EventArgs e)
        {
            var result = await CaptureAndScanQrCode();
            QrCodeResult.Text = result ?? "No QR code found.";
        }

        private async Task<string> CaptureAndScanQrCode()
        {
            try
            {
                var photo = await MediaPicker.CapturePhotoAsync();
                if (photo == null)
                    return null;

                using var stream = await photo.OpenReadAsync();
                using var memoryStream = new MemoryStream();
                await stream.CopyToAsync(memoryStream);
                var imageData = memoryStream.ToArray();

                QrReader reader = new QrReader();
                var inputBmp = AnyBitmap.FromBytes(imageData);
                QrImageInput imageInput = new QrImageInput(inputBmp);

                var barcodeResult = reader.Read(imageInput);

                if (barcodeResult?.Count > 0)
                {
                    QrCodeImage.Source = ImageSource.FromStream(() => new MemoryStream(imageData));
                    return barcodeResult.First().Value;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error scanning QR code: {ex.Message}");
            }
            return null;
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
using Microsoft.Maui.Controls;
using System;
using System.IO;
using System.Threading.Tasks;

namespace MauiAppQR
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private async void OnScanButtonClicked(object sender, EventArgs e)
        {
            var result = await CaptureAndScanQrCode();
            QrCodeResult.Text = result ?? "No QR code found.";
        }

        private async Task<string> CaptureAndScanQrCode()
        {
            try
            {
                var photo = await MediaPicker.CapturePhotoAsync();
                if (photo == null)
                    return null;

                using var stream = await photo.OpenReadAsync();
                using var memoryStream = new MemoryStream();
                await stream.CopyToAsync(memoryStream);
                var imageData = memoryStream.ToArray();

                QrReader reader = new QrReader();
                var inputBmp = AnyBitmap.FromBytes(imageData);
                QrImageInput imageInput = new QrImageInput(inputBmp);

                var barcodeResult = reader.Read(imageInput);

                if (barcodeResult?.Count > 0)
                {
                    QrCodeImage.Source = ImageSource.FromStream(() => new MemoryStream(imageData));
                    return barcodeResult.First().Value;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error scanning QR code: {ex.Message}");
            }
            return null;
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.Maui.Controls
Imports System
Imports System.IO
Imports System.Threading.Tasks

Namespace MauiAppQR
	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			InitializeComponent()
		End Sub

		Private Async Sub OnScanButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
			Dim result = Await CaptureAndScanQrCode()
			QrCodeResult.Text = If(result, "No QR code found.")
		End Sub

		Private Async Function CaptureAndScanQrCode() As Task(Of String)
			Try
				Dim photo = Await MediaPicker.CapturePhotoAsync()
				If photo Is Nothing Then
					Return Nothing
				End If

				Dim stream = Await photo.OpenReadAsync()
				Dim memoryStream As New MemoryStream()
				Await stream.CopyToAsync(memoryStream)
				Dim imageData = memoryStream.ToArray()

				Dim reader As New QrReader()
				Dim inputBmp = AnyBitmap.FromBytes(imageData)
				Dim imageInput As New QrImageInput(inputBmp)

				Dim barcodeResult = reader.Read(imageInput)

				If barcodeResult?.Count > 0 Then
					QrCodeImage.Source = ImageSource.FromStream(Function() New MemoryStream(imageData))
					Return barcodeResult.First().Value
				End If
			Catch ex As Exception
				Console.WriteLine($"Error scanning QR code: {ex.Message}")
			End Try
			Return Nothing
		End Function
	End Class
End Namespace
VB   C#
  • OnScanButtonClicked:ユーザが "Scan QR Code "ボタンを押すと、このメソッドが呼び出される。 デバイスのカメラを使って写真を撮り、QRコードを検索するには、CaptureAndScanQrCode`関数を呼び出す。
  • CaptureAndScanQrCode`:このメソッドはデバイスのカメラを使って写真を撮り、IronQR (アイアンQR) を使って写真からQRコードを読み取る。

    • MediaPicker.CapturePhotoAsync`:このAPIはデバイスのカメラを使って写真を撮る。

    • MemoryStreamを使う:IronQR (アイアンQR)が読みやすいように、キャプチャした画像はMemoryStream` にロードされる。

    • QrReader.Read:IronQR (アイアンQR) メソッドは画像情報からQRコードを読み込む。

    • ImageSourceを指定する:QRコードが見つかった場合、QRコードのテキストがQrCodeResultラベルに表示され、画像がQrCodeImage` 要素に表示される。

パーミッションの取り扱い

デバイスのカメラにアクセスするには、正しい認証が必要です。 iOSとAndroidのプロジェクトファイルを更新して、必要なパーミッション要求を行う。

**アンドロイド

AndroidManifest.xml`にアクセスし、認可を含める:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
XML

MainActivity.cs`でパーミッションを要求する:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Platform.Init(this, savedInstanceState);
    Xamarin.Essentials.Platform.RequestPermissions(this, new string[] 
    {
        Android.Manifest.Permission.Camera,
        Android.Manifest.Permission.WriteExternalStorage,
        Android.Manifest.Permission.ReadExternalStorage
    });
}
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Platform.Init(this, savedInstanceState);
    Xamarin.Essentials.Platform.RequestPermissions(this, new string[] 
    {
        Android.Manifest.Permission.Camera,
        Android.Manifest.Permission.WriteExternalStorage,
        Android.Manifest.Permission.ReadExternalStorage
    });
}
Protected Overrides Sub OnCreate(ByVal savedInstanceState As Bundle)
	MyBase.OnCreate(savedInstanceState)
	Platform.Init(Me, savedInstanceState)
	Xamarin.Essentials.Platform.RequestPermissions(Me, New String() { Android.Manifest.Permission.Camera, Android.Manifest.Permission.WriteExternalStorage, Android.Manifest.Permission.ReadExternalStorage })
End Sub
VB   C#

以下は、Windowsマシン環境から生成された出力である。

.NET MAUI QRコードスキャナの使い方:図5 - QRコードのスキャンをクリック

スキャン後、完了した結果がラベルに表示されます。

.NET MAUI QRコード・スキャナーの使い方:図6 - IronQR (アイアンQR)を使ってQRコードをスキャンした出力例

結論

.NET MAUIとIronQRを使用して.NET MAUI QRコードスキャナーを作成するのは簡単なプロセスですが、モバイルアプリの機能を大幅に向上させることができます。IronQR (アイアンQR)のQRコード処理用の強力な機能と.NET MAUIのクロスプラットフォーム機能により、Windows、iOS、macOS、Android用の効果的で信頼性の高いQRコードスキャナーを構築することができます。

IronQR (アイアンQR)と.NET用アイアンQR(MAUI)を組み合わせることで、スムーズな開発プロセスを提供し、最先端機能の作成と一流のアプリケーションの作成に集中することができます。 このチュートリアルでは、簡単なQRコードスキャナーから最先端のQRコード機能を備えた高度なアプリケーションまで、どのようなアプリケーションを作成する場合でも、簡単に始めることができる強力な基礎を提供します。

開発プロセスをさらに合理化したい場合は、QRコードの要件にIronQR (アイアンQR)を使用することをご検討ください。 IronQR(アイアンQR)は困難な状況下でも、鮮明で拡張性のあるQRコードを作成し、強力な読み取り能力を発揮します。 IronQR (アイアンQR)は、個人開発者、小規模チーム、大企業向けにカスタマイズ可能なライセンス形態で、お客様独自のニーズに合ったソリューションを提供します。 アイアンソフトウェア(IronQR)は、あなたのアプリケーションをさらに進化させます。

Iron Software Suite(アイアンソフトウェア)の他の類似製品では、IronBarcode(アイアンバーコード)がバーコードをスキャンするカウンターパートとなります。 IronBarcodeを使用すると、高性能なバーコードスキャン機能をアプリケーションにシームレスに統合することができます。

次へ >
ASP .NET CoreでQRコードを生成する方法

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 14,256 View Licenses >