跳過到頁腳內容
使用 IRONQR

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

二維碼已成為現代技術不可或缺的一部分,為儲存和傳輸資訊提供了一種便捷的方式。 在 Web 開發中,像是我們將在ASP.NET Core中使用IronQR實現的這種二維碼產生器,為動態建立二維碼提供了強大的功能。 二維碼產生器在票務系統、身份驗證、庫存管理等各種應用中都具有不可估量的價值。 本文深入探討如何使用IronQR (一個專為此目的而設計的強大函式庫)在ASP.NET Core中建立二維碼的過程。 ASP.NET Core是一個功能全面的 Web 應用程式建立框架,它提供了強大的二維碼產生功能。 在本文中,我們將深入探討如何使用IronQRIron Software出品的強大二維碼產生函式庫)在ASP.NET Core中建立二維碼的過程。

如何在ASP.NET Core中產生二維碼

  1. 使用 Visual Studio 建立ASP.NET項目
  2. 從軟體套件管理器安裝IronQR
  3. 產生二維碼
  4. 產生帶格式的二維碼

了解IronQR

IronQR是一個用於.NET應用程式的高效能二維碼產生函式庫。 它提供了一個簡單直覺的API,用於產生二維碼,並具有各種自訂選項。 IronQR支援.NET Standard,使其與包括ASP.NET Core在內的各種平台相容。 借助IronQR,開發人員可以輕鬆產生具有不同資料類型、糾錯等級、尺寸和格式的二維碼。

主要特點

1. 讀取並建立二維碼

IronQR讓您輕鬆產生和讀取二維碼。 無論您需要動態建立二維碼還是從現有二維碼中提取訊息,這個庫都能滿足您的需求。

2. 使用者友善 API

該程式庫提供了一個用戶友好的 API,使開發人員能夠快速地將條碼功能整合到他們的.NET專案中。 您只需幾分鐘即可開始使用二維碼。

3. 相容性

IronQR支援多種.NET版本,包括:

  1. C#、 .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. 用於二維碼檢測的機器學習模型

IronQR使用先進的客製化機器學習模型來檢測二維碼。 這確保了代碼識別的準確性和可靠性。 此外,也為喜歡輕便方式的使用者提供了纖薄模式(非ML)選項。

5. 讀取二維碼

您可以讀取多種影像格式的二維碼,包括:

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

6. 編寫二維碼

IronQR可讓您為不同類型的文件編寫二維碼,例如:

  1. 圖片(jpg、png、gif、tiff、bmp)
  2. System.Drawing 圖片
  3. 流(byte[]
  4. PDF(在現有 PDF 上加蓋印章)

7. 二維碼樣式

透過調整大小、調整邊距和邊框、重新著色、新增標誌等方式自訂二維碼

8. 錯誤處理與糾正

IronQR提供詳細的錯誤訊息,並支援自訂二維碼糾錯等級。

有了這些知識,讓我們開始在ASP.NET Core中開發產生二維碼的應用程式。

步驟 1:使用 Visual Studio 建立一個新的ASP.NET項目

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

首先在 Visual Studio 中建立一個新項目,然後選擇ASP.NET Core Web 應用程式範本。

如何在.NET Core中產生二維碼:圖 1 - 選擇ASP.NET Core Web 應用程式範本

請提供項目名稱和地點

如何在 ASP.NET .NET Core中產生二維碼:圖 2 - 命名項目和保存位置

選擇所需的.NET版本。

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

點擊"建立"按鈕,即可根據模板產生應用程式程式碼。

如何在 ASP.NET .NET Core中產生二維碼:圖 4 - 點擊

步驟 2:從軟體套件管理器安裝IronQR庫

依照以下所示,從 Visual Studio 套件管理器安裝IronQR庫。

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

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

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

步驟 3:產生二維碼

現在,讓我們建立一個二維碼應用程式。

建立 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; }
    }
}
$vbLabelText   $csharpLabel

建立二維碼控制器

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

如何在 ASP.NET .NET Core中產生二維碼:圖 7 - 點擊資料夾新增控制器並為其命名

選擇空控制器。

如何在 ASP.NET .NET Core中產生二維碼:圖 8 - 點選提示字元下的

請提供姓名。

如何在 ASP.NET .NET Core中產生二維碼:圖 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();
        }
    }
}
$vbLabelText   $csharpLabel

程式碼解釋

命名空間和類別定義

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

控制器建構函數

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

行動方法

  • Index(): 此方法在存取時傳回視圖(可能是 HTML 頁面)。 這似乎與二維碼生成沒有直接關係。
  • CreateQRCode(QRCodeModel generateQRCode): 此方法是二維碼生成邏輯的核心。 它接收一個 QRCodeModel 物件(大概包含二維碼文字)作為參數。

