IRONQRの使用

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

ジョルディ・バルディア
ジョルディ・バルディア
2024年6月6日
共有:

イントロダクション

QRコードは、情報を保存し送信する便利な方法を提供し、現代技術に不可欠な要素となっている。 Web開発では、ASP.NETコアでIronQRを使用して実装するようなQRコードジェネレータは、動的なQRコード作成のための堅牢な機能を提供します。 QRコードジェネレーターは、発券システム、認証、在庫管理など、さまざまな用途で重宝されています。 この記事では、この目的のために設計された強力なライブラリであるIronQRを使用して、ASP.NET CoreでQRコードを作成するプロセスを掘り下げます。 ASP.NET Coreは、Webアプリケーションを構築するための汎用的なフレームワークであり、QRコードを生成するための堅牢な機能を提供しています。 この記事では、Iron Softwareの強力なQRコード生成ライブラリであるIronQRを使用して、ASP.NET CoreでQRコードを作成するプロセスを詳しく見ていきます。

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

  1. Visual Studioを使ってASP.NETプロジェクトを作成する

  2. パッケージマネージャーからIronQRライブラリをインストール

  3. QRコードを生成

  4. フォーマット付きQRコードの生成

IronQRを理解する

IronQR は、.NET アプリケーション向けの高性能なQRコード生成ライブラリです。 QRコードを生成するためのシンプルで直感的なAPIを提供し、様々なカスタマイズが可能です。 IronQRは.NETスタンダードをサポートしており、ASP.NET Coreを含む幅広いプラットフォームと互換性があります。 IronQRを使えば、開発者は様々なデータタイプ、エラー訂正レベル、サイズ、フォーマットのQRコードを簡単に生成することができます。

主な機能

1.QRコードの読み取りと作成

IronQRはQRコードを簡単に生成し、読み取ることができます。 QRコードを動的に作成する場合でも、既存のQRコードから情報を抽出する場合でも、このライブラリにお任せください。

2.ユーザーフレンドリーなAPI

このライブラリは、開発者が.NETプロジェクトにバーコード機能を素早く統合できるように、ユーザーフレンドリーなAPIを提供します。 わずか数分でQRコードを使い始めることができます。

3.互換性

IronQR は、以下を含むさまざまな .NET バージョンをサポートしています。

  1. C#、VB.NET、F#

  2. .NET Core(8、7、6、5、および3.1+)。

  3. .NET Standard (2.0+)

  4. .NET Framework (4.6.2+)

    それは、ウェブ (Blazor & WebForms)、モバイル (Xamarin & MAUI)、デスクトップ (WPF & MAUI)、およびコンソール アプリケーションを含む広範囲のプロジェクトタイプをカバーしています。

4.QR検出のための機械学習モデル

IronQRは高度なカスタム機械学習モデルを使ってQRコードを検出します。 これにより、正確で信頼性の高いコード認識が保証される。 さらに、軽量アプローチを好む人のために、Slim Mode オプション(非ML)が利用可能です。

5.QRコードの読み取り

様々な画像フォーマットからQRコードを読み取ることができます:

  1. 画像 (jpg、png、svg、bmp)

  2. マルチページ画像 (gif, tif, tiff)

  3. System.Drawing ビットマップ

  4. IronDrawing 画像 (AnyBitmap)

6.QRコードの作成

IronQRでは、以下のような様々なドキュメントタイプのQRコードを作成することができます:

  1. 画像 (jpg, png, gif, tiff, bmp)

  2. System.Drawing イメージ

  3. ストリーム (MemoryStream, byte[])

  4. PDF(既存のPDFにスタンプ)

7.QRコードのスタイリング

サイズ変更、余白と境界線の調整、再カラーリング、ロゴの追加によりQRコードをカスタマイズする

8.エラー処理と訂正

IronQR は詳細なエラーメッセージを提供し、カスタムQRエラー訂正レベルをサポートします。

