使用 QRCoder 在 C# (.NET) 中生成 QR 码

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

使用 QRCoder 库在 C# (.NET) 中生成 QR 码



QR 码已成为现代网页和移动应用程序不可或缺的一部分。它们用于快速传输链接、联系信息、Wi-Fi 密码、支付详情等。在 C# (.NET) 生态系统中,最简单、最流行的 QR 码生成库之一是 QRCoder。在本文中,我们将详细介绍如何安装该库、创建简单和复杂的 QR 码,以及将其保存为各种格式(PNG、SVG)。



什么是 QRCoder?



QRCoder 是一个轻量级、高性能的开源 .NET 库(支持 .NET Framework 4.6+ 和 .NET Core/.NET 5+)。除了用于位图图像的标准 System.Drawing 库外,它不需要外部依赖。主要功能包括:

  • 从文本、URL、联系人(vCard)、Wi-Fi 设置、短信、电子邮件和其他格式生成 QR 码。
  • 配置纠错级别(L、M、Q、H)。
  • 选择 QR 码版本(矩阵大小)。
  • 导出为 PNG、BMP、SVG、XAML、EPS、PostScript 和 HTML。
  • 支持颜色、背景、透明度和自定义徽标。


在 C# 项目中安装



通过 NuGet 包管理器安装 QRCoder 库。打开包管理器控制台或使用 .NET CLI:



dotnet add package QRCoder


或者通过包管理器控制台:



Install-Package QRCoder


基本示例 — 生成简单的 QR 码



让我们创建一个控制台应用程序,为字符串 "https://pythonlib.ru" 生成 QR 码并将其保存为 PNG 文件。



using QRCoder;using System.Drawing;

string url = "https://pythonlib.ru";QRCodeGenerator qrGenerator = new QRCodeGenerator();QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q);QRCode qrCode = new QRCode(qrCodeData);

// 生成图像(像素)Bitmap qrCodeImage = qrCode.GetGraphic(20);

// 保存到文件qrCodeImage.Save("qrcode.png", System.Drawing.Imaging.ImageFormat.Png);

Console.WriteLine("QR 码已创建:qrcode.png");


在此示例中:

  • ECCLevel.Q — 纠错级别(25% 的数据可能被损坏)。
  • GetGraphic(20) — 每个模块(小方块)的像素大小。
  • 结果是黑白 PNG。


自定义外观 — 颜色、徽标、SVG



QRCoder 允许灵活自定义 QR 码的外观。让我们看一个带有彩色背景、深色模块和嵌入徽标的示例。



using QRCoder;using System.Drawing;

string data = "https://pythonlib.ru";QRCodeGenerator qrGenerator = new QRCodeGenerator();QRCodeData qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.Q);QRCode qrCode = new QRCode(qrCodeData);

// 颜色设置Color darkColor = Color.FromArgb(52, 73, 94); // 深蓝色Color lightColor = Color.FromArgb(236, 240, 241); // 浅灰色

// 使用徽标生成(徽标应位于中心)Bitmap logo = new Bitmap("logo.png");Bitmap qrCodeImage = qrCode.GetGraphic(20, darkColor, lightColor, logo);

qrCodeImage.Save("qrcode_color.png", System.Drawing.Imaging.ImageFormat.Png);Console.WriteLine("带有徽标的彩色 QR 码已保存。");


请注意:为了正确使用徽标,建议使用 ECCLevel.Q 或 ECCLevel.H 纠错级别,因为徽标会覆盖部分数据。



导出为 SVG(矢量格式)



如果您需要可缩放的 QR 码(例如用于打印),请使用 SVG 渲染器。为此,请安装额外的包 QRCoder.Svg:



                    

推荐