当前位置: 首页 > news >正文

在 ASP.NET 项目中用 C# 生成二维码

二维码(QR Code)已广泛应用于网址分享、支付链接、票务验证、身份登录等场景。在 ASP.NET 项目中,我们可以通过 C# 结合 Free Spire.Barcode for .NET 快速生成二维码,并将其直接显示在网页上,或制作下载链接。

本文将以 ASP.NET Core Web App(Razor Page) 为示例,演示如何实现 输入文本/URL → 生成二维码 → 在线显示与下载 的完整流程。

  • 创建输入与显示二维码的页面
  • 在后台生成二维码图片并返回 Base64 编码
  • 将二维码显示到页面并提供下载功能

本文示例使用 Free Spire.Barcode for .NET 生成二维码。你可以通过 NuGet 安装:

dotnet add package FreeSpire.Barcode

1. 创建前端页面(Index.cshtml)

在 Razor Page 中,我们需要一个输入框供用户填写二维码内容,以及一个提交按钮触发后台生成逻辑。生成的二维码将直接以图片的形式显示,并提供下载链接。

优化后的 HTML 代码示例:

@page
@model IndexModel
@{ViewData["Title"] = "QR Code Generator";
}<h2 style="font-family: Arial; color: #2c3e50;">QR Code Generator</h2><form method="post" style="margin-bottom:20px; background-color:#f9f9f9; padding:15px; border-radius:5px; width: fit-content;"><label for="InputData" style="font-weight:bold;">Enter text or URL:</label><br /><input type="text" id="InputData" name="InputData" style="width:300px; padding:5px; margin:5px 0;" required /><button type="submit" style="padding:5px 15px; background-color:#3498db; color:white; border:none; border-radius:3px; cursor:pointer;">Generate QR Code</button>
</form>@if (!string.IsNullOrEmpty(Model.QrCodeBase64))
{<div style="margin-top:20px; border:1px solid #ddd; padding:10px; display:inline-block; border-radius:5px;"><img src="data:image/png;base64,@Model.QrCodeBase64" alt="QR Code" style="display:block; margin-bottom:10px;" /><a href="data:image/png;base64,@Model.QrCodeBase64" download="qrcode.png" style="background-color:#2ecc71; color:white; padding:5px 10px; border-radius:3px; text-decoration:none;">Download QR Code</a></div>
}

前端实现要点:

  1. 表单通过 POST 提交输入数据;
  2. 二维码显示采用 data:image/png;base64 形式,无需保存到磁盘;
  3. 提供下载按钮,直接保存二维码图片到本地。

2. 后端二维码生成逻辑(Index.cshtml.cs)

后台逻辑的核心是利用 Spire.Barcode 提供的 BarcodeSettingsBarCodeGenerator 类生成二维码,并将生成的图片转换为 Base64 字符串返回给前端页面显示。

代码示例:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Spire.Barcode;public class IndexModel : PageModel
{[BindProperty]public string InputData { get; set; }public string QrCodeBase64 { get; set; }public void OnPost(){if (!string.IsNullOrWhiteSpace(InputData)){QrCodeBase64 = GenerateQrCodeBase64(InputData);}}private string GenerateQrCodeBase64(string input){var settings = new BarcodeSettings{Type = BarCodeType.QRCode,            // 指定二维码类型Data = input,                         // 编码数据Data2D = input,                       // 二维码需要设置 Data2DQRCodeDataMode = QRCodeDataMode.Byte, // 字节模式(支持多语言)QRCodeECL = QRCodeECL.M,              // 中等级纠错(可恢复 15% 数据)X = 3,                                // 模块大小ShowText = false,                     // 不显示默认条码文字ShowBottomText = true,                // 显示自定义底部文字BottomText = input                    // 底部显示输入内容};var generator = new BarCodeGenerator(settings);using var ms = new MemoryStream();var qrImage = generator.GenerateImage();qrImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);return Convert.ToBase64String(ms.ToArray());}
}

关键技术说明:

  • QRCodeDataMode.Byte:支持中文、日文等多字节字符,避免乱码;
  • QRCodeECL.M:中等级纠错,适合大部分场景;
  • BottomText:可自定义底部文字,比如显示原始输入内容。

3. 运行效果

当用户在输入框中填写内容并点击“Generate QR Code”按钮后,页面会立即生成二维码并显示,同时提供“Download QR Code”按钮,方便保存到本地。

示例效果(假设输入为 https://www.sample.com/):
ASP.NET C#生成二维码


总结

通过 ASP.NET Core Razor Page + Spire.Barcode for .NET,我们可以非常方便地实现网页端输入数据并生成二维码、即时显示二维码图片,并直接提供图片下载功能。这种方式无需额外的临时文件存储,生成速度快,适合在登录验证、活动报名、文件分享等场景中使用。


如果你需要更复杂的二维码功能(如带 Logo、颜色定制、批量生成等),可以继续扩展 BarcodeSettings 的参数。更多文档可参考:Spire.Barcode for .NET 官方教程

http://www.lryc.cn/news/617247.html

相关文章:

  • 为 Promethus 配置https访问
  • 无人机航拍数据集|第12期 无人机停车场车辆计数目标检测YOLO数据集1568张yolov11/yolov8/yolov5可训练
  • FP32、BF16、FP16三种方式比较
  • 计算机视觉CS231n学习(7)
  • 《范仲淹传》读书笔记与摘要
  • MySQL数据库简介
  • MySQL-日志
  • Vue 3 快速入门 第六章
  • Linux操作系统从入门到实战(十九)进程状态
  • JS-第二十三天-正则
  • 大数据量下分页查询性能优化实践(SpringBoot+MyBatis-Plus)
  • 集成电路学习:什么是URDF Model统一机器人描述格式模型
  • ZeroNews:如何构建安全(无需 V*N!)的工业物联网连接
  • 大模型落地:AI 技术重构工作与行业的底层逻辑
  • Salesforce案例:零售企业会员积分体系
  • 【软考架构】需求工程中,系统分析与设计的结构化方法
  • [Shell编程] Shell 编程之免交互
  • C语言模拟 MCU 上电后程序的执行顺序 + 回调函数机制 + 程序计数器(PC)和堆栈的作用
  • LangVM —— 一站式多语言版本管理工具,让 Java、Python、Go、Node.js 切换更丝滑
  • CVE-2019-0708复刻
  • buildroot编译qt 5.9.8 arm64版本踩坑
  • Windows文件时间修改指南:从手动到自动化
  • AI驱动的智能编码革命:从Copilot到全流程开发自动化
  • FFmepg源码系列-avformat_open_input()
  • Python调用C/C++函数库的多种方法与实践指南
  • 聊天室全栈开发-保姆级教程(Node.js+Websocket+Redis+HTML+CSS)
  • MathType关联Wps实现公式编辑【Tex语法适配】
  • 2438. 二的幂数组中查询范围内的乘积
  • 【liunx】web高可用---nginx
  • 编译Android版本可用的高版本iproute2