使用 IRONQR

如何在 ASP .NET Core 中生成 QR Code

發佈 2024年6月6日
分享:

簡介

QR 碼已成為現代技術的重要組成部分,提供了一種方便的方式來存儲和傳輸信息。在網頁開發中,使用 IronQR 在 ASP.NET Core 中實現的 QR 碼生成器,提供了強大的動態 QR 碼創建功能。QR 碼生成器對於多種應用程式如票務系統、身份驗證、庫存管理等非常有價值。本文深入探討了使用 IronQR 在 ASP.NET Core 中創建 QR 碼的過程,一個專門設計用於此目的的強大庫。ASP.NET Core 作為一個構建網頁應用程式的多功能框架,提供了生成 QR 碼的強大功能。在本文中,我們將深入探討在 ASP.NET Core 中創建 QR 碼的過程。 IronQR,一個強大的 QR 碼生成庫 Iron Software.

如何在 ASP.NET Core 生成 QR 碼

  1. 使用 Visual Studio 建立 ASP.Net 專案

  2. 安裝 IronQR 從套件管理器的庫

  3. 生成 QR Code

  4. 生成帶格式的 QR Code

認識 IronQR

IronQR 是一個高效能的 QR 碼生成庫,用於 .NET 應用程式。它提供了一個簡單直觀的 API,用於生成具有各種自定義選項的 QR 碼。IronQR 支援 .NET Standard,使其可以與包括 ASP.NET Core 在內的多種平台相容。使用 IronQR,開發者可以輕鬆生成具有不同數據類型、錯誤更正級別、大小和格式的 QR 碼。

主要特點

1. 讀取和創建 QR 碼

IronQR 可讓您輕鬆地生成和讀取 QR 碼。無論您需要動態創建 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+)

它涵蓋了各種專案類型,包括網路 (Blazor 和 WebForms),手機 (Xamarin & MAUI),桌面 (WPF & MAUI),和控制台應用程式。

4. 用於 QR 檢測的機器學習模型

IronQR 使用先進的自定義機器學習模型來檢測 QR 碼。這確保了準確和可靠的代碼識別。另外,還有一個 Slim Mode 選項。 (非機器學習) 適用於那些偏好輕量級方法的人。

5. 讀取 QR 碼

您可以從各種影像格式中讀取 QR 碼,包括:

  1. 圖片 (jpg、png、svg、bmp)

多頁圖片 (gif, tif, tiff)

  1. System.Drawing 位圖

  2. 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 Core 中生成 QR 代碼的應用程式。

第一步:使用 Visual Studio 創建一個新的 ASP.NET 專案

在我們深入討論 QR 碼生成之前,讓我們先建立一個新的 ASP.NET Core 專案。以下是啟動新專案的步驟:

從 Visual Studio 開始創建一個新專案,並選擇 ASP.Net Core Web App 應用程式模板

如何在 ASP.NET Core 中生成 QR 碼: 圖 1 - 選擇 ASP.NET CORE 網頁應用程式範本

請提供專案名稱和位置

在 ASP .NET Core 中生成 QR 碼的方法: 圖 2 - 命名專案並選擇保存位置

選擇所需的 .NET 版本。

如何在ASP.NET Core中生成QR Code:圖3 - 選擇正確的.NET版本。

按下「建立」按鈕,從範本生成應用程式程式碼

如何在ASP .NET Core中生成QR碼:圖4 - 點擊“create”按鈕生成模板代碼

第2步:從套件管理器安裝 IronQR 函式庫

安裝 IronQR 從 Visual Studio 套件管理器安裝庫如下面所示。

如何在 ASP .NET Core 中生成 QR Codes:圖 5 - 使用 Visual Studio 套件管理器搜尋 IronOCR 並安裝它

IronQR 也可以使用NuGet套件管理器安裝。

如何在 ASP .NET Core 中生成 QR 碼:圖 6 - 使用 NuGet 套件管理器搜尋 IronOCR

