ASP.NETでのQRコードスキャンの方法
QRコードは我々のデジタル世界において遍在し、広告、小売、イベント管理などで頻繁に使用されています。 ASP.NETフレームワークで働く開発者にとって、WebアプリケーションにQRコード読み取り機能を統合することは、ユーザー体験と機能性を向上させることができます。 この記事では、ASP.NETアプリケーションにQRコードスキャナーを実装するプロセスを、必要なツール、ライブラリ、段階的な実装をカバーしながら探ります。 QRコードを読むために、Iron SoftwareのIronQRという強力なライブラリを使用します。
ASP.NETでQRコードをスキャンする方法
- Visual Studioを使用してASP.NETプロジェクトを作成します。
- パッケージマネージャーからIronQRライブラリをインストールします。
- QR画像をアップロードしてQRを読みます。
- 高度なQRコードを読みます。
QRコードとその使用例を理解する
QR(クイックレスポンス)コードは、URLから連絡先情報までのさまざまな情報を格納できる2次元バーコードであり、通常はスマートフォンや専用のスキャニングデバイスを使用してスキャンされます。 Webアプリケーションにおいて、QRコードは次のようなさまざまな目的に使用できます:
*ウェブサイトへの迅速なアクセス:*ユーザーがURLを入力する必要なく、特定のURLに直接アクセスできるようにします。 イベントチケット:イベント入場のためにチケットのQRコードを検証します。 決済システム: QRコードをスキャンすることで簡単に決済できるようにする。 製品情報:**製品に関する追加情報を提供します。
IronQRの紹介
IronQRは、QRコードの生成とスキャンを目的に設計された強力な.NETライブラリであり、使いやすさを考慮した高機能を提供します。 この多用途のライブラリはQRコードだけでなく、他の種類のバーコードも管理できるため、.NETエコシステムで働く開発者にとって選ばれる選択肢となっています。 ここでは、ASP.NETアプリケーションにIronQRライブラリを統合してQRコードスキャンを行う方法を探ります。
IronQRの主な利点と機能
-
QRコードの読み取り: IronQRは、jpg、png、svg、bmp、gif、tif、tiffなど、さまざまな画像形式のQRコードを読み取ることができます。 マルチページ画像とカスタムQR検出モデルもサポートしています。 出力データフォーマットにはテキスト、URL、座標などが含まれます。
- QRコードの書き込み: QRコードを生成し、画像(jpg、png、gif、tiff、bmp)、ストリームとして保存したり、既存のPDFにスタンプしたりできます。 テキスト、URL、バイト、数字などのデータをエンコードしてQRコードを生成します。 QRコードのスタイリングをサイズ変更、マージン調整、再着色、ロゴ追加でカスタマイズします。
3.エラー処理と修正: IronQRは詳細なエラーメッセージとカスタムQRエラー修正機能を提供します。 フォールトトレランスを確保し、ヌルチェックとチェックサムをサポートします。
4.高度な機械学習モデル: IronQRは、QRコード認識に高度な機械学習モデルを使用しています。 このモデルは、モバイル、デスクトップ、クラウド環境など、さまざまなプラットフォームでの正確で信頼性のあるQRコードの読み取りを保証します。
5.クロスプラットフォーム互換性: IronQRは C#、F#、VB .NET用に設計されており、 .NET Core (8、7、6、5、および 3.1+)、. .NET Standard (2.0+)、. .NET Framework (4.6.2+) など、さまざまな.NETバージョンで動作します。
- Web(Blazor & WebForms)、モバイル(Xamarin & MAUI)、デスクトップ(WPF & MAUI)、コンソールアプリケーションなど、さまざまなプロジェクトタイプをサポートします。
7.幅広いQRコードのサポート: IronQRは、幅広い種類のQRコードやその他のバーコードを処理することに優れています。 標準的なQRコード、マイクロQRコード、QRコードバーコード画像、AztecやData Matrixなどの特定の形式であっても、IronQRは対応しています。 IronQRはQRコードバーコードを読み取る機能もサポートしています。
様々なオフィス文書、PDF編集、OCRなどのツールを含む.NET API製品の[IronQR](Iron Suite)。
ステップ1: Visual Studioを使用して新しいASP.NETプロジェクトを作成する
新しいプロジェクトを作成し、以下に示すようにMVCテンプレートを選択してください:

