使用IRONQR

如何在ASP .NET中扫描QR码

发布 2024年六月6日
分享:

介绍

QR 码在我们的数字世界中已经无处不在,经常用于广告、零售、活动管理等领域。 对于在 ASP.NET Framework 中工作的开发人员来说,将二维码扫描功能集成到网络应用程序中可以增强用户体验和功能。 本文探讨了在 ASP.NET 应用程序中实施 QR 码扫描器的过程,包括所需的工具、库和逐步实施。 我们将使用IronQR是一个功能强大的二维码生成库,可从铁软件来读取 QR 码。

如何在ASP .NET中扫描QR码

  1. 使用 Visual Studio 创建 ASP.NET 项目

  2. 安装IronQR软件包管理器库

  3. 上传 QR 图像并阅读 QR。

  4. 读取高级二维码

了解 QR 码及其使用案例

QR(快速反应)代码是二维条形码,可以存储从 URL 到联系方式等各种信息,通常使用智能手机或专用扫描设备进行扫描。 在网络应用程序中,QR 代码有多种用途,如

  • 快速访问网站:引导用户访问特定 URL,无需输入。
  • 活动票务:验证活动门票上的二维码。
  • 支付系统:通过扫描二维码方便付款。
  • 产品信息:提供有关产品的其他信息。

介绍 IronQR

IronQRQR Code 是一个功能强大的 .NET 库,专为 QR 代码生成和扫描而设计,功能强大且易于使用。 这个多功能库不仅可以处理 QR 代码,还可以管理其他类型的 BarCode,因此成为在 .NET 生态系统内工作的开发人员的首选。 在此,我们将探讨如何将 IronQR 库集成到 ASP.NET 应用程序中,以方便 QR 码扫描。

IronQR 的主要优势和功能

  1. 阅读 QR 码IronQR该工具可读取各种图像格式的 QR 码,包括 jpg、png、svg、bmp、gif、tif、tiff 等。 它还支持多页图像和自定义 QR 检测模型。 输出数据格式包括文本、URL、坐标等。

  2. 编写 QR 代码:您可以生成 QR 代码并将其保存为图像(JPG、PNG、GIF、TIFF、BMP)、流,甚至将它们加盖到现有的PDF文件上。 对文本、URL、字节和数字等数据进行编码,并生成 QR 码。 通过调整大小、调整边距、重新着色和添加徽标来定制二维码样式。

  3. 错误处理和纠正IronQR翻译时必须提供详细的错误信息和自定义 QR 纠错。 确保容错并支持空检查和校验。

  4. 高级机器学习模型IronQR使用先进的机器学习模型进行 QR 代码识别。 这种模式可确保在各种平台(包括移动、桌面和云环境)上准确可靠地读取 QR 代码。

  5. 跨平台兼容性IronQR设计用于 C#、F# 和 VB.NET,可在各种 .NET 版本(如 .NET Core)上运行(8、7、6、5 和 3.1+), .NET 标准(2.0+).NET Framework(4.6.2+)

  6. 它支持不同的项目类型,包括网络(Blazor 和 WebForms)手机(Xamarin 和 MAUI)桌面(WPF 和 MAUI)和控制台应用程序。

  7. 广泛的二维码支持:IronQR 擅长处理各种 QR 码和其他类型的条形码。 无论您处理的是标准 QR 码、Micro QR 码、QR 码条形码图像,甚至是 Aztec 或 Data Matrix 等特定格式、IronQR为您提供服务。 IronQR 还支持读取 QR 码 BarCode 的功能。

    IronQR.NET应用程序接口产品,其中包括用于办公文档、PDF编辑、OCR等的各种工具。

步骤 1:使用 Visual Studio 创建一个新的 ASP.NET 项目

首先创建一个新项目并选择 MVC 模板,如下所示

如何在 ASP .NET 中扫描 QR 码:图 1 - 使用 Visual Studio 创建一个新的 ASP.NET 项目

