在现代业务应用中,在 ASP.NET 环境下扫描条码和二维码的需求非常常见。无论是票务验证、支付处理,还是库存管理,集成一个ASP.NET 二维码扫描器或条码读取功能,都能显著提升系统的效率和准确性。
本教程将演示如何使用 Spire.Barcode for .NET 和 C#,在 ASP.NET 中实现完整的条码扫描解决方案。我们将创建一个 ASP.NET Core Web 应用,能够从上传的图片中读取二维码和多种条码格式,识别准确,并可方便地集成到现有项目中。
教程概览
1. 项目创建
步骤 1:创建项目
创建一个新的 ASP.NET Core Razor Pages 项目,作为扫描功能的基础。可通过以下命令创建新项目,也可在 Visual Studio 中手动配置:
dotnet new webapp -n QrBarcodeScanner
cd QrBarcodeScanner
步骤 2:安装 Spire.Barcode for .NET
安装 Spire.Barcode for .NET NuGet 包。该组件支持解码多种条码类型,并提供简单易用的 API。可在 NuGet 包管理器中搜索或使用以下命令安装:
dotnet add package Spire.Barcode
Spire.Barcode for .NET 内置支持二维码和多种条码格式,如 Code128、EAN-13 和 Code39,无需额外的图像处理库即可集成到 ASP.NET 项目。更多支持的条码类型,请参考 BarCodeType API 文档。
对于小型项目,也可使用 Free Spire.Barcode for .NET。
2. 在 ASP.NET 中实现二维码与条码扫描功能
二维码和条码的扫描功能主要包括两部分:
- 处理和解码上传图片的后端逻辑。
- 网页界面,用于上传扫描图片并显示结果。
我们先实现后端,确保扫描流程正确,然后再连接一个简洁的 Razor Page 前端,从而构建一个完整的二维码与条码扫描解决方案。
后端:使用 Spire.Barcode 实现二维码和条码扫描逻辑
后端代码将上传的文件读入内存,并使用 Spire.Barcode 进行扫描,可通过内存流或文件路径处理。扫描结果会返回给前端。此实现支持二维码及其他条码类型,无需针对格式编写额外逻辑。
Index.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Spire.Barcode;
public class IndexModel : PageModel
{
[BindProperty]
public IFormFile Upload { get; set; } // 上传的文件
public string Result { get; set; } // 扫描结果
public string UploadedImageBase64 { get; set; } // 用于预览的 Base64 字符串
public void OnPost()
{
if (Upload != null && Upload.Length > 0)
{
using (var ms = new MemoryStream())
{
// 将上传文件读入内存
Upload.CopyTo(ms);
// 转换为 Base64,用于 HTML <img> 显示
UploadedImageBase64 = "data:" + Upload.ContentType + ";base64," +
Convert.ToBase64String(ms.ToArray());
// 重置流位置以便扫描
ms.Position = 0;
// 扫描二维码或条码
try
{
string[] scanned = BarcodeScanner.Scan(ms);
Result = scanned != null && scanned.Length > 0
? string.Join(", ", scanned)
: "未检测到二维码或条码。";
}
catch (Exception ex)
{
Result = "扫描过程中出错: " + ex.Message;
}
}
}
}
}
关键类和方法说明
- BarcodeScanner:Spire.Barcode 的静态类,用于解码图片中的二维码或条码。
- BarcodeScanner.Scan(Stream imageStream):从内存流扫描图片,返回解码后的字符串数组,可扫描图片中所有条码。Scan 方法会扫描图像中的所有条码,并返回扫描结果。
- 可选方法:
- BarcodeScanner.Scan(string imagePath):从文件路径扫描图片。
- BarcodeScanner.ScanInfo(string imagePath):返回附加条码信息,如类型、在图片中的位置和储存的数据。
根据应用需求,这些方法可灵活使用。
前端:二维码与条码上传及结果显示界面
下面的页面提供一个简洁的上传表单,用户上传包含二维码或条码的图片后,可显示图片及识别结果,并可一键复制。页面布局保持简洁,实现了在浏览器中快速识别二维码等条码的能力。
Index.cshtml
@page
@model IndexModel
@{
ViewData["Title"] = "二维码与条码扫描器";
}
<div style="max-width:420px;margin:40px auto;padding:20px;border:1px solid #ccc;border-radius:8px;background:#f9f9f9;">
<h2>二维码与条码扫描器</h2>
<form method="post" enctype="multipart/form-data" id="uploadForm">
<input type="file" name="upload" accept="image/*" required onchange="this.form.submit()" style="margin:10px 0;" />
</form>
@if (!string.IsNullOrEmpty(Model.UploadedImageBase64))
{
<div style="margin-top:15px;text-align:center;">
<img src="@Model.UploadedImageBase64" style="width:300px;height:300px;object-fit:contain;border:1px solid #ddd;background:#fff;" />
</div>
}
@if (!string.IsNullOrEmpty(Model.Result))
{
<div style="margin-top:15px;padding:10px;background:#e8f5e9;border-radius:6px;">
<b>扫描结果:</b>
<p id="scanText">@Model.Result</p>
<button type="button" onclick="navigator.clipboard.writeText(scanText.innerText)" style="background:#28a745;color:#fff;padding:6px 10px;border:none;border-radius:4px;">复制</button>
</div>
}
</div>
下图展示了扫描页面成功识别二维码和 Code128 条码后的效果,结果显示并可一键复制:
该 ASP.NET Core 应用可以从上传图片扫描二维码和条码。如需生成二维码或条码,请参考 在 ASP.NET Core 中生成二维码教程。
3. 测试与排错
运行应用后,可用以下图片测试扫描功能:
- 包含 URL 或纯文本的二维码图片。
- Code128 或 EAN-13 条形码图片。
若识别失败:
- 确保图片对比度清晰,畸变较小。
- 使用分辨率适中的图片(不要过大或像素化)。
- 测试不同格式,如 JPG、PNG 或 BMP。
- 避免反光、眩光或光线不足的图片。
- 当一张图片中有多个条码时,确保条码之间清晰分隔,以提高识别率。
建议维护一个小型二维码和条码样本库,用于修改代码后定期测试。
4. 扩展到其他 .NET 应用
本教程的条码扫描逻辑在不同 .NET 应用类型中使用方式相同,只需提供图片的方式不同。核心解码方法 BarcodeScanner.Scan() 可在以下环境中复用:
- ASP.NET Core MVC 控制器 或 Web API 接口
- 桌面应用(如 WinForms 或 WPF)
- 控制台工具(用于批量处理)
示例:最简 ASP.NET Core Web API 接口 — 接收 HTTP POST 上传的图片,并返回解码结果 JSON:
[ApiController]
[Route("api/[controller]")]
public class ScanController : ControllerBase
{
[HttpPost]
public IActionResult Scan(IFormFile file)
{
if (file == null) return BadRequest("未上传文件");
using var ms = new MemoryStream();
file.CopyTo(ms);
ms.Position = 0;
string[] results = BarcodeScanner.Scan(ms);
return Ok(results);
}
}
示例:控制台应用 — 扫描本地图片文件并打印解码文本:
string[] result = BarcodeScanner.Scan(@"C:\path\to\image.png");
Console.WriteLine(string.Join(", ", result));
这种灵活性方便开发者快速在新项目中集成二维码和条码扫描,或扩展已有 .NET 应用。
5. 总结
本教程展示了如何在 ASP.NET Core 中使用 Spire.Barcode for .NET,实现完整的二维码和条码扫描解决方案。从上传图片到解码显示结果,流程清晰,适用于多种应用类型。借助此方法,开发者可以快速在电商平台、票务系统、文件验证工具及其他关键业务 Web 应用中集成可靠的扫描功能。
对于更高级的场景,Spire.Barcode for .NET 提供了自定义识别流程、支持多种图片格式和条码类型等功能。申请免费试用以解锁所有高级功能。
立即下载 Spire.Barcode for .NET,开始构建自己的 ASP.NET 条码扫描解决方案。