フッターコンテンツにスキップ
IRONQRの使用

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

QRコードは現代技術の重要な一部となっており、情報を便利に保存および送信する方法を提供しています。 Web開発では、私たちがASP.NET Coreで実装する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 Standardをサポートしており、ASP.NET Coreを含む幅広いプラットフォームと互換性があります。 IronQRを使用すると、開発者はさまざまなデータ型、エラー訂正レベル、サイズ、および形式でQRコードを手軽に生成できます。

主な特徴

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

IronQRは、QRコードの生成と読み取りを簡単に行うことができます。 動的にQRコードを作成する必要がある場合でも、既存のものから情報を抽出する必要がある場合でも、このライブラリが役立ちます。

2. 使いやすいAPI

このライブラリは使いやすいAPIを提供し、開発者が.NETプロジェクトにバーコード機能を迅速に統合できるようにします。 数分で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以上)

Web (Blazor & WebForms)、モバイル (Xamarin & MAUI)、デスクトップ (WPF & MAUI)、コンソールアプリケーションなど、幅広いプロジェクトタイプをカバーします。

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

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

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. ストリーム(MemoryStreambyte[]
  4. PDF(既存PDFへのスタンプとして)

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

サイズを変更し、余白や境界を調整し、色を変更し、ロゴを追加することでQRコードをカスタマイズします。

8. エラーハンドリングと訂正

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

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

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

QRコード生成を始める前に、新しいASP.NET Coreプロジェクトを設定しましょう。 新しいプロジェクトを開始する手順は次のとおりです:

Visual Studioで新しいプロジェクトを作成し、ASP.Net Core Web Appアプリケーションテンプレートを選択します

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

"作成"ボタンをクリックしてテンプレートからアプリケーションコードを生成します

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

必要な.NETバージョンを選択します。

以下に示すようにVisual StudioパッケージマネージャーからIronQRライブラリをインストールします。

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

ステップ3:QRコードを生成する

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

Visual Studioパッケージマネージャーから以下のように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 IronSoftware.Drawing;
using IronQr;
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 IronSoftware.Drawing;
using IronQr;
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 IronSoftware.Drawing
Imports IronQr
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 CoreによってWebホスティング関連のタスクを処理するために注入されます。

アクションメソッド

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

メソッド内

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

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`クラスに新しいビューを追加

"ビューの追加"を選択し、"Razorビュー"を選択します。 "追加"ボタンをクリックします。

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

チケッティング、認証、情報共有のためのQRコードは、データを効率的に送信するための多目的なソリューションを提供します。

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

QRコード生成をASP.NET Coreプロジェクトに組み込み、動的データエンコーディングと共有のための可能性の世界を開放しましょう。

@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>
                <input asp-for="QRCodeText" class="form-control" />
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
                <a href="#" class="btn btn-primary">Create QR Code</a>
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." />
            </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>
                <input asp-for="QRCodeText" class="form-control" />
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
                <a href="#" class="btn btn-primary">Create QR Code</a>
            </div>
            <div class="form-group">
                <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." />
            </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action="Index"> Clear</a> </div> @section Scripts
"Your QR Code will appear here." /> </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action
"img-thumbnail" alt="Your QR Code will appear here." /> </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt
"@ViewBag.QrCodeUri" class="img-thumbnail" alt
'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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src
"btn btn-primary"> Create QR Code</a> </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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class
"#" class="btn btn-primary"> Create QR Code</a> </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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href="#" class
"form-group"> <a href="#" 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class="text-danger"></span> </div> <div class="form-group"> <a href
"text-danger"></span> </div> <div class="form-group"> <a href
'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="control-label"></label> <input asp-for="QRCodeText" class="form-control" /> <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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for="QRCodeText" class
"form-control" /> <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 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> <input asp-for="QRCodeText" class="form-control" /> <span asp-validation-for
"QRCodeText" class="form-control" /> <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 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> <input asp-for="QRCodeText" class
"control-label"></label> <input 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 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> <input asp-for
"QRCodeText" class="control-label"></label> <input 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 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 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 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 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 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 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 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

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

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

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からQrCodeControllerに変更します。

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

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

テキストボックスに任意のテキストを入力し、"作成"をクリックします。これにより、下に示す新しいQRコードが作成されます。

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

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

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

[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 qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px size
            Margins = 10,     // px margins
            Color = Color.YellowGreen // custom color
        };

        // Save QR Code with style options as a 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 object
        QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText);
        QrStyleOptions style = new QrStyleOptions
        {
            Dimensions = 300, // px size
            Margins = 10,     // px margins
            Color = Color.YellowGreen // custom color
        };

        // Save QR Code with style options as a 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 object
		Dim qrCode As QrCode = QrWriter.Write(generateQRCode.QRCodeText)
		Dim style As New QrStyleOptions With {
			.Dimensions = 300,
			.Margins = 10,
			.Color = Color.YellowGreen
		}

		' Save QR Code with style options as a 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 CoreでQRコードを作成およびカスタマイズするのがこれまでになく簡単になります。 QR コード生成を ASP.NET Core プロジェクトに組み込み、動的なデータのエンコードと共有の可能性を広げましょう。

よくある質問

ASP.NET CoreでQRコードを生成するにはどうすればよいですか?

ASP.NET CoreでQRコードを生成するには、IronQRライブラリを使用できます。Visual Studioで新しいASP.NETプロジェクトを作成し、パッケージマネージャーを通してIronQRをインストールし、その使いやすいAPIを使用してQRコードを生成するコードを実装します。

ASP.NET CoreでのQRコード用のカスタマイズオプションはどれですか?

IronQRは、ASP.NET CoreでのQRコード用に、サイズ変更、マージンの調整、色の変更、ロゴの追加といったいくつかのカスタマイズオプションを提供します。これらはQrStyleOptionsクラスを使用して管理できます。

ASP.NET CoreでのQRコード生成におけるエラー修正はどのように機能しますか?

IronQRを使用すると、ASP.NET CoreでQRコードを生成する際にエラー修正レベルを管理できます。これにより、QRコードに必要なレベルのエラー耐性が確保され、信頼性のあるスキャンが可能になります。

ASP.NET Coreで異なる画像形式からQRコードを読み取ることはできますか?

はい、ASP.NET CoreのIronQRを使用すると、jpg、png、svg、bmp、gif、tif、tiffなど、さまざまな画像形式からQRコードを読み取ることができ、System.Drawing BitmapsおよびIronDrawing Images(AnyBitmap)も対応しています。

フルライセンスなしでIronQRをテストすることは可能ですか?

はい、IronQRの試用ライセンスはIron Softwareのウェブサイトから取得できます。この試用ライセンスを使ってライブラリをテストし、アプリのテストフェーズ中に表示するQRコードから透かしを削除するために、ライセンスをappSettings.jsonファイルに配置します。

WebアプリケーションでQRコードを使用する利点は何ですか?

QRコードは効率的なデータの保存と送信を可能にするため、Webアプリケーションにとって有益です。特に、チケットシステム、認証、在庫管理のようなアプリケーションで役立ち、情報を動的にエンコードして共有する方法を提供します。

機械学習はASP.NET CoreでのQRコード検出をどのように強化しますか?

IronQRは高度なカスタム機械学習モデルを使用してQRコード検出を行い、コード認識において高精度で信頼性のある検出を実現します。より軽量なソリューションを好むユーザーのために、非MLのスリムモードも利用可能です。

Jordi Bardia
ソフトウェアエンジニア
Jordiは、最も得意な言語がPython、C#、C++であり、Iron Softwareでそのスキルを発揮していない時は、ゲームプログラミングをしています。製品テスト、製品開発、研究の責任を分担し、Jordiは継続的な製品改善において多大な価値を追加しています。この多様な経験は彼を挑戦させ続け、興味を持たせており、Iron Softwareで働くことの好きな側面の一つだと言います。Jordiはフロリダ州マイアミで育ち、フロリダ大学でコンピュータサイエンスと統計学を学びました。