接下来,您应提供项目名称和项目地点。

如何在 ASP .NET 中扫描 QR 码:图 2 - 提供项目名称和希望保存的位置。

选择 .NET 版本。

如何在 ASP .NET 中扫描 QR 码:图 3 - 选择要使用的 .NET 版本。

点击创建按钮将创建以下代码和项目。

如何在 ASP .NET 中扫描 QR 码:图 4 - 单击创建按钮,Visual Studio 将为您提供项目模板

第 2 步:从 Visual Studio 软件包管理器安装 IronQR 库

安装IronQR如下图所示,您可以从 Visual Studio 软件包管理器中找到库

如何在 ASP .NET 中扫描 QR 码:图 5 - 使用 Visual Studio 软件包管理器搜索并安装 IronQR

IronQR也可以使用NuGet软件包管理器。

如何在 ASP .NET 中扫描 QR 码:图 6 - 通过 NuGet 软件包管理器搜索 IronQR

第 3 步:上传 QR 图像并读取 QR 图像

现在,让我们创建一个 QR 码应用程序。

创建 QrCode 模型

using System.ComponentModel.DataAnnotations;
namespace IronQRScannerAsp.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Select QR Image")]
        public IFormFile QRCodeImage
        {
            get;
            set;
        }
    }
}
using System.ComponentModel.DataAnnotations;
namespace IronQRScannerAsp.Models
{
    public class QRCodeModel
    {
        [Display(Name = "Select QR Image")]
        public IFormFile QRCodeImage
        {
            get;
            set;
        }
    }
}
Imports System.ComponentModel.DataAnnotations
Namespace IronQRScannerAsp.Models
	Public Class QRCodeModel
		<Display(Name := "Select QR Image")>
		Public Property QRCodeImage() As IFormFile
	End Class
End Namespace
VB   C#

创建 QR 码控制器

右键单击控制器文件夹并提供如下所示的名称,添加一个新控制器:

如何在 ASP .NET 中扫描 QR 码:图 7 - 点击文件夹添加新控制器并为其命名

选择空控制器。

如何在 ASP .NET 中扫描 QR 码:图 8 - 单击提示符上的空控制器

提供控制器名称。

如何在 ASP .NET 中扫描 QR 码:图 9 - 命名控制器

现在将以下代码添加到控制器中。

using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace IronQRScannerAsp.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        public IActionResult Index()
        {
          ViewBag.QrCodeText = "Text";
          return View();
        }
        [HttpPost]
        public IActionResult ScanQRCode(QRCodeModel qrImage)
        {
            string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
            using (var stream = System.IO.File.Create(filePath))
            {
                qrImage.QRCodeImage.CopyTo(stream);
            }
            // 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 an get all embedded QR Codes
            IEnumerable<QrResult> results = reader.Read(imageInput);
            ViewBag.QrCodeText = results.First().Value;
            string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
            ViewBag.QrCodeUri = imageUrl;
          return View();
        }
    }
}
using IronQr;
using IronQRScannerAsp.Models;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
namespace IronQRScannerAsp.Controllers
{
    public class QrCodeController : Controller
    {
        private readonly IWebHostEnvironment _environment;
        public QrCodeController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        public IActionResult Index()
        {
          ViewBag.QrCodeText = "Text";
          return View();
        }
        [HttpPost]
        public IActionResult ScanQRCode(QRCodeModel qrImage)
        {
            string path = Path.Combine(_environment.WebRootPath, "ScanQRCode");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            string filePath = Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png");
            using (var stream = System.IO.File.Create(filePath))
            {
                qrImage.QRCodeImage.CopyTo(stream);
            }
            // 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 an get all embedded QR Codes
            IEnumerable<QrResult> results = reader.Read(imageInput);
            ViewBag.QrCodeText = results.First().Value;
            string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/ScanQRCode/qrcode.png";
            ViewBag.QrCodeUri = imageUrl;
          return View();
        }
    }
}
Imports IronQr
Imports IronQRScannerAsp.Models
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Namespace IronQRScannerAsp.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
		  ViewBag.QrCodeText = "Text"
		  Return View()
		End Function
		<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
			Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "ScanQRCode/qrcode.png")
			Using stream = System.IO.File.Create(filePath)
				qrImage.QRCodeImage.CopyTo(stream)
			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 an get all embedded QR Codes
			Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
			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
