跳至頁尾內容
USING IRONQR

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

QR碼已成為現代技術中不可或缺的一部分,提供了一種方便的方式來儲存和傳遞資訊。 在網站開發中,像我們將使用IronQR在ASP.NET Core中實現的QR碼生成器,提供了建立動態QR碼的強大功能。 QR碼生成器在各種應用程式中是無價的,例如票務系統、身份驗證、庫存管理等。 本文深入探討了使用IronQR在ASP.NET Core中建立QR碼的過程,這是一個為此目的設計的強大程式庫。 ASP.NET Core作為一個多功能的Web應用程式框架,提供了生成QR碼的強大功能。 在本文中,我們將深入探討如何使用IronQR在ASP.NET Core中建立QR碼,Iron Software的一個強大生成QR碼的程式庫。

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

  1. 使用Visual Studio建立ASP.Net專案
  2. 從套件管理器安裝IronQR程式庫
  3. 生成QR碼
  4. 生成帶格式的QR碼

了解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+)

它涵蓋了各種專案型別,包括Web (Blazor & WebForms)、移動端 (Xamarin & MAUI)、桌面端 (WPF & MAUI) 以及控制台應用程式。

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

IronQR使用先進的自訂機器學習模型來檢測QR碼。 這確保了準確和可靠的程式碼識別。 此外,還有一個輕量級模式選項(非ML模式)可供選擇。

5. 讀取QR碼

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

  1. 圖像 (jpg, png, svg, bmp)
  2. 多頁圖像 (gif, tif, tiff)
  3. System.Drawing 位圖
  4. IronDrawing 圖像 (AnyBitmap)

6. 寫入QR碼

IronQR允許您為不同檔案型別寫入QR碼,例如:

  1. 圖像 (jpg, png, gif, tiff, bmp)
  2. System.Drawing 圖像
  3. 寫入流 (MemoryStream, byte[])
  4. PDF (在現有PDF上標記)

7. 樣式化QR碼

通過調整大小、調整邊距和邊框、更改顏色、新增徽標來自訂QR碼

8. 錯誤處理和更正

IronQR提供詳細的錯誤訊息並支持自訂QR錯誤更正級別。

有了這些知識,讓我們開始生成ASP.NET 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 Web應用程式範本

提供專案名稱和位置

如何在ASP.NET Core中生成QR碼:圖2 - 為專案命名,並選擇您希望儲存的位置

選擇需要的.NET版本。

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

單擊"建立"按鈕,以從範本生成應用程式程式碼

如何在ASP.NET Core中生成QR碼:圖4 - 單擊

步驟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

程式碼說明

命名空間和類定義

程式碼以使用聲明開頭,這些聲明導入必要的命名空間。 該QrCodeController類。

控制器建構子

IWebHostEnvironment參數。 這個參數是由ASP.NET Core注入的,用於處理Web託管相關任務。

動作方法

  • Index(): 當存取時,該方法返回一個視圖(可能是一個HTML頁面)。 這似乎與QR碼生成無直接關係。
  • CreateQRCode(QRCodeModel generateQRCode): 這是QR碼生成邏輯的核心方法。 它接收一個QRCodeModel物件(可能包含QR碼文字)作為參數。

方法內部

  • 構建保存生成的QR碼圖像的路徑。
  • 使用QrWriter.Write(generateQRCode.QRCodeText)建立QR碼物件。
  • 將QR碼保存為位圖圖像。
  • 根據Web請求詳情構建圖像URL。
  • 使用圖像URL設置ViewBag.QrCodeUri屬性。
  • 如果在此過程中發生任何異常,它們將被拋出。

QR碼生成

實際的QR碼生成在CreateQRCode方法內發生。 該QrWriter.Write(generateQRCode.QRCodeText) 呼叫根據提供的文字建立一個QR碼物件。

圖像保存

生成的QR碼使用qrImage.SaveAs(filePath)保存為位圖圖像。 圖像文件路徑是基於Web根目錄路徑和所需文件名構建的。

圖像URL

imageUrl使用Web請求的方案、主機和路徑基數構建。 此URL指向可以存取生成的QR碼圖像的位置。 總的來說,該控制器處理QR碼生成、保存圖像並提供圖像URL以供進一步使用。

向控制器新增視圖

要新增新視圖,請右鍵單擊QrCodeController類。

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

選擇"Add View"然後選擇"Razor View"。 點擊"Add"按鈕。

如何在ASP.NET Core中生成QR碼:圖11 - 選擇新增視圖選項、然後Razor視圖、再按新增

然後選擇建立模板和先前生成的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>
                <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

對索引動作方法也進行相同操作,使應用程式啟動時不會對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}")
$vbLabelText   $csharpLabel

此行動將預設路由從QrCodeController

現在,編譯並運行專案。

如何在ASP.NET Core中生成QR碼:圖13 - 從專案中範例主頁

在文字框中輸入任何文字並點擊"建立"。 這將建立一個新的QR碼如下所示。

如何在ASP.NET Core中生成QR碼:圖14 - 輸入任何文字並單擊建立以利用IronQR生成新的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 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碼生成功能整合到他們的Web應用程式中。 無論是用於票務、身份驗證還是資訊共享,QR碼都提供了一種高效傳輸資料的多功能解決方案。 使用IronQR,在ASP.NET Core中建立和自訂QR碼從未如此簡單。 開始在您的ASP.NET Core專案中融入QR碼生成功能,解鎖動態資料編碼和共享的無限可能。

常見問題

如何在ASP.NET Core中生成QR碼?

在ASP.NET Core中生成QR碼,您可以使用IronQR程式庫。首先,在Visual Studio中建立新的ASP.NET專案,然後通過Package Manager安裝IronQR,並實現生成QR碼的程式碼,使用其使用者友好的API。

在ASP.NET Core中,QR碼有哪些自訂選項?

IronQR在ASP.NET Core中提供了多種QR碼自訂選項,包括調整大小、調整邊距、改變顏色和新增標誌。這些都可以通過QrStyleOptions類來管理。

如何在ASP.NET Core中生成QR碼時進行錯誤校正?

IronQR允許您在生成QR碼時管理錯誤校正等級,以確保QR碼具有所需的錯誤抗性,這對於可靠掃描至關重要。

我能否在ASP.NET Core中從不同的圖像格式讀取QR碼?

是的,使用ASP.NET Core中的IronQR,您可以從多種圖像格式讀取QR碼,如jpg、png、svg、bmp、gif、tif和tiff等,以及System.Drawing位圖和IronDrawing圖像(AnyBitmap)。

可以在沒有完整授權的情況下測試IronQR嗎?

可以,您可以從Iron Software的網站獲得IronQR的試用授權。試用版允許您在測試階段測試程式庫,並通過將授權放置在appSettings.json文件中來移除生成的QR碼上的浮水印。

在網頁應用程式中使用QR碼的優勢是什麼?

QR碼對於網頁應用程式有許多優勢,因為它們可以有效地儲存和傳輸資料。特別適用於票務系統、身份驗證和庫存管理等應用程式,提供了一種動態的方法來編碼和共享資訊。

機器學習如何增強ASP.NET Core中的QR碼檢測?

IronQR利用先進的自訂機器學習模型來進行QR碼檢測,確保在程式碼識別方面具有高準確性和可靠性。對於喜歡更輕量解決方案的使用者,也提供非ML的Slim模式。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話