第三步:生成 QR Code

現在,讓我們來創建一個 QR Code 應用程式。

建立 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 Code 控制器

要新增控制器,右鍵點擊控制器資料夾並提供如下所示的名稱。

如何在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
VB   C#

程式碼說明

命名空間和類別定義

該程式碼以使用語句開始,這些語句導入了必要的命名空間。GenerateQRCode.Controllers 命名空間包含 QrCodeController 類別。

控制器構造函數

QrCodeController類別有一個構造函數,它接受一個 IWebHostEnvironment 參數。該參數由 ASP.NET Core 注入,用於處理與網站託管相關的任務。

行動方法

Index():此方法返回一個視圖 (應該是一個 HTML 頁面) 當訪問時。這似乎與 QR 碼生成沒有直接關係。CreateQRCode(QRCodeModel 生成QRCode)此方法是 QR 碼生成邏輯的核心。它接收一個QRCodeModel` 對象 (包含 QR code 文本) 作為參數。

方法內部

它構造了一個路徑來保存生成的 QR 代碼圖像。使用 QrWriter.Write 創建一個 QR 代碼對象。(產生QRCode.QRCodeText). 將 QR 碼保存為位圖圖像。根據 Web 請求詳細資訊構建圖像 URL。通過圖像 URL 設置ViewBag.QrCodeUri` 屬性。如果在此過程中發生任何異常,將拋出異常。

QR Code 生成

實際的 QR Code 生成發生在 CreateQRCode 方法內。QrWriter.Write(產生QRCode.QRCodeText)調用基於提供的文本創建一個 QR 碼對象。

圖像保存

生成的 QR 碼使用 qrImage.SaveAs 保存為位圖圖像(文件路徑)`. 圖片文件路徑是根據網頁根路徑和所需的文件名稱構建的。

图像网址

imageUrl 是使用网页请求的方案、主机和路径基址构造的。此网址指向生成的 QR 码图像可访问的位置。总体而言,此控制器处理 QR 码生成、保存图像,并提供图像网址以便进一步使用。

添加視圖到控制器

要添加一個新的視圖,右鍵點擊 QrCodeController 類別中的 CreateQRCode 行為方法。

如何在 ASP .NET Core 中生成 QR 代碼:圖10 - 在 `QrCodeController` 類別中新增一個新的視圖

選擇「添加視圖」,然後選擇「Razor視圖」。點擊「添加」按鈕。

如何在 ASP .NET Core 中生成 QR 碼:圖 11 - 選擇“添加視圖”選項,然後選擇“Razor 視圖”,然後點擊“添加”

然後選擇上一次生成的 "Create" 範本和模型類別。

如何在 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 請求而拋出錯誤。

現在在 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 創建新的 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 Code:圖15 - 以程式方式修改 QR Code 的顏色

授權 (試用版可用)

對於想要測試 IronQR 的開發人員,可以取得試用授權。 這裡. 這個授權金鑰需要被放置在appSettings.json檔案中。這樣做將會移除上圖中的浮水印。這將會移除上圖中的浮水印。

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

結論

在這篇文章中,我們探討了如何在 ASP.NET Core 中使用 IronQR 生成 QR 碼。通過利用 IronQR 的強大功能,開發人員可以輕鬆地將 QR 碼生成功能集成到他們的網頁應用程序中。無論是用於票務、身份驗證還是信息共享,QR 碼都提供了一種高效傳輸數據的多功能解決方案。使用 IronQR,在 ASP.NET Core 中創建和定制 QR 碼從未如此簡單。在您的 ASP.NET Core 項目中開始集成 QR 碼生成功能,並開啟動態數據編碼和共享的新天地。

< 上一頁
如何使用 .NET MAUI 進行 QR Code 掃描器
下一個 >
如何在ASP .NET中掃描QR碼

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 17,050 查看許可證 >