この知識をもとに、ASP.NETコアでQRコードを生成するアプリケーションを始めてみましょう。

ステップ1:Visual Studioを使用して新しいASP.NETプロジェクトを作成する

QRコード生成に入る前に、新しいASP.NETコアプロジェクトをセットアップしましょう。 以下は、新しいプロジェクトを開始する手順である:

Visual Studioで新規プロジェクトを作成し、ASP.NETコアWebアプリケーションテンプレートを選択します。

ASP.NET CoreでQRコードを生成する方法: 図1 - ASP.NET CORE Webアプリケーションテンプレートを選択

プロジェクト名と所在地を記入

ASP .NET CoreでQRコードを生成する方法: 図2 - プロジェクトの名前と保存先を指定します

必要な .NET バージョンを選択してください。

ASP .NET CoreでQRコードを生成する方法: 図3 - 正しい.NETバージョンを選択します。

create "ボタンをクリックすると、テンプレートからアプリケーション・コードが生成されます。

ASP .NET CoreでQRコードを生成する方法: 図4 - テンプレートコードを生成するために「作成」ボタンをクリックします

ステップ2: パッケージマネージャからIronQRライブラリをインストールする。

以下に示すように、Visual Studio Package ManagerからIronQRライブラリをインストールします。

ASP .NET CoreでQRコードを生成する方法: 図5 - Visual Studio パッケージ マネージャーを使用してIronOCRを検索し、インストールする

IronQR は、NuGet パッケージ マネージャーを使用してインストールすることもできます。

ASP .NET CoreでQRコードを生成する方法: 図6 - NuGetパッケージマネージャーを使用してIronOCRを検索

ステップ3:QRコードの作成

では、QRコード・アプリを作ってみよう。

QRCodeモデルを作成

using System.ComponentModel.DataAnnotations;
namespace GenerateQRCode.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Enter QR Code Text")]
        public string QRCodeText
        {
            get;
            set;
        }
    }
}
using System.ComponentModel.DataAnnotations;
namespace GenerateQRCode.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Enter QR Code Text")]
        public string QRCodeText
        {
            get;
            set;
        }
    }
}
Imports System.ComponentModel.DataAnnotations
Namespace GenerateQRCode.Models
	Public Class QRCodeModel
		<Display(Name := "Enter QR Code Text")>
		Public Property QRCodeText() As String
	End Class
End Namespace
$vbLabelText   $csharpLabel

QRコードコントローラの作成

新しいコントローラを追加するには、コントローラフォルダを右クリックし、以下のように名前を指定します。

ASP .NET CoreでQRコードを生成する方法: 図7 - フォルダーをクリックして新しいコントローラーを追加し、名前を付ける

空のコントローラを選択します。

ASP .NET CoreでQRコードを生成する方法: 図8 - プロンプトで空のコントローラーをクリック

名前を記入してください。

ASP .NET CoreでQRコードを生成する方法: 図9 - コントローラーに名前を付ける

次に、以下のコードをコントローラに統合する。

