LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

用 C#.Net 和免费开源库 QRCoder 轻松生成二维码 ,告别繁琐配置!

admin
2026年7月1日 10:13 本文热度 303

前言

在数字化办公和日常生活中,二维码已是不可或缺的一部分。

假设老板让你搞个二维码生成功能,你会怎么实现呢?

如果你去找商业组件,不仅麻烦还可能要花钱;

如果自己从头写算法,那简直是自虐。

其实,在 .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();
        }
    }
}

5. 运行和测试

按下 F5 运行!

你会发现项目目录下多了一个 Upload/QR 文件夹,里面躺着一张清晰的二维码图片。

总结

好了,今天的分享就到这里啦!

回顾一下,我们只用了不到 50 行代码,就给我们的系统装上了一个强大的“二维码生成器”。

相比起那些复杂的商业SDK,QRCoder 这种纯 C# 实现的开源库,不仅没有额外的部署依赖,而且性能非常出色,完全能满足绝大多数业务场景(比如生成支付码、登录码、名片信息等)。

建议把 QRUtil 这个类直接收藏起来,它可能会帮助到你未来的某个项目。

如果你有更高级的需求,比如生成带Logo的二维码、生成 SVG 格式或者生成 WiFi 连接码,QRCoder 其实也都支持,大家可以去它的 GitHub 仓库探索更多玩法。

关键词

.NET、C#、QRCoder、二维码、编程技巧


该文章在 2026/7/1 14:53:43 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-9  粤公网安备44030602007207号