IRONQRの使用

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

更新済み 6月 6, 2024
共有:

イントロダクション

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

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

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

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

  3. QRコードを生成

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

IronQR(アイアンQR)を理解する

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

主な機能

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

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

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

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

3.互換性

IronQR を含む様々な.NETバージョンをサポートしています:

  1. C#、VB.NET、F#

  2. .NETコア (8, 7, 6, 5, および3.1+)

  3. .NETスタンダード (2.0以上)

  4. .NETフレームワーク (4.6.2+)

    これは、ウェブを含む幅広いプロジェクトの種類をカバーしている。 (Blazor & WebForms (ブレイザー & ウェブフォーム))モバイル (XamarinとMAUI)デスクトップ (WPF & MAUI)およびコンソールアプリケーション。

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

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

5.QRコードの読み取り

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

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

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

  3. System.Drawing` ビットマップ

  4. アイアンドローイング画像 (任意のビットマップ)

6.QRコードの作成

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

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

  2. System.Drawing`画像

  3. ストリーム (メモリストリーム`, バイト[]もちろん、英語のテキストを教えていただけますでしょうか?)

    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ウェブ・アプリケーション・テンプレートを選択する

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

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

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

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

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

ASP .NET CoreでQRコードを生成する方法:図4 - "create"ボタンをクリックしてテンプレートコードを生成する

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

インストール IronQR ライブラリは、Visual Studio パッケージ・マネージャーから以下のようにダウンロードします。

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

IronQR はNuGet Package Managerを使ってインストールすることもできる。

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

ステップ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
VB   C#

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

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

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

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

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

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

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
VB   C#

コードの説明

名前空間とクラスの定義

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

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

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

アクション・メソッド

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

メソッド内部

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

QRコード生成

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

画像保存

生成されたQRコードは qrImage.SaveAs(ファイルパス). 画像ファイルのパスは、ウェブのルートパスと希望のファイル名に基づいて構築されます。

画像URL

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

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

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

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

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

ASP .NET CoreでQRコードを生成する方法:図 11 - Add View オプションを選択し、Razor View、Add の順に選択します。

次に、"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
VB   C#

アプリが起動したときに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}")
VB   C#

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

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

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

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

ASP .NET CoreでQRコードを生成する方法:図14 - IronOCR (アイアンOCR)を使用して新しい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
VB   C#

出力

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

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

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

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

結論

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

< 以前
QRコードスキャナーのための.NET MAUI の使い方
次へ >
ASP .NETでQRコードをスキャンする方法

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

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