using GenerateQRCode.Models;
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace GenerateQRCode.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult CreateQRCode(QRCodeModel generateQRCode)
        {
            try
            {
                string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
                // Create a QR Code object
                QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText);
                // Save QR Code as a Bitmap
                AnyBitmap qrImage = myQr.Save();
                // Save QR Code Bitmap as File
                qrImage.SaveAs(filePath);
                string fileName = Path.GetFileName(filePath); // qr code file
                string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
                ViewBag.QrCodeUri = imageUrl;
            }
            catch (Exception)
            {
                throw;
            }
            return View();
        }
    }
}
using GenerateQRCode.Models;
using IronQr;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace GenerateQRCode.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        public IActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public IActionResult CreateQRCode(QRCodeModel generateQRCode)
        {
            try
            {
                string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
                // Create a QR Code object
                QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText);
                // Save QR Code as a Bitmap
                AnyBitmap qrImage = myQr.Save();
                // Save QR Code Bitmap as File
                qrImage.SaveAs(filePath);
                string fileName = Path.GetFileName(filePath); // qr code file
                string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
                ViewBag.QrCodeUri = imageUrl;
            }
            catch (Exception)
            {
                throw;
            }
            return View();
        }
    }
}
Imports GenerateQRCode.Models
Imports IronQr
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Namespace GenerateQRCode.Controllers
	Public Class QrCodeController
		Inherits Controller

		Private ReadOnly _environment As IWebHostEnvironment
		Public Sub New(ByVal environment As IWebHostEnvironment)
			_environment = environment
		End Sub
		Public Function Index() As IActionResult
			Return View()
		End Function
		<HttpPost>
		Public Function CreateQRCode(ByVal generateQRCode As QRCodeModel) As IActionResult
			Try
				Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode")
				If Not Directory.Exists(path) Then
					Directory.CreateDirectory(path)
				End If
				Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png")
				' Create a QR Code object
				Dim myQr As QrCode = QrWriter.Write(generateQRCode.QRCodeText)
				' Save QR Code as a Bitmap
				Dim qrImage As AnyBitmap = myQr.Save()
				' Save QR Code Bitmap as File
				qrImage.SaveAs(filePath)
				Dim fileName As String = System.IO.Path.GetFileName(filePath) ' qr code file
				Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/GeneratedQRCode/" & fileName
				ViewBag.QrCodeUri = imageUrl
			Catch e1 As Exception
				Throw
			End Try
			Return View()
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

コードの説明

名前空間とクラスの定義

コードは、必要な名前空間をインポートするusing文から始まる。 GenerateQRCode.Controllers 名前空間には QrCodeController クラスが含まれています。

コントローラ コンストラクタ

QrCodeController クラスには、IWebHostEnvironment パラメーターを受け取るコンストラクターがあります。 このパラメータは、ASP.NET コアによって、Web ホスティング関連のタスクを処理するために注入されます。

アクション・メソッド

Index(): このメソッドはアクセスされるとビュー(おそらくHTMLページ)を返します。 QRコード生成とは直接関係ないようだ。 CreateQRCode(QRCodeModel generateQRCode): このメソッドはQRコード生成ロジックの中心です。 それはパラメーターとしてQRCodeModelオブジェクト(おそらくQRコードテキストを含んでいる)を受け取ります。

メソッド内部

生成されたQRコード画像を保存するためのパスを構築します。 QrWriter.Write(generateQRCode.QRCodeText) を使用してQRコードオブジェクトを作成します。 QRコードをビットマップ画像として保存します。 Webリクエストの詳細に基づいて画像URLを構築します。 画像URLでViewBag.QrCodeUriプロパティを設定します。 この処理中に例外が発生した場合はスローされる。

QRコード生成

実際のQRコード生成は、CreateQRCode メソッド内で行われます。 QrWriter.Write(generateQRCode.QRCodeText) 呼び出しは、指定されたテキストに基づいてQRコードオブジェクトを作成します。

画像保存

生成されたQRコードは、qrImage.SaveAs(filePath)を使用してビットマップ画像として保存されます。 画像ファイルのパスは、ウェブのルートパスと希望のファイル名に基づいて構築されます。

画像URL

imageUrlは、ウェブリクエストのスキーム、ホスト、およびパスベースを使用して構築されます。 このURLは、生成されたQRコード画像にアクセスできる場所を指します。 全体として、このコントローラはQRコードの生成、画像の保存、さらに使用するための画像URLの提供を処理します。

コントローラにビューを追加する

新しいビューを追加するには、QrCodeController クラス内の CreateQRCode アクションメソッドを右クリックします。

ASP .NET CoreでQRコードを生成する方法: 図10 - `QrCodeController`クラスに新しいビューを追加する

Add View "を選択し、"Razor View "を選択する。 追加」ボタンをクリックする。