次に、プロジェクト名とプロジェクトの保存場所を指定します。

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

作成ボタンをクリックすると、以下のコードとプロジェクトが生成されます。

ステップ2: Visual StudioのパッケージマネージャーからIronQRライブラリをインストールする
以下に示すように、Visual StudioのパッケージマネージャーからIronQRライブラリをインストールします:

IronQRは、NuGetパッケージマネージャーでもインストール可能です。

ステップ3: QRイメージをアップロードしてQRイメージを読む
さあ、QRコードアプリを作成しましょう。
QRCodeModel を作成します
// Import necessary namespaces
using System.ComponentModel.DataAnnotations;
namespace IronQRScannerAsp.Models
{
public class QRCodeModel
{
// Property to hold the uploaded QR code image
[Display(Name = "Select QR Image")]
public IFormFile QRCodeImage { get; set; }
}
}
// Import necessary namespaces
using System.ComponentModel.DataAnnotations;
namespace IronQRScannerAsp.Models
{
public class QRCodeModel
{
// Property to hold the uploaded QR code image
[Display(Name = "Select QR Image")]
public IFormFile QRCodeImage { get; set; }
}
}
' Import necessary namespaces
Imports System.ComponentModel.DataAnnotations
Namespace IronQRScannerAsp.Models
Public Class QRCodeModel
' Property to hold the uploaded QR code image
<Display(Name := "Select QR Image")>
Public Property QRCodeImage() As IFormFile
End Class
End Namespace
QRコードコントローラを作成
コントローラーフォルダーを右クリックして、以下に示すように新しいコントローラーを追加します。

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

コントローラー名を指定します。

