如何使用NuGet包在 C# 中生成二维码
在 .NET 应用程序中生成 QR 代码从未如此简单。 借助合适的 NuGet 包,您只需几行代码即可生成 QR 码、自定义其外观,并将其保存为多种输出格式。 IronQR 提供企业级 QR 码生成服务,支持 .NET Core、.NET Framework 以及 .NET 5-10 的跨平台环境。
本教程演示了如何安装 IronQR NuGet 包并立即开始生成 QR 码。 无论您是在构建库存管理系统、活动票务平台还是营销应用程序,IronQR 都能提供 Professional QR 实现所需的工具。
如何安装 QR Code NuGet 包?
通过 NuGet 软件包管理器安装 IronQR 只需几秒钟。 在 Visual Studio 中打开 NuGet 包管理器控制台并运行以下命令,或者在 CLI 环境中使用 dotnet add package 命令:
Install-Package IronQR
NuGet 软件包会自动处理所有依赖关系,确保与目标框架兼容。 IronQR 支持 .NET Framework 4.6.2 及以上版本、.NET Core 2.0 及以上版本以及 .NET 5-10,使其成为适用于任何 Visual Studio 项目的多功能库。
在编写任何代码之前,您需要一个免费试用许可证密钥。 请在应用程序启动初期设置此项,以便后续所有调用均经过身份验证:
using IronQr;
// Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
using IronQr;
// Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
Imports IronQr
' Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
安装许可证密钥后,您的应用程序即可生成、读取并自定义QR码,且输出图像上不会带有水印。
如何生成您的第一个QR码?
创建您的第一个QR码只需极少的代码。 QrWriter 类处理二维码生成,其默认值合理,适用于大多数使用场景:
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from text data
QrCode myQr = QrWriter.Write("Hello World");
// Save QR code as bitmap image
AnyBitmap qrImage = myQr.Save();
// Export to PNG file
qrImage.SaveAs("hello-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from text data
QrCode myQr = QrWriter.Write("Hello World");
// Save QR code as bitmap image
AnyBitmap qrImage = myQr.Save();
// Export to PNG file
qrImage.SaveAs("hello-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Generate a QR code from text data
Dim myQr As QrCode = QrWriter.Write("Hello World")
' Save QR code as bitmap image
Dim qrImage As AnyBitmap = myQr.Save()
' Export to PNG file
qrImage.SaveAs("hello-qr.png")
QR 代码输出
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-1.webp">NuGet QR 码生成器:只需几行代码即可在 C# 中生成 QR 码:图片 1 - 简单 QR 输出。
QrWriter.Write() 方法接受字符串数据,并返回一个包含 QR 符号的 QrCode 对象。 Save() 方法将其转换为 AnyBitmap,支持编码为各种图像格式或导出矢量数据以用于 XAML 路径。 这种方法适用于 Windows、macOS 和 Linux,没有特定于平台的依赖项——这与依赖 System.Drawing 的库不同,后者从 .NET 6 开始仅适用于 Windows。
上述三行代码模式涵盖了最常见的场景:编码字符串、获取位图、写入文件。在实际生产环境中,您通常会传入 URL 字符串、产品标识符或 JSON 数据,而非纯文本。
如何选择合适的错误修正级别?
QR 码支持 ISO/IEC 18004 QR 码标准中定义的四种纠错级别,这些级别决定了 QR 码在遭受多大程度的损坏后仍可被扫描。 IronQR 通过 QrOptions 类支持所有四个级别:
| 级别 | 恢复能力 | 最适合 |
|---|---|---|
| L (低) | 约7% | 整洁的环境,最大数据密度 |
| M(中等) | 约15% | 通用设置(默认) |
| Q(四分位数) | 约25% | 工业应用 |
| H (高) | 约30% | 徽标、户外标识、部分遮挡 |
using IronQr;
using IronSoftware.Drawing;
// Configure high error correction level
var options = new QrOptions(QrErrorCorrection级别.High);
// Generate QR code with options
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap image = qr.Save();
image.SaveAs("high-correction-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Configure high error correction level
var options = new QrOptions(QrErrorCorrection级别.High);
// Generate QR code with options
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap image = qr.Save();
image.SaveAs("high-correction-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Configure high error correction level
Dim options As New QrOptions(QrErrorCorrectionLevel.High)
' Generate QR code with options
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options)
Dim image As AnyBitmap = qr.Save()
image.SaveAs("high-correction-qr.png")
输出
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-2.webp">NuGet QR 码生成器:只需几行代码即可在 C# 中生成 QR 码:图片 2 - 具有高修正级别的 QR
纠错级别越高,QR 符号越密集,原始模块越多,即使代码部分模糊或损坏,也能保持可读性。 对于将印制在包装上或嵌入徽标中的代码,H级是理想选择。对于仅用于数字显示且无需担心损坏的情况,M级在数据容量与可靠性之间实现了平衡。
选择错误的级别是生产环境中扫描失败的常见原因。 如果您的 QR 码将出现在实体材料上,或与摄像头之间的距离不固定,请使用 Q 级或 H 级,并在部署前使用多个扫描应用验证输出效果。
如何自定义QR码的外观?
IronQR 通过 QrStyleOptions 提供丰富的样式选项,支持自定义颜色、尺寸、边距和徽标嵌入。 品牌QR码在营销场景中表现更佳,因为它们在视觉上将QR码与已知的品牌身份建立了关联:
using IronQr;
using IronSoftware.Drawing;
// Create styled QR code with custom colors
var styleOptions = new QrStyleOptions
{
Dimensions = 300, // Width and height in pixels
Margins = 10, // Quiet zone in pixels
Color = Color.DarkBlue,
BackgroundColor = Color.White
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap styledImage = qr.Save(styleOptions);
styledImage.SaveAs("styled-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Create styled QR code with custom colors
var styleOptions = new QrStyleOptions
{
Dimensions = 300, // Width and height in pixels
Margins = 10, // Quiet zone in pixels
Color = Color.DarkBlue,
BackgroundColor = Color.White
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap styledImage = qr.Save(styleOptions);
styledImage.SaveAs("styled-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Create styled QR code with custom colors
Dim styleOptions As New QrStyleOptions With {
.Dimensions = 300, ' Width and height in pixels
.Margins = 10, ' Quiet zone in pixels
.Color = Color.DarkBlue,
.BackgroundColor = Color.White
}
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
Dim styledImage As AnyBitmap = qr.Save(styleOptions)
styledImage.SaveAs("styled-qr.png")
有风格的 QR 输出
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-3.webp">NuGet QR 码生成器:只需几行代码即可在 C# 中生成 QR 码:图片 3 - 风格化 QR 代码。
Dimensions 属性以像素为单位设置宽度和高度。 Margins 属性控制静默区——扫描器用来定位代码边界的围绕二维码符号的白色边框。 若将边距缩小至低于建议的 4 个模块的最小值,可能会导致旧款设备扫描失败。
在 QR 代码中添加徽标可提高品牌识别度。 该样式系统可在保持可读性的同时自动定位徽标——这相较于需要手动计算位置的开源替代方案而言,是一项显著优势。
如何将QR码保存为不同的输出格式?
IronQR 支持多种输出格式,包括 PNG、JPEG、GIF、TIFF、BMP 和 SVG。 SaveAs 方法会自动根据文件扩展名检测文件格式:
using IronQr;
using IronSoftware.Drawing;
QrCode qr = QrWriter.Write("Format demonstration");
AnyBitmap image = qr.Save();
// Save to raster image formats
image.SaveAs("qr-output.png");
image.SaveAs("qr-output.jpg");
image.SaveAs("qr-output.gif");
// Get as byte array for HTTP responses or database storage
byte[] pngBytes = image.ExportBytes();
using IronQr;
using IronSoftware.Drawing;
QrCode qr = QrWriter.Write("Format demonstration");
AnyBitmap image = qr.Save();
// Save to raster image formats
image.SaveAs("qr-output.png");
image.SaveAs("qr-output.jpg");
image.SaveAs("qr-output.gif");
// Get as byte array for HTTP responses or database storage
byte[] pngBytes = image.ExportBytes();
Imports IronQr
Imports IronSoftware.Drawing
Dim qr As QrCode = QrWriter.Write("Format demonstration")
Dim image As AnyBitmap = qr.Save()
' Save to raster image formats
image.SaveAs("qr-output.png")
image.SaveAs("qr-output.jpg")
image.SaveAs("qr-output.gif")
' Get as byte array for HTTP responses or database storage
Dim pngBytes As Byte() = image.ExportBytes()
多种二维码输出格式
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-4.webp">NuGet QR 码生成器:只需几行代码即可在 C# 中生成 QR 码:图片 4 - 以不同文件格式保存的 QR 代码。
ExportBytes() 方法在 Web 应用程序中特别有用,它允许您通过 HTTP 返回二维码图像而不写入磁盘。 您可以将字节数组直接写入响应流,或将其存储在数据库列中以便按需检索。
IronQR 提供 StampToExistingPdfPage 方法,用于在 PDF 文档中嵌入二维码,从而可以直接在现有文档上放置二维码。 该库支持原生运行,无需额外安装 PDF 库,这在希望尽可能减少依赖项数量的微服务环境中尤为重要。
IronQR NuGet 包与 QRCoder 相比如何?
QRCoder 库是 .NET 环境中广受欢迎的 QR 码生成开源方案。 使用过 QRCoder 的开发者都熟悉它的多步骤 API,其中涉及 QRCodeGenerator、QRCodeData 以及单独的渲染类,例如 PngByteQRCode。 IronQR 将其简化为单个 QrWriter.Write() 调用。
| 特征 | IronQR | QRCoder |
|---|---|---|
| 跨平台渲染 | 全面支持 .NET 5-10 | 仅限 Windows 系统进行位图渲染 |
| 基于机器学习的阅读 | 99.9% 准确率检测 | 仅生成文本,不进行阅读 |
| PDF 集成 | 原生水印支持 | 需要其他库 |
| 商业支持 | 24/5 工程支持 | 仅限社区 |
| 徽标嵌入 | 内置,自动定位 | 需手动覆盖 |
QRCoder 在 Windows 环境中用于基础生成效果良好。 IronQR 的机器学习模型可实现从任意角度精准读取 QR 码——这对处理用户提交图片的应用程序至关重要,因为此类应用无法控制输入图像的质量。 单方法 API 还减少了实现可运行功能所需的代码行数。
对于从 QRCoder 迁移的团队,请参阅《QRCoder 到 IronQR 迁移指南》,其中提供了 API 的对照映射。
如何将二进制数据编码到QR码中?
除了文本外,IronQR 还支持对字节数组进行编码,以生成二进制 QR 码有效载荷。 这对于无法表示为 UTF-8 字符串的加密令牌、序列化对象或原始二进制标识符非常有用:
using IronQr;
using IronSoftware.Drawing;
// Encode binary data -- useful for encrypted payloads or binary identifiers
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Binary content example");
QrCode qr = QrWriter.Write(binaryData);
qr.Save().SaveAs("binary-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Encode binary data -- useful for encrypted payloads or binary identifiers
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Binary content example");
QrCode qr = QrWriter.Write(binaryData);
qr.Save().SaveAs("binary-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Encode binary data -- useful for encrypted payloads or binary identifiers
Dim binaryData As Byte() = System.Text.Encoding.UTF8.GetBytes("Binary content example")
Dim qr As QrCode = QrWriter.Write(binaryData)
qr.Save().SaveAs("binary-qr.png")
输出
!a href="/static-assets/qr/blog/nuget-qr-code/nuget-qr-code-5.webp">NuGet QR 码生成器:只需几行代码即可在 C# 中生成 QR 码:图片 5 - 二进制编码 QR 代码。
二进制编码使您能够在QR码中包含加密有效载荷、序列化对象或任何二进制内容。 接收端的扫描器必须懂得如何解析二进制有效载荷——这在访问控制系统中很常见,因为QR码中包含的是带签名的令牌,而非人可读的 URL。
请注意,二进制数据生成的QR符号比等效的文本数据更为密集。 如果有效载荷大小会影响远距离扫描的可靠性,请应用 H 级错误校正,并使用用户可能拥有的最小规格相机进行测试。
如何在 C# 中读取 QR 码?
IronQR 支持读写双功能。 QrReader 类接受图像文件、位图和相机帧,使其既适用于批量处理也适用于实时扫描场景:
using IronQr;
using IronSoftware.Drawing;
// Load an existing image containing a QR code
var inputImage = AnyBitmap.FromFile("qr-to-read.png");
// Read all QR codes in the image
QrReadResult readResult = QrReader.Read(inputImage);
foreach (QrResult result in readResult.QrCodes)
{
// Access the decoded value
Console.WriteLine($"Decoded: {result.Value}");
}
using IronQr;
using IronSoftware.Drawing;
// Load an existing image containing a QR code
var inputImage = AnyBitmap.FromFile("qr-to-read.png");
// Read all QR codes in the image
QrReadResult readResult = QrReader.Read(inputImage);
foreach (QrResult result in readResult.QrCodes)
{
// Access the decoded value
Console.WriteLine($"Decoded: {result.Value}");
}
Imports IronQr
Imports IronSoftware.Drawing
' Load an existing image containing a QR code
Dim inputImage = AnyBitmap.FromFile("qr-to-read.png")
' Read all QR codes in the image
Dim readResult As QrReadResult = QrReader.Read(inputImage)
For Each result As QrResult In readResult.QrCodes
' Access the decoded value
Console.WriteLine($"Decoded: {result.Value}")
Next
该基于机器学习的阅读引擎可处理任意方向的图像,并能处理在错误校正阈值范围内的局部损坏。 针对实际应用场景,请查阅QR读取教程,了解如何处理低质量输入、多码图像以及扫描模式配置。
如何在 ASP.NET Core 应用程序中使用 IronQR?
Web 应用程序经常需要按需生成 QR 码——例如用于用户账户链接、一次性登录码或支付请求。 以下示例演示了如何直接从 .NET Core 最小 API 端点提供 QR 码图像:
using IronQr;
using IronSoftware.Drawing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Return a QR code PNG for a given URL parameter
app.MapGet("/qr", (string data) =>
{
QrCode qr = QrWriter.Write(data);
AnyBitmap image = qr.Save();
byte[] pngBytes = image.ExportBytes();
return Results.File(pngBytes, "image/png");
});
app.Run();
using IronQr;
using IronSoftware.Drawing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Return a QR code PNG for a given URL parameter
app.MapGet("/qr", (string data) =>
{
QrCode qr = QrWriter.Write(data);
AnyBitmap image = qr.Save();
byte[] pngBytes = image.ExportBytes();
return Results.File(pngBytes, "image/png");
});
app.Run();
Imports IronQr
Imports IronSoftware.Drawing
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
' Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
' Return a QR code PNG for a given URL parameter
app.MapGet("/qr", Function(data As String)
Dim qr As QrCode = QrWriter.Write(data)
Dim image As AnyBitmap = qr.Save()
Dim pngBytes As Byte() = image.ExportBytes()
Return Results.File(pngBytes, "image/png")
End Function)
app.Run()
这种模式既适用于 ASP.NET Core 的极简 API,也适用于标准的 MVC 控制器。ExportBytes() 调用避免了将临时文件写入磁盘,这在文件系统可能是只读或临时的容器化部署中非常重要。
如需完整的 ASP.NET Core 集成指南,请参阅 ASP.NET Core QR 生成器教程。 Blazor 专属指南也可在 Blazor QR 码生成器教程中找到。
如何为QR图像添加边距并调整其大小?
控制尺寸和安全区对于获得高质量的PRINT输出至关重要。 IronQR 通过 QrStyleOptions 公开了这两种方式,并且有专门的操作指南详细介绍了每一种方式:
using IronQr;
using IronSoftware.Drawing;
// Specify dimensions and quiet zone for print output
var printOptions = new QrStyleOptions
{
Dimensions = 600, // High resolution for print
Margins = 20 // Generous quiet zone for reliable scanning
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap printImage = qr.Save(printOptions);
printImage.SaveAs("print-ready-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Specify dimensions and quiet zone for print output
var printOptions = new QrStyleOptions
{
Dimensions = 600, // High resolution for print
Margins = 20 // Generous quiet zone for reliable scanning
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap printImage = qr.Save(printOptions);
printImage.SaveAs("print-ready-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Specify dimensions and quiet zone for print output
Dim printOptions As New QrStyleOptions With {
.Dimensions = 600, ' High resolution for print
.Margins = 20 ' Generous quiet zone for reliable scanning
}
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
Dim printImage As AnyBitmap = qr.Save(printOptions)
printImage.SaveAs("print-ready-qr.png")
有关不同输出介质下尺寸和边距要求的完整指南,请参阅关于调整QR码图像尺寸以及为QR码添加边距的操作指南文章。 《生成QR图像指南》涵盖了从许可证激活到文件输出的完整图像生成工作流。
针对具体的QR应用场景——包括生成名片用QR码、构建动态QR码生成器以及从图像中读取QR码——相关专题文章均配有完整的代码示例,对每种场景进行了详细说明。
下一步计划是什么?
IronQR 将 QR 码生成从一个多步骤流程简化为一个简单的 NuGet 集成。 安装软件包,调用 QrWriter.Write(),然后保存结果——这三个操作涵盖了大多数现实世界的场景。 通过同一库,可实现错误更正、自定义样式、PDF 加盖水印以及基于机器学习的阅读功能。
IronQR 文档提供了完整的 API 参考,包括使用扫描模式读取 QR 码、批处理以及特定平台的部署说明等高级主题。 IronQR 教程部分包含针对 .NET MAUI、VB.NET 和控制台应用程序的分步指南。
常见问题解答
如何安装IronQR NuGet包?
在终端中运行dotnet add package IronQR ,或者在 Visual Studio 中打开NuGet程序包管理器控制台并运行Install-Package IronQR 。该程序包支持.NET Framework 4.6.2+、. .NET Core 2.0+ 和.NET 5-10。
如何使用IronQR在 C# 中生成二维码?
调用QrWriter.Write("your-data")创建一个QrCode对象,然后调用.Save()获取AnyBitmap ,最后调用.SaveAs("output.png")写入文件。
IronQR支持哪些二维码输出格式?
IronQR支持 PNG、JPEG、GIF、TIFF、BMP 和 SVG 格式。SaveAs 方法会自动根据文件扩展名检测文件格式。使用SaveAs ExportBytes()可以获取字节数组,用于 HTTP 响应或数据库存储。
如何使用IronQR自定义二维码的颜色和大小?
创建一个QrStyleOptions对象,并设置Dimensions (像素)、 Margins (静区像素)、 Color和BackgroundColor 。将此传递给qr.Save(styleOptions) 。
IronQR支持哪些纠错级别?
IronQR通过QrErrorCorrectionLevel支持所有四个 ISO/IEC 18004 级别:L(~7% 恢复率)、M(~15%,默认值)、Q(~25%)和 H(~30%)。将级别通过QrOptions对象传递给QrWriter.Write() 。
IronQR与.NET版 QRCoder 相比如何?
IronQR提供跨平台渲染(支持.NET 5-10,而 QRCoder 位图渲染仅限 Windows),内置机器学习驱动的读取功能(QRCoder 仅支持生成),原生 PDF 加盖功能,以及一个单一方法的 API。QRCoder 是一款免费的开源软件,适用于简单的 Windows 系统下的二维码生成。
IronQR可以读取图片中的二维码吗?
是的。使用QrReader.Read(AnyBitmap.FromFile("path"))扫描图像。基于机器学习的引擎可以处理任何方向和部分损坏。遍历readResult.QrCodes以访问每个解码result.Value 。
如何在ASP.NET Core应用程序中生成二维码?
在控制器或最小 API 处理程序中调用QrWriter.Write(data) ,然后调用image.ExportBytes()并将字节数组作为Results.File(pngBytes, "image/png")响应返回。无需临时文件。

