跳至页脚内容
USING IRONQR

如何使用NuGet包在 C# 中生成二维码

在 .NET 应用程序中生成 QR 代码从未如此简单。 借助合适的 NuGet 包,您只需几行代码即可生成 QR 码、自定义其外观,并将其保存为多种输出格式。 IronQR 提供企业级 QR 码生成服务,支持 .NET Core、.NET Framework 以及 .NET 5-10 的跨平台环境。

本教程演示了如何安装 IronQR NuGet 包并立即开始生成 QR 码。 无论您是在构建库存管理系统、活动票务平台还是营销应用程序,IronQR 都能提供 Professional QR 实现所需的工具。

立即开始使用 IronQR。
green arrow pointer

如何安装 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"
$vbLabelText   $csharpLabel

安装许可证密钥后,您的应用程序即可生成、读取并自定义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")
$vbLabelText   $csharpLabel

QR 代码输出

NuGet QR Code Generator:使用C#生成QR码只需几行代码:图像1 - 简单QR输出

QrCode对象。 AnyBitmap,支持将其编码为多种图像格式或为XAML路径导出矢量数据。 这种方法可在Windows、macOS和Linux上运行,无需平台特定的依赖关系——与那些在.NET 6开始仅限Windows的System.Drawing库不同。

上述三行代码模式涵盖了最常见的场景:编码字符串、获取位图、写入文件。在实际生产环境中,您通常会传入 URL 字符串、产品标识符或 JSON 数据,而非纯文本。

如何选择合适的错误修正级别?

QR 码支持 ISO/IEC 18004 QR 码标准中定义的四种纠错级别,这些级别决定了 QR 码在遭受多大程度的损坏后仍可被扫描。 IronQR支持所有四个级别,通过QrOptions类提供:

IronQR 支持的 QR 码纠错级别
级别恢复能力最适合
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")
$vbLabelText   $csharpLabel

输出

NuGet QR Code Generator:使用C#生成QR码只需几行代码:图像2 - 高纠错级别QR

纠错级别越高,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")
$vbLabelText   $csharpLabel

有风格的 QR 输出

NuGet QR Code Generator:使用C#生成QR码只需几行代码:图像3 - 样式化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()
$vbLabelText   $csharpLabel

多种二维码输出格式

NuGet QR Code Generator:使用C#生成QR码只需几行代码:图像4 - 不同文件格式保存的QR代码

ExportBytes()方法在需要通过HTTP返回QR码图像而不写入磁盘的web应用程序中特别有用。 您可以将字节数组直接写入响应流,或将其存储在数据库列中以便按需检索。

为了在PDF文档中嵌入QR码,IronQR提供StampToExistingPdfPage方法,支持在现有文档上直接放置QR码。 该库支持原生运行,无需额外安装 PDF 库,这在希望尽可能减少依赖项数量的微服务环境中尤为重要。

IronQR NuGet 包与 QRCoder 相比如何?

QRCoder 库是 .NET 环境中广受欢迎的 QR 码生成开源方案。 曾使用过QRCoder的开发者熟悉其多步骤接口,涉及PngByteQRCode的单独渲染类。 IronQR将其简化为单个QrWriter.Write()调用。

IronQR 与 QRCoder 功能对比(面向 .NET 开发者)
特征IronQRQRCoder
跨平台渲染全面支持 .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")
$vbLabelText   $csharpLabel

输出

NuGet QR Code Generator:使用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
$vbLabelText   $csharpLabel

该基于机器学习的阅读引擎可处理任意方向的图像,并能处理在错误校正阈值范围内的局部损坏。 针对实际应用场景,请查阅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()
$vbLabelText   $csharpLabel

此模式在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")
$vbLabelText   $csharpLabel

有关不同输出介质下尺寸和边距要求的完整指南,请参阅关于调整QR码图像尺寸以及为QR码添加边距的操作指南文章。 《生成QR图像指南》涵盖了从许可证激活到文件输出的完整图像生成工作流。

针对具体的QR应用场景——包括生成名片用QR码构建动态QR码生成器以及从图像中读取QR码——相关专题文章均配有完整的代码示例,对每种场景进行了详细说明。

下一步计划是什么?

IronQR 将 QR 码生成从一个多步骤流程简化为一个简单的 NuGet 集成。 安装包、调用QrWriter.Write()并保存结果——涵盖大部分实际场景的三个操作。 通过同一库,可实现错误更正、自定义样式、PDF 加盖水印以及基于机器学习的阅读功能。

IronQR 文档提供了完整的 API 参考,包括使用扫描模式读取 QR 码、批处理以及特定平台的部署说明等高级主题。 IronQR 教程部分包含针对 .NET MAUI、VB.NET 和控制台应用程序的分步指南。

立即开始免费试用,无限制体验全部功能;或购买许可证进行生产环境部署,并享受每周 5 天、每天 24 小时的工程支持。

常见问题解答

如何安装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 (静区像素)、 ColorBackgroundColor 。将此传递给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")响应返回。无需临时文件。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我