次に、以下のコードをコントローラーに追加します。
// Import necessary namespaces
using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace IronQRScannerAsp.Controllers
{
// Controller to handle QR code scanning functionalities
public class QrCodeController : Controller
{
private readonly IWebHostEnvironment _environment;
// Constructor for dependency injection of the hosting environment
public QrCodeController(IWebHostEnvironment environment)
{
_environment = environment;
}
// Displays the initial View
public IActionResult Index()
{
ViewBag.QrCodeText = "Text";
return View();
}
// Handles the POST request to scan a QR code
[HttpPost]
public IActionResult ScanQRCode(QRCodeModel qrImage)
{
string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
// Define the file path for saving the uploaded QR image
string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
using (var stream = System.IO.File.Create(filePath))
{
qrImage.QRCodeImage.CopyTo(stream); // Save uploaded image to server
}
// Open the asset to read a QR Code from
var bitmap = AnyBitmap.FromFile(filePath);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(bitmap);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display scanned text and image on the view
ViewBag.QrCodeText = results.First().Value;
string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
ViewBag.QrCodeUri = imageUrl;
return View();
}
}
}
// Import necessary namespaces
using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace IronQRScannerAsp.Controllers
{
// Controller to handle QR code scanning functionalities
public class QrCodeController : Controller
{
private readonly IWebHostEnvironment _environment;
// Constructor for dependency injection of the hosting environment
public QrCodeController(IWebHostEnvironment environment)
{
_environment = environment;
}
// Displays the initial View
public IActionResult Index()
{
ViewBag.QrCodeText = "Text";
return View();
}
// Handles the POST request to scan a QR code
[HttpPost]
public IActionResult ScanQRCode(QRCodeModel qrImage)
{
string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
// Define the file path for saving the uploaded QR image
string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
using (var stream = System.IO.File.Create(filePath))
{
qrImage.QRCodeImage.CopyTo(stream); // Save uploaded image to server
}
// Open the asset to read a QR Code from
var bitmap = AnyBitmap.FromFile(filePath);
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(bitmap);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display scanned text and image on the view
ViewBag.QrCodeText = results.First().Value;
string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
ViewBag.QrCodeUri = imageUrl;
return View();
}
}
}
' Import necessary namespaces
Imports IronQr
Imports IronQRScannerAsp.Models
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Namespace IronQRScannerAsp.Controllers
' Controller to handle QR code scanning functionalities
Public Class QrCodeController
Inherits Controller
Private ReadOnly _environment As IWebHostEnvironment
' Constructor for dependency injection of the hosting environment
Public Sub New(ByVal environment As IWebHostEnvironment)
_environment = environment
End Sub
' Displays the initial View
Public Function Index() As IActionResult
ViewBag.QrCodeText = "Text"
Return View()
End Function
' Handles the POST request to scan a QR code
<HttpPost>
Public Function ScanQRCode(ByVal qrImage As QRCodeModel) As IActionResult
Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "ScanQRCode")
If Not Directory.Exists(path) Then
Directory.CreateDirectory(path)
End If
' Define the file path for saving the uploaded QR image
Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png")
Using stream = System.IO.File.Create(filePath)
qrImage.QRCodeImage.CopyTo(stream) ' Save uploaded image to server
End Using
' Open the asset to read a QR Code from
Dim bitmap = AnyBitmap.FromFile(filePath)
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(bitmap)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display scanned text and image on the view
ViewBag.QrCodeText = results.First().Value
Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/ScanQRCode/qrcode.png"
ViewBag.QrCodeUri = imageUrl
Return View()
End Function
End Class
End Namespace
コードの説明
提供されているコードスニペットは、QrCodeController という名前のASP.NET Core MVC コントローラーのもので、 IronQRライブラリを使用して QR コードスキャン機能を処理するように設計されています。 コードが何をするのかの簡単な説明はこちらです:
1. アップロードされたQRコード画像の保存
パスの構築
- QRコード画像を保存するためにアプリケーションのWebルートディレクトリ内にファイルパスを構築します("ScanQRCode"ディレクトリ)。
- このディレクトリが存在するかどうかを確認し、存在しない場合は、ファイルを保存する際のファイル未発見エラーを防ぐためにディレクトリを作成します。
ファイルの保存
- アップロードされたQRコード画像が保存される完全なファイルパス(
filePath)を構築します("ScanQRCode/qrcode.png")。 この処理は、同じ名前の既存のファイルを上書きし、ファイルの蓄積を防ぎながら新しいスキャンを効果的に処理します。 - ファイルストリームを開き、アップロードされた画像(
qrImage.QRCodeImage、おそらくフォームファイル)の内容をサーバー上の指定された場所にコピーします。
2. QRコードのデコード
イメージファイルの読み込み
AnyBitmap.FromFile(filePath)を利用して、保存された画像ファイルを QR コードスキャンに適した形式に読み込みます。AnyBitmapは、おそらく画像ファイルを QR リーダーが処理できるビットマップ オブジェクトに変換するためのヘルパー クラスとして機能します。
QRリーダーの初期化
- 読み込まれたビットマップを
QrImageInputにラップします。これは、QR コード読み取りプロセスへの入力として特別に設計されています。 - QR コードの検出とデコードを行うように構成されたIronQRライブラリのコンポーネントである
QrReaderをインスタンス化します。
QRコードのスキャン
reader.Read(imageInput)を呼び出して、画像から QR コードをスキャンします。 このメソッドはIEnumerable<QrResult>を返します。ここで、各QrResultには、画像内で検出された QR コードからのデータが含まれています。results.First().Valueを使用して最初の結果の値を抽出し、このデコードされた情報をViewBag.QrCodeTextに格納します。 これは、画像に少なくとも1つのQRコードが含まれていることを前提としており、QRコードが検出されなかった場合のエラーを処理しません。
3. 応答の準備と返送
画像URLの構築
- サーバーに保存されている QR コード画像を指す URL (
imageUrl) を構築します。 このURLは、現在のHTTPリクエストのスキーム、ホスト、およびパスベースを使用して構築され、ユーザーがアクセスして閲覧できるようにします。 - 構築された URL は
ViewBag.QrCodeUriに保存されます。
ビューの返り
- 同じビュー(
View())を返します。このビューには、おそらくQRコード画像とデコードされたテキストの両方が表示されます。ViewBagは、QR コードのデコードされたテキストと画像の URL をビューに渡してレンダリングするために使用されます。
コントローラークラスにビューを追加する
新しいビューを追加するには、QrCodeController クラス内の CreateQRCode アクション メソッドを右クリックします。