ASP .NET CoreでQRコードを生成する方法: 図11 - ビューの追加オプションを選択し、Razor Viewを選び、追加をクリック

次に、"Create "テンプレートと以前に生成されたModelクラスを選択します。

ASP .NET CoreでQRコードを生成する方法: 図12 - 以前に生成された`Create`テンプレートを選択

次に、以下のコードをビューで置き換えてください。

@model GenerateQRCode.Models.QRCodeModel
@{
    ViewData["Title"] = "Generate QR Code";
}
<h1>Generate QR Code</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateQRCode">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="QRCodeText" class="control-label"></label>
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
            </div>
        </form>
    </div>
</div>
<div>
    <a asp-action="Index">Clear</a>
</div>
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
@model GenerateQRCode.Models.QRCodeModel
@{
    ViewData["Title"] = "Generate QR Code";
}
<h1>Generate QR Code</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateQRCode">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="QRCodeText" class="control-label"></label>
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
            </div>
        </form>
    </div>
</div>
<div>
    <a asp-action="Index">Clear</a>
</div>
@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
model ReadOnly Property () As GenerateQRCode.Models.QRCodeModel
	ViewData("Title") = "Generate QR Code"
End Property
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> <div> <a asp-action="Index"> Clear</a> </div> @section Scripts
"img-thumbnail" /> </div> </form> </div> </div> (Of div) <a asp-action="Index"> Clear</a> </div> section Scripts
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> <div> <a asp-action
"@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> (Of div) <a asp-action
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class
"form-group"> <img src="@ViewBag.QrCodeUri" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class="form-group"> <img src
"form-group"> </div> <div class="form-group"> <img src
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> </div> <div class
"text-danger"></span> </div> <div class="form-group"> </div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class
"QRCodeText" class="text-danger"></span> </div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for="QRCodeText" class
"control-label"></label> <span asp-validation-for="QRCodeText" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class="control-label"></label> <span asp-validation-for
"QRCodeText" class="control-label"></label> <span asp-validation-for
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="QRCodeText" class
"form-group"> <label asp-for="QRCodeText" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for
"text-danger"></div> <div class="form-group"> <label asp-for
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class
"ModelOnly" class="text-danger"></div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class
"CreateQRCode"> <div asp-validation-summary="ModelOnly" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary
"col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action
"row"> <div class="col-md-4"> <form asp-action
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Private Private Private Private Private Private Private Private Private Private Private Private Private Private Friend (Of h1) Generate QR Code</h1> (Of h4) QRCodeModel</h4> <hr /> <div Class="row"> <div class
	@
	If True Then
		Await Html.RenderPartialAsync("_ValidationScriptsPartial")
	End If
End Class
$vbLabelText   $csharpLabel

アプリが起動したときにPOSTリクエストのエラーを投げないように、indexアクションメソッドも同じようにします。

ここで、program.csの以下のコードを変更して、上記のビューをデフォルト・ルートにします。

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}"
);
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}"
);
app.MapControllerRoute(name:= "default", pattern:= "{controller=QrCode}/{action=Index}")
$vbLabelText   $csharpLabel

このアクションは、HomeController から QrCode コントローラーへのデフォルトルートを変更します。

さて、プロジェクトをコンパイルして実行します。

ASP .NET CoreでQRコードを生成する方法: 図13 - プロジェクトの例のホームページ

テキストボックスに任意のテキストを入力し、「作成」をクリックします。下図のような新しいQRコードが作成されます。

ASP .NET CoreでQRコードを生成する方法: 図14 - 任意のテキストを入力し、作成をクリックしてIronOCRを使用して新しいQRコードを生成します

QRコードにスタイルを追加する

QrStyleOptionsは、QRコード生成のスタイル設定に使用されます。