VB   C#

代码解释

所提供的代码片段用于名为 QrCodeController 的 ASP.NET Core MVC 控制器,该控制器旨在使用 IronQR 库处理二维码扫描功能。 以下是代码作用的简要说明:

1.保存上传的二维码图像

路径构建

它构建了一个文件路径(路)在应用程序的网络根目录中,专门用于保存二维码图像("ScanQRCode "目录).

它将检查该目录是否存在,如果不存在,则创建该目录,以避免在保存文件时出现找不到文件的错误。

文件保存

它构建了完整的文件路径(文件路径)上传的 QR 码图像将保存在何处("ScanQRCode/qrcode.png"). 这将覆盖同名的任何现有文件,有效处理新扫描,而不会累积文件。

打开文件流并复制上传图片的内容(qrImage.QRCodeImage",可能是表单文件)到服务器上的指定位置。

2.解码 QR 码

阅读图像文件

使用 `AnyBitmap.FromFile(文件路径)将保存的图像文件加载为适合 QR 码扫描的格式。 AnyBitmap "可能是一个辅助类,用于将图像文件转换为 QR 阅读器可以处理的位图对象。

初始化 QR 阅读器

将加载的位图封装为 "QrImageInput",该输入是专门设计用于二维码读取过程的输入。 实例化 "QrReader",它是 IronQR 库的一个组件,配置用于检测和解码 QR 代码。

扫描二维码

调用 reader.Read(图像输入)扫描图片获取 QR 码。 此方法返回一个IEnumerable其中每个 QrResult 包含来自图像中检测到的二维码的数据。 它使用results.First'提取第一个结果的值。()翻译时,应使用ViewBag.QrCodeText中的 .Value,并将解码后的信息存储在 ViewBag.QrCodeText 中。 译文假定图片至少包含一个 QR 码,并且不处理未检测到 QR 码的潜在错误。

3.准备和退回答复

图片 URL 构建

构建 URL(imageUrl)指向服务器上保存的 QR 代码图像。 该 URL 使用当前 HTTP 请求的方案、主机和路径基础构建,确保用户可以访问查看。 构建的 URL 保存在 ViewBag.QrCodeUri 中。

查看返回

返回同一视图(查看()`)在翻译过程中,翻译人员必须确保翻译的专业性,在解释这些开发人员工具的功能和优点的同时,保持技术上的准确性。 ViewBag "用于将二维码的解码文本和图片的 URL 传递给视图进行渲染。

在控制器类中添加视图

添加一个新视图,右键单击 QrCodeController 类中的 CreateQRCode 操作方法。

如何在 ASP .NET 中扫描 QR 码:图 10 - 在 `QrCodeController` 类中添加一个新视图

选择 "添加视图 "选项,然后选择 "Razor View"。 点击 "添加"。

如何在 ASP .NET 中扫描 QR 码:图 11 - 选择 添加视图 选项,然后选择 剃刀视图,再选择 添加。

然后选择之前生成的 "创建 "模板和模型类。

如何在 ASP .NET 中扫描 QR 码:图 12 - 选择先前生成的创建模板

现在将视图类中的代码替换为下图所示的代码。

@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">
            </div>
            <div class="form-group">
                <h3>Scanned Text:</h3>
                <h4>@ViewBag.QrCodeText</h4>
            </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 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">
            </div>
            <div class="form-group">
                <h3>Scanned Text:</h3>
                <h4>@ViewBag.QrCodeText</h4>
            </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 IronQRScannerAsp.Models.QRCodeModel
	ViewData("Title") = "ScanQRCode"