"ビューを追加"を選択し、次に"Razor View"を選択します。 "追加"をクリックします。
![.NETで QR コードをスキャンする方法: 図 11 - [ビューの追加] オプションを選択し、 [Razorビュー]、[追加] を選択します。](/static-assets/qr/blog/asp-net-qr-code-scanner/asp-net-qr-code-scanner-11.webp)
次に「作成」テンプレートと以前に生成されたモデルクラスを選択します。

以下に示すコードでビュークラス内のコードを置き換えます。
@model IronQRScannerAsp.Models.QRCodeModel
@{
ViewData["Title"] = "ScanQRCode";
}
<h1>ScanQRCode</h1>
<h4>QRCodeModel</h4>
<hr />
<div class="row">
<div class="col-md-14">
<form asp-action="ScanQRCode" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label for="QRCodeImage">Select QR Image:</label>
<input asp-for="QRCodeImage" class="form-control" type="file" />
</div>
<div class="form-group">
<input type="submit" value="Upload" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<h3>Scanned Text:</h3>
<h4>@ViewBag.QrCodeText</h4>
@if (ViewBag.QrCodeUri != null)
{
<img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
}
</div>
<div>
<a asp-action="Index">Clear</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
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}")
これにより、デフォルトのルートが HomeController から QrCode コントローラーに変更されます。
URL付きの入力画像:https://ironsoftware.com/csharp/qr/。

出力

