IRONSOFTWAREHOME
USING IRONQR

如何在 ASP .NET 中扫描 QR 代码

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

QR码在我们的数字世界中无处不在,常用于广告、零售、活动管理等。 对于在ASP.NET框架中工作的开发者,将QR码扫描功能集成到Web应用程序中可以增强用户体验和功能性。 本文探讨了在ASP.NET应用程序中实施QR码扫描器的过程,涵盖所需的工具、库及逐步实现。 我们将使用IronQR,一个来自Iron Software的强大QR码生成库来读取QR码。

如何在ASP.NET中扫描QR码

  1. 使用Visual Studio创建一个ASP.NET项目。
  2. 从包管理器安装IronQR库。
  3. 上传QR图像并读取QR。
  4. 读取高级QR码。

理解QR码及其使用案例

QR(快速响应)码是二维条码,可以存储从URL到联系信息的各类信息,通常通过智能手机或专用扫描设备扫描。 在Web应用程序中,QR码可以用于多种用途,例如:

***快速访问网站:**无需输入即可将用户引导至特定 URL。 ***活动票务:**验证门票上的二维码以确认是否可进入活动现场。 ***支付系统:**通过扫描二维码实现便捷支付。 ***产品信息:**提供有关产品的更多信息。

介绍IronQR

IronQR是一个专为QR码生成和扫描设计的强大.NET库,以易用性提供强大的功能。 这个多功能库不仅能处理QR码,还能管理其他类型的条码,是在.NET生态系统中工作的开发者的首选。 在这里,我们将探讨如何将IronQR库集成到ASP.NET应用程序中以便进行QR码扫描。

IronQR的主要优势和特点

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

2.**编写二维码:**您可以生成二维码并将其保存为图像(jpg、png、gif、tiff、bmp)、流,甚至可以将其添加到现有的 PDF 中。 编码数据如文本,网址,字节和数字并生成QR码。 通过调整大小、调整边距、重新着色和添加徽标来自定义QR码样式。

3.错误处理和纠正: IronQR提供详细的错误信息和自定义 QR 错误纠正。 它确保故障容错,并支持空检查和校验和。

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

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

  1. 它支持不同的项目类型,包括Web(Blazor & WebForms)、移动(Xamarin & MAUI)、桌面(WPF & MAUI)和控制台应用程序。

7.广泛的二维码支持: IronQR擅长处理各种二维码和其他类型的条形码。 无论您是在处理标准QR码、Micro QR码、QR码条码图像,甚至特定格式如Aztec或Data Matrix,IronQR都能够满足您的需求。 IronQR还支持读取QR码条码的功能。

[IronQR](Iron Suite)的.NET API产品包括多种工具,用于办公文档、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 库

从Visual Studio包管理器安装IronQR库,如下所示:

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

IronQR也可以通过NuGet包管理器安装。

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

步骤 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; }
    }
}

创建一个二维码控制器

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

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

选择空控制器。

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

提供控制器名称。

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

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

// 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();
        }
    }
}

代码解释

提供的代码片段是一个命名为QrCodeController的ASP.NET Core MVC控制器,用于处理使用IronQR库的QR码扫描功能。 以下是代码的简要描述:

1. 保存上传的QR码图像

路径构建

  • 它在应用程序的Web根目录中构建一个用于保存QR码图像("ScanQRCode"目录)的文件路径。
  • 它会检查此目录是否存在,如果不存在,则创建它,以避免在保存文件时出现找不到文件的错误。

文件保存

  • 它构建了上传的QR码图像将被保存的完整文件路径(filePath)("ScanQRCode/qrcode.png")。 这将覆盖任何同名的现有文件,从而有效地处理新扫描,而不会积累文件。
  • 它打开一个文件流并将上传图像的内容(qrImage.QRCodeImage,可能是一个表单文件)复制到服务器上的指定位置。

2. 解码QR码

读取图像文件

  • 使用AnyBitmap.FromFile(filePath)将保存的图像文件加载为适合QR码扫描的格式。 AnyBitmap可能作为帮助类,用于将图像文件转换为二维码读取器可以处理的位图对象。

初始化QR阅读器

  • 将加载的位图包装到QrImageInput中,专为QR码读取过程的输入设计。
  • 实例化一个QrReader,这是IronQR库的一个组件,配置用于检测和解码QR码。

扫描QR码

  • 调用reader.Read(imageInput)扫描图像中的QR码。 此方法返回一个QrResult包含图像中检测到的QR码的数据。
  • 使用ViewBag.QrCodeText中。 这假设图像中至少包含一个QR码,并且不处理未检测到QR码的潜在错误。

3. 准备并返回响应

图像URL构建

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

视图返回

  • 返回相同的视图(View()),这可能显示给用户QR码图像和解码文本。 ViewBag用于将QR码的解码文本和图像的URL传递到视图以进行渲染。

向控制器类添加视图

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

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

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

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

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

如何在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">
                <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");}
}
Text

现在在Program.cs中更改以下代码,使上述视图作为默认路由:

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

这将默认路由从QrCode控制器。

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

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

输出

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

在页面上,选择一个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);

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

许可(提供试用)

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

{
  "IronQr.License.LicenseKey": "My Key"
}
JSON

结论

在这篇文章中,我们探讨了如何使用IronQR在ASP.NET Core中扫描QR码。 将IronQR集成到ASP.NET应用程序中进行QR码扫描是一个简便的过程,可增强Web应用程序的功能,使其更具互动性和用户友好。 IronQR强大的功能和易用性使其成为开发者想要实现条码相关功能的绝佳选择。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户