End Property
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <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"> </div> <div class="form-group"> <h3> Scanned Text:</h3> <h4> @ViewBag.QrCodeText</h4> </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
"form-group"> </div> <div class="form-group"> (Of h3) Scanned Text
	Inherits </h3>(Of h4) ViewBag.QrCodeText</h4> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="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> 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"> </div> <div class
"text-danger"></div> <div class="form-group"> </div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Friend <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
"ModelOnly" class="text-danger"></div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Friend <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
"multipart/form-data"> <div asp-validation-summary="ModelOnly" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Friend <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
"ScanQRCode" enctype="multipart/form-data"> <div asp-validation-summary
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Friend <h1> ScanQRCode</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-14"> <form asp-action="ScanQRCode" enctype
"col-md-14"> <form asp-action="ScanQRCode" enctype
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Friend <h1> ScanQRCode</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-14"> <form asp-action
"row"> <div class="col-md-14"> <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 Friend (Of h1) ScanQRCode</h1> (Of h4) QRCodeModel</h4> <hr /> <div Class="row"> <div class
	@
	If True Then
		Await Html.RenderPartialAsync("_ValidationScriptsPartial")
	End If
End Class
VB   C#

现在在 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 Controller。

输入带 URL 的图片:https://ironsoftware.com/csharp/qr

如何在 ASP .NET 中扫描 QR 码:图 13 - QR 码输入示例

输出

如何在 ASP .NET 中扫描 QR 码:图 14 - 按上述步骤操作后的输出示例

在页面上选择一个 QR 代码图像,然后点击上传以解码 QR 代码。 此应用程序也可修改为从视频源读取并显示结果。

步骤 4:阅读高级 QR 代码

要读取高级 QR 代码,IronQR 提供以下设置。

using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;
var inputBmp = AnyBitmap.FromFile("QrImage.png");
// Use Auto => Machine Learning Scan
// Careful Scan => Useful for scanning documents slowly and carefully
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 => For scanning frames from a camera
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);
using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;
using System.Collections.Generic;
var inputBmp = AnyBitmap.FromFile("QrImage.png");
// Use Auto => Machine Learning Scan
// Careful Scan => Useful for scanning documents slowly and carefully
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 => For scanning frames from a camera
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);
Imports IronQr
Imports IronSoftware.Drawing
Imports IronQr.Enum
Imports System.Collections.Generic
Private inputBmp = AnyBitmap.FromFile("QrImage.png")
' Use Auto => Machine Learning Scan
' Careful Scan => Useful for scanning documents slowly and carefully
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 => For scanning frames from a camera
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)
VB   C#

通过利用最新的 ML 技术,我们将 QR 码阅读器提升到了新的高度。 即使在复杂的条件下,复杂的 ML 模型也能提高应用程序解码 QR 代码的准确性和效率。 无论是从静态图像、视频流还是实时摄像机画面中读取 QR 码,由 ML 驱动的解决方案都能快速、可靠地提供所需的信息。 这项创新通过识别真实 QR 代码和标记潜在威胁,简化了数据检索并提高了安全性。 有了我们的 ML 技术,您可以确信您的二维码扫描功能处于最前沿,为您的用户提供流畅、安全的体验。

许可证(可试用)

开发人员可从以下网站获得 IronQR 试用许可证这里. 密钥需要放在 appSettings.json 中。

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

结论

在本文中,我们探讨了如何在 ASP.NET Core 中使用IronQR. 集成IronQR在 ASP.NET 应用程序中加入 QR 码扫描功能是一个简单直接的过程,可以增强网络应用程序的功能,使其更具交互性和用户友好性。 IronQR的强大功能和易用性使其成为开发人员实现条形码相关功能的绝佳选择。

< 前一页
如何在ASP .NET Core中生成QR码
下一步 >
如何在C#中扫描QR码

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 22,660 查看许可证 >