ページ上でQRコード画像を選択し、"アップロード"をクリックしてQRコードをデコードします。 このアプリは、ビデオフィードから読み取り、結果を表示するように変更することもできます。
ステップ4: 高度なQRコードを読む
高度なQRコードを読むために、IronQRは以下の設定を提供します。
// Import necessary namespaces
using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;
// Load an image file as a bitmap
var inputBmp = AnyBitmap.FromFile("QrImage.png");
// Use Auto => Machine Learning Scan
QrImageInput scan_ML_and_normal = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results1 = new QrReader().Read(scan_ML_and_normal);
// Use Machine Learning Scan - High Speed
QrImageInput scan_ML_only = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results2 = new QrReader().Read(scan_ML_only);
// Use Scan without Machine Learning
QrImageInput scan_normal_only = new QrImageInput(inputBmp, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> results3 = new QrReader().Read(scan_normal_only);
// Import necessary namespaces
using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;
// Load an image file as a bitmap
var inputBmp = AnyBitmap.FromFile("QrImage.png");
// Use Auto => Machine Learning Scan
QrImageInput scan_ML_and_normal = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results1 = new QrReader().Read(scan_ML_and_normal);
// Use Machine Learning Scan - High Speed
QrImageInput scan_ML_only = new QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel);
IEnumerable<QrResult> results2 = new QrReader().Read(scan_ML_only);
// Use Scan without Machine Learning
QrImageInput scan_normal_only = new QrImageInput(inputBmp, QrScanMode.OnlyBasicScan);
IEnumerable<QrResult> results3 = new QrReader().Read(scan_normal_only);
' Import necessary namespaces
Imports IronQr
Imports IronSoftware.Drawing
Imports IronQr.Enum
Imports System.Collections.Generic
' Load an image file as a bitmap
Private inputBmp = AnyBitmap.FromFile("QrImage.png")
' Use Auto => Machine Learning Scan
Private scan_ML_and_normal As New QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel)
Private results1 As IEnumerable(Of QrResult) = (New QrReader()).Read(scan_ML_and_normal)
' Use Machine Learning Scan - High Speed
Private scan_ML_only As New QrImageInput(inputBmp, QrScanMode.OnlyDetectionModel)
Private results2 As IEnumerable(Of QrResult) = (New QrReader()).Read(scan_ML_only)
' Use Scan without Machine Learning
Private scan_normal_only As New QrImageInput(inputBmp, QrScanMode.OnlyBasicScan)
Private results3 As IEnumerable(Of QrResult) = (New QrReader()).Read(scan_normal_only)
最新のML技術を活用することにより、QRコードリーダーを新たな高みへと引き上げました。 洗練されたMLモデルは、複雑な条件下でもQRコードのデコードにおけるアプリケーションの精度と効率を向上させます。 静止画像、ビデオストリーム、ライブカメラフィードからQRコードを読み取るかどうかに関わらず、ML技術を駆使したソリューションは、必要な情報を迅速かつ確実に提供します。 この革新はデータの取得を効率化し、本物のQRコードを特定し潜在的な脅威を認識することで、セキュリティを向上させます。 私たちのML技術を使用することで、QRコードスキャニング機能が最先端であること、ユーザーにスムーズで安全な体験を提供することを確信できます
ライセンス (トライアル利用可能)
開発者はこちらからIronQRトライアルライセンスを取得できます。 キーは appSettings.json に配置する必要があります。
{
"IronQr.License.LicenseKey": "My Key"
}
結論
この記事では、IronQRを使用して、ASP.NET CoreでQRコードをスキャンする方法について探ってきました。 IronQRをASP.NETアプリケーションに統合してQRコードスキャンを行うことは、Webアプリケーションの機能を強化し、よりインタラクティブでユーザーフレンドリーにする簡単なプロセスです。 IronQRの強力な機能と使いやすさは、バーコード関連の機能を実装したい開発者にとって優れた選択肢です。
よくある質問
ASP.NETアプリケーションでQRコードスキャナーを実装するにはどうすればいいですか?
ASP.NETアプリケーションでQRコードスキャナーを実装するには、Visual Studioで新しいプロジェクトを作成し、パッケージマネージャーを通じてIronQRライブラリをインストールし、IronQRの強力な機能を使用してQRコードスキャンを処理するコードを追加します。
ASP.NETでQRCodeModelを設定する手順は何ですか?
ASP.NETでQRCodeModelを設定するには、QRコードデータを処理するモデルクラスを定義し、IronQRを使用して入力を処理し、ASP.NETアプリケーションがQRコードのスキャンと結果の表示を管理できるようにします。
IronQRは異なる画像形式からQRコードを読み取ることができますか?
はい、IronQRはjpg、png、svg、bmp、gif、tif、tiff、多ページ画像を含む複数の画像形式からQRコードを読み取ることができ、さまざまなアプリケーションに対応しています。
IronQRはQRコードのスキャンに機械学習をどのように利用していますか?
IronQRは進化した機械学習モデルを用いてQRコードスキャンの精度を向上させ、さまざまな環境およびプラットフォームでの信頼性と正確な読み取りを保証します。
QRコードスキャンにおいて、IronQRを使用できるプラットフォームは何ですか?
IronQRはWebアプリケーション(Blazor&WebForms)、モバイルアプリ(Xamarin&MAUI)、デスクトップアプリ(WPF&MAUI)、コンソールアプリケーションを含む広範なプラットフォームをサポートし、C#、F#、VB.NETと互換性があります。
ASP.NETでQRコードスキャンのためのファイルアップロードをどのように処理しますか?
ASP.NETでは、ファイルアップロード用にコントローラーを設定してファイルを受信し、IronQRを使用してアップロードされたQRコード画像を効果的に処理し、スキャンします。
IronQRを使用してビデオフィードからQRコードをスキャンすることは可能ですか?
はい、IronQRはビデオフィードからQRコードをスキャンするように適応可能で、リアルタイムデータ処理が必要な動的な環境にその応用を広げます。
IronQRのライセンスオプションはどのようなものがありますか?
IronQRは試用ライセンスを提供しており、Iron Softwareのウェブサイトから取得できます。開発者はライセンスキーをappSettings.jsonファイルに配置して試用を有効化してください。
ASP.NETでQRコードスキャンにIronQRを使用することの利点は何ですか?
ASP.NETでQRコードスキャンにIronQRを使用することは、簡単な統合、さまざまな画像形式のサポート、機械学習で強化された精度、プラットフォーム間の互換性などの利点を提供します。
IronQRを使用してASP.NETでQRコードの作成をカスタマイズするにはどうすればよいですか?
ASP.NETでIronQRを使用してQRコードの作成をカスタマイズするには、ライブラリの機能を使用してQRコードのサイズ、色、埋め込むデータを変更し、特定のアプリケーション要件に合わせた出力を作成します。



