如何使用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类处理QR码生成,提供符合大多数用例的合理默认设置:
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 代码输出

QrCode对象。 AnyBitmap,支持将其编码为多种图像格式或为XAML路径导出矢量数据。 这种方法可在Windows、macOS和Linux上运行,无需平台特定的依赖关系——与那些在.NET 6开始仅限Windows的System.Drawing库不同。
上述三行代码模式涵盖了最常见的场景:编码字符串、获取位图、写入文件。在实际生产环境中,您通常会传入 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(QrErrorCorrectionLevel.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(QrErrorCorrectionLevel.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")
输出

纠错级别越高,QR 符号越密集,原始模块越多,即使代码部分模糊或损坏,也能保持可读性。 对于将印制在包装上或嵌入徽标中的代码,H级是理想选择。对于仅用于数字显示且无需担心损坏的情况,M级在数据容量与可靠性之间实现了平衡。
选择错误的级别是生产环境中扫描失败的常见原因。 如果您的 QR 码将出现在实体材料上,或与摄像头之间的距离不固定,请使用 Q 级或 H 级,并在部署前使用多个扫描应用验证输出效果。
如何自定义QR码的外观?
IronQR通过QrStyleOptions提供丰富的样式选项,能够自定义颜色、尺寸、边距和嵌入Logo。 品牌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 输出

Dimensions属性设置像素宽度和高度。 Margins属性控制安静区——即QR符号周围的白色边框,扫描仪用来定位代码边界。 若将边距缩小至低于建议的 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()
多种二维码输出格式

ExportBytes()方法在需要通过HTTP返回QR码图像而不写入磁盘的web应用程序中特别有用。 您可以将字节数组直接写入响应流,或将其存储在数据库列中以便按需检索。
为了在PDF文档中嵌入QR码,IronQR提供StampToExistingPdfPage方法,支持在现有文档上直接放置QR码。 该库支持原生运行,无需额外安装 PDF 库,这在希望尽可能减少依赖项数量的微服务环境中尤为重要。
IronQR NuGet 包与 QRCoder 相比如何?
QRCoder 库是 .NET 环境中广受欢迎的 QR 码生成开源方案。 曾使用过QRCoder的开发者熟悉其多步骤接口,涉及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")
输出

二进制编码使您能够在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")响应返回。无需临时文件。