[HttpPost]
public IActionResult CreateQRCode(QRCodeModel generateQRCode)
{
    try
    {
        string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
        // Create a QR Code obj
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px
            Margins = 10, // px
            Color = Color.YellowGreen
        };
        // Save QR Code as a any bitmap
        AnyBitmap qrImage = qrCode.Save(style);
        // Save QR Code Bitmap to File
        qrImage.SaveAs(filePath);
        string fileName = Path.GetFileName(filePath); // qr code file
        string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
        ViewBag.QrCodeUri = imageUrl;
    }
    catch (Exception)
    {
        throw;
    }
    return View();
}
[HttpPost]
public IActionResult CreateQRCode(QRCodeModel generateQRCode)
{
    try
    {
        string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
        // Create a QR Code obj
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px
            Margins = 10, // px
            Color = Color.YellowGreen
        };
        // Save QR Code as a any bitmap
        AnyBitmap qrImage = qrCode.Save(style);
        // Save QR Code Bitmap to File
        qrImage.SaveAs(filePath);
        string fileName = Path.GetFileName(filePath); // qr code file
        string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName;
        ViewBag.QrCodeUri = imageUrl;
    }
    catch (Exception)
    {
        throw;
    }
    return View();
}
<HttpPost>
Public Function CreateQRCode(ByVal generateQRCode As QRCodeModel) As IActionResult
	Try
		Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode")
		If Not Directory.Exists(path) Then
			Directory.CreateDirectory(path)
		End If
		Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png")
		' Create a QR Code obj
		Dim qrCode As QrCode = QrWriter.Write(generateQRCode.QRCodeText)
		Dim style As New QrStyleOptions With {
			.Dimensions = 300,
			.Margins = 10,
			.Color = Color.YellowGreen
		}
		' Save QR Code as a any bitmap
		Dim qrImage As AnyBitmap = qrCode.Save(style)
		' Save QR Code Bitmap to File
		qrImage.SaveAs(filePath)
		Dim fileName As String = System.IO.Path.GetFileName(filePath) ' qr code file
		Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/GeneratedQRCode/" & fileName
		ViewBag.QrCodeUri = imageUrl
	Catch e1 As Exception
		Throw
	End Try
	Return View()
End Function
$vbLabelText   $csharpLabel

出力

ASP .NET CoreでQRコードを生成する方法: 図15 - プログラムでQRコードの色を変更する

ライセンス(試用版あり)

IronQRを試してみたい開発者向けに、試用ライセンスがこちらで利用可能です。 このライセンスキーをappSettings.jsonファイルに記述する必要があります。そうすることで、上の画像に表示されているウォーターマークが削除されます。 これで上の画像に表示されている透かしが削除されます。

{
"IronQR.License.LicenseKey" : "My key"
}

結論

この記事では、IronQRを使ってASP.NET CoreでQRコードを生成する方法を探りました。 IronQRのパワーを活用することで、開発者はQRコード生成機能を簡単にウェブアプリケーションに統合することができます。 チケット発券、認証、情報共有など、QRコードはデータを効率的に送信する汎用性の高いソリューションです。 IronQRを使えば、ASP.NETコアでのQRコードの作成とカスタマイズがかつてないほど簡単になります。 あなたのASP.NETコアプロジェクトにQRコード生成を組み込んで、ダイナミックなデータエンコーディングと共有の可能性を広げましょう。

ジョルディ・バルディア
ソフトウェアエンジニア
ジョルディは、Iron Softwareでのスキルを活かしていないときには、ゲームプログラミングをしており、Python、C#、C++に最も堪能です。彼は製品テスト、製品開発、研究の責任を共有しており、継続的な製品改善に大きな価値をもたらしています。この多様な経験は彼を常に挑戦的で魅力的に保ち、彼はIron Softwareで働く一番好きな側面の一つだと言っています。ジョルディはフロリダ州マイアミで育ち、フロリダ大学でコンピューターサイエンスと統計学を学びました。
< 以前
QRコードスキャナーのための.NET MAUI の使い方
次へ >
ASP .NETでQRコードをスキャンする方法