前言
在数字化办公和日常生活中,二维码已是不可或缺的一部分。
假设老板让你搞个二维码生成功能,你会怎么实现呢?
如果你去找商业组件,不仅麻烦还可能要花钱;
如果自己从头写算法,那简直是自虐。
其实,在 .NET 的生态里,有一个很不错的开源库——QRCoder,能帮你轻松解决这个问题。
今天,我就带大家用最简单的方式,把这个“神器”接入到我们的项目中。
不管你是做 Web 项目还是桌面应用,只要学会了这一招,以后遇到二维码需求,你都能自信地说:“没问题,很快就好!”
详细实现步骤
1. 创建一个 Console 控制台应用项目,命名为 QRSample
2. 打开 NuGet 包管理器,搜索并安装 QRCoder:
QRCoder
https://github.com/Shane32/QRCoder
3. 封装核心工具类 (QRUtil.cs)
为了方便复用,新建一个 QRUtil.cs 文件,编写一个静态工具类。
这段代码是核心,我加了详细的注释,大家可以直接复制使用:
using QRCoder;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespaceCommonUtil
{
/// <summary>
/// 二维码生成工具类
/// </summary>
publicstaticclassQRUtil
{
/// <summary>
/// 生成二维码并保存为图片文件
/// </summary>
/// <param name="data">要编码的数据 (如网址、文本)</param>
/// <param name="pixelsPerModule">每个模块的像素大小 (默认30,数值越大二维码越清晰但图片越大)</param>
/// <returns>返回保存后的相对路径</returns>
public static string GenerateQR2File(string data, int pixelsPerModule = 30)
{
try
{
// 1. 创建二维码生成器
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
{
// 2. 创建二维码数据
// ECCLevel.Q 代表纠错级别为"Q" (25%的纠错能力)
// 即使二维码磨损或遮挡了25%,依然可以被正确扫描
// 纠错级别:L(7%), M(15%), Q(25%), H(30%)
QRCodeData qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.Q);
// 3. 创建二维码图形对象
using (QRCode qrCode = new QRCode(qrCodeData))
{
// 4. 生成位图图像
// 参数说明:像素大小、前景色(黑)、背景色(白)、是否绘制静音区
Bitmap qrCodeImage = qrCode.GetGraphic(pixelsPerModule, Color.Black, Color.White, true);
// 5. 生成文件名与路径 (这里模拟Web项目的上传路径)
string qrName = $"{Guid.NewGuid():N}.png"; // 去掉GUID中的横线
string filePathDB = $"/Upload/QR/{qrName}";
string webPath = HttpContext.Current.Server.MapPath("~");
string filePath = Path.Combine(webPath, "Upload", "QR", $"{qrName}");
string saveDirectory = Path.GetDirectoryName(filePath);
// 确保目录存在
if (!Directory.Exists(saveDirectory))
{
Directory.CreateDirectory(saveDirectory);
}
// 6. 保存图片
qrCodeImage.Save(filePath, ImageFormat.Png);
// 返回相对路径,方便前端展示
return filePathDB;
}
}
}
catch (Exception ex)
{
throw;
}
}
}
}
4. 在 Program.cs 应用
using System;
namespaceQRSample
{
classProgram
{
static void Main(string[] args)
{
string data = "https://github.com/Shane32/QRCoder"; // 要编码的内容
string resultPath = QRUtil.GenerateQR2File(data);
Console.WriteLine($"二维码已生成,路径:{resultPath}");
Console.ReadKey();
}
}
}
按下 F5 运行!
你会发现项目目录下多了一个 Upload/QR 文件夹,里面躺着一张清晰的二维码图片。
总结
好了,今天的分享就到这里啦!
回顾一下,我们只用了不到 50 行代码,就给我们的系统装上了一个强大的“二维码生成器”。
相比起那些复杂的商业SDK,QRCoder 这种纯 C# 实现的开源库,不仅没有额外的部署依赖,而且性能非常出色,完全能满足绝大多数业务场景(比如生成支付码、登录码、名片信息等)。
建议把 QRUtil 这个类直接收藏起来,它可能会帮助到你未来的某个项目。
如果你有更高级的需求,比如生成带Logo的二维码、生成 SVG 格式或者生成 WiFi 连接码,QRCoder 其实也都支持,大家可以去它的 GitHub 仓库探索更多玩法。
关键词
.NET、C#、QRCoder、二维码、编程技巧
该文章在 2026/7/1 14:53:43 编辑过