在方法內部

  • 建立用於保存生成的二維碼圖像的路徑。
  • 使用 QrWriter.Write(generateQRCode.QRCodeText) 建立 QR 碼物件。
  • 將二維碼儲存為點陣圖影像。
  • 根據網頁請求詳情建立圖像 URL。
  • ViewBag.QrCodeUri 屬性設定為圖片 URL。
  • 如果在此過程中發生任何異常,則會拋出這些異常。

二維碼生成

實際的二維碼產生是在 CreateQRCode 方法中完成的。 QrWriter.Write(generateQRCode.QRCodeText) 呼叫會根據提供的文字建立一個二維碼物件。

影像保存

產生的二維碼以點陣圖影像的形式儲存,使用 qrImage.SaveAs(filePath)。 圖片檔案路徑是根據網站根路徑和所需的檔案名稱建構的。

圖片網址

imageUrl 是使用 Web 請求的方案、主機和路徑基址建構的。 此網址指向可存取產生的二維碼影像的位置。 總的來說,該控制器負責產生二維碼、保存圖像,並提供圖像 URL 以供進一步使用。

將視圖新增至控制器

若要新增視圖,請以滑鼠右鍵按一下 CreateQRCode 類別中的 QrCodeController 操作方法。

如何在.NET Core中產生二維碼:圖 10 - 在 `QrCodeController` 類別中新增視圖

選擇"新增視圖",然後選擇"Razor視圖"。 點擊"新增"按鈕。

如何在 ASP.NET .NET Core中產生二維碼:圖 11 - 選擇

然後選擇之前產生的"創建"模板和模型類別。

如何在.NET Core中產生二維碼:圖 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");}
}
$vbLabelText   $csharpLabel

對 index 操作方法也進行相同的操作,這樣當應用程式啟動時,就不會因 POST 請求而拋出錯誤。

現在在 Program.cs 中,更改以下程式碼,使上述視圖成為預設路由。

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}"
);
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=Index}"
);
$vbLabelText   $csharpLabel

此操作會將預設路由從 HomeController 修改為我們的 QrCodeController

現在,編譯並執行該專案。

如何在 ASP.NET .NET Core中產生二維碼:圖 13 - 專案範例首頁

在文字方塊中輸入任意文本,然後點擊"建立"。這將建立一個新的二維碼,如下所示。

如何在 ASP.NET .NET Core中產生二維碼:圖 14 - 輸入任意文字並點擊

為二維碼添加樣式

QrStyleOptions 用來設定二維碼產生的樣式。

[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();
}
$vbLabelText   $csharpLabel

輸出

如何在 ASP.NET .NET Core中產生二維碼:圖 15 - 以程式修改二維碼顏色

許可證(提供試用版)

對於想要試用IronQR 的開發者,可以點擊此處取得試用授權。 需要將此許可證金鑰放入 appSettings.json 文件中。這樣做可以移除上方圖片中顯示的浮水印。

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

結論

在本文中,我們探討如何使用IronQR在ASP.NET Core中產生二維碼。 借助IronQR的強大功能,開發人員可以輕鬆地將二維碼生成功能整合到他們的 Web 應用程式中。 無論是票務、身份驗證還是資訊共享,二維碼都提供了一種高效傳輸資料的多功能解決方案。 使用IronQR,在ASP.NET Core中建立和自訂二維碼從未如此簡單。 將二維碼產生功能整合到您的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,您可以從多種圖像格式中讀取 QR 碼,例如 jpg、png、svg、bmp、gif、tif 和 tiff,以及 System.Drawing 位圖和 IronDrawing 圖像(AnyBitmap)。

是否可以在沒有完整許可證的情況下測試 IronQR?

是的,您可以從 Iron Software 網站獲取 IronQR 的試用許可證。試用版允許您測試庫,並在測試階段通過將許可證放置在 appSettings.json 文件中來刪除生成 QR 碼的水印。

使用 QR 碼在 Web 應用程式中有哪些優勢?

QR 碼對 Web 應用程式非常有利,因為它們允許有效的數據存儲和傳輸。它們在票務系統、身份證驗證和庫存管理等應用程式中特別有用,提供了一種動態編碼和共享信息的方式。

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

IronQR 使用了一種先進的自定義機器學習模型進行 QR 碼檢測,確保高精度和可靠的代碼識別。對於喜歡更輕量級解決方案的用戶,還提供了一種非機器學習的 Slim 模式。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

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