如何使用 QRCoder 比较 IronQR 在 .NET 6 中生成 QR 代码
在C#中生成二维码
在C#应用程序中创建二维码是开发人员的常见需求,尤其是涉及产品识别、票务或轻松共享URL和其他数据的应用程序。 有多种库可以用于在C#中生成二维码。 两个值得注意的选项是QRCoder和IronQR。 在这里,我们将探讨这两者,比较它们的功能、易用性、性能以及与.NET 6开发人员相关的其他因素。在本文中,我们将深入比较这些库,检查它们的功能、易用性、许可等,并附有代码示例来说明它们的使用。
如何在.NET 6中使用QRCoder与IronQR生成二维码
- 创建一个新的Visual Studio项目来生成二维码
- 安装QRCoder和IronQR的NuGet包进行比较
- 使用QRCoder和IronQR创建二维码
- 使用QRCoder和IronQR的自定义选项
QRCoder
QRCoder是一个用C#编写的开源库,它提供QR码的实现,允许在任何.NET应用程序中生成根据ISO/IEC 18004定义的QR码。 它是一个轻量级且易于使用的库,没有对其他库或网络栈的依赖。
以下是QRCoder的主要功能和优势:
1. 易于使用
C# QRCoder提供了一个简单直观的API,使得开发人员可以很容易地生成二维码/QR代码文本,几乎不需要花费任何精力。 它的简单性使各个技能水平的开发人员都可以快速集成二维码生成到他们的项目中。
2. 广泛的自定义选项
QRCoder的突出特点之一是它可以根据特定要求自定义二维码。 开发者可以调整参数,如错误校正级别、大小、颜色,甚至可以在二维码中嵌入徽标或图像。
3. 多种编码格式
QRCoder支持多种编码格式,使开发人员能够将不同类型的数据编码到二维码中。 无论是纯文本、URL、联系信息还是Wi-Fi凭证,QRCoder都可以处理多种数据格式。
4. 高质量输出
C# QRCoder生成的二维码质量很高,确保在不同设备和扫描条件下的可读性和可靠性。 这种可靠性对基于二维码作为物理和数字交互桥梁的应用程序至关重要。
5. 开源和活跃开发
C# QRCoder是一个开源项目,允许开发人员对其发展做出贡献,并确保持续改进和更新。 这种活跃的社区参与促进了创新,并确保该库在不断变化的技术环境中保持相关性。
IronQR
IronQR是由Iron Software开发和维护的一个功能强大的C# QR码库。 它允许C#软件工程师在.NET应用程序和网站中检测、读取和创建二维码。 以下是IronQR的一些主要特点:
二维码生成
IronQR使QR码生成具有高度的可定制性。 您可以创建具有各种选项的二维码,如调整大小、边距、边框和重新着色。
using IronQr;
using IronSoftware.Drawing;
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}using IronQr;
using IronSoftware.Drawing;
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}二维码读取
IronQR使用先进的机器学习模型进行二维码检测。 这种模型确保了二维码的准确和快速读取。 IronQR支持从各种图像格式(包括JPG、PNG、SVG、bmp以及多页图像如gif和tif)中读取二维码。
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
}
}using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
}
}跨平台兼容性
- 桌面:适用于Windows桌面应用程序(WPF和MAUI)。
- 移动:与Xamarin和MAUI兼容。
- Web:支持Blazor和WebForms。
- 控制台:应用和库环境。
- 云:Docker、Azure和AWS。
编码数据
您可以在二维码中编码各种数据类型,包括文本、URL、字节和数字。
错误修正
IronQR提供详细的错误消息和自定义的错误校正选项。
IronQR被全球的工程师信任,其可靠性和易用性深受好评。 可以通过NuGet安装IronQR以开始使用。
步骤1: 创建一个新的Visual Studio项目来生成二维码
要开始编写代码,我们先创建一个Visual Studio项目。 打开Microsoft Visual Studio 2022,选择"创建新项目"选项。

从模板列表中选择控制台应用程序模板

然后提供项目名称和解决方案名称。 选择存储项目文件的路径

选择所需的.NET版本。 撰写本文时,我选择使用最新的.NET 8框架。

点击创建按钮后,项目被创建并准备好进行开发。
步骤2: 安装QRCoder和IronQR的NuGet包
QRCoder的NuGet包可以通过Visual Studio NuGet包管理器安装,如下所示。

或者可以在NuGet包管理器控制台中使用以下命令安装。
dotnet add package QRCoder --version 1.4.3
QRCoder的NuGet包可以在NuGet网站上找到

IronQR也可以通过Visual Studio NuGet包管理器类似地安装,如下所示。

同样,在NuGet包管理器控制台中使用以下命令
dotnet add package IronQR --version 2024.4.1

步骤3: 使用QRCoder和IronQR创建二维码
使用这两个库创建二维码需要简单的代码,让我们来看看。
QRCoder
以下代码显示了如何利用QRCoder生成我们的第一个二维码
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic and store it in a byte array
byte[] qrCodeImage = qrCode.GetGraphic(20);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic and store it in a byte array
byte[] qrCodeImage = qrCode.GetGraphic(20);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}代码解释
- 初始化
QRCodeGenerator并调用CreateQrCode方法生成二维码数据。 - 使用
BitmapByteQRCode类通过GetGraphic方法从二维码数据生成字节数组。 - 使用
Image.FromStream将字节数组转换为图像。 - 将生成的图像保存到磁盘。
输出

IronQR
以下代码展示了如何使用IronQR生成二维码:
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
}using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
}您已经可以看到代码量的差异。 IronQR代码生成需要更少的代码。
代码解释
- 使用
QrWriter.Write方法传递所需内容来创建二维码。 - 使用
Save方法将二维码保存到内存。 - 使用
SaveAs将二维码图像保存到磁盘。
输出
由于我正在使用该库的试用版,输出带有IronQR水印。 使用许可版本时,这将被移除。

步骤4: 使用QRCoder和IronQR自定义选项
这两个库都支持自定义选项。 让我们看看一些可用的选项
我们可以在QRCoder中像下面这样设置二维码的颜色:
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic, specifying foreground and background colors
byte[] qrCodeImage = qrCode.GetGraphic(20, Color.Red, Color.Green);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic, specifying foreground and background colors
byte[] qrCodeImage = qrCode.GetGraphic(20, Color.Red, Color.Green);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}代码解释
- 初始化
QRCodeGenerator并调用CreateQrCode方法生成二维码数据。 - 使用
BitmapByteQRCode类通过GetGraphic方法从二维码数据生成字节数组,指定前景色(红色)和背景色(绿色)。 - 使用
Image.FromStream将字节数组转换为图像。 - 将生成的图像保存到磁盘。
输出

我们可以像下面的代码这样为IronQR二维码生成设置颜色:
using IronQr;
using IronSoftware.Drawing;
using System.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Set options
QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
// Create QR
QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
// Style options
AnyBitmap logoBmp = new AnyBitmap("logo.png");
QrStyleOptions style = new QrStyleOptions
{
BackgroundColor = Color.Aqua,
Dimensions = 300, // px
Margins = 10, // px
Color = Color.Red,
Logo = new QrLogo
{
Bitmap = logoBmp,
Width = 100,
Height = 100,
CornerRadius = 2
}
};
// Save QR Code
AnyBitmap qrImage = myQr.Save(style);
// Save QR Code to local disk
qrImage.SaveAs("advancedQr.png");
}
}
}using IronQr;
using IronSoftware.Drawing;
using System.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Set options
QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
// Create QR
QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
// Style options
AnyBitmap logoBmp = new AnyBitmap("logo.png");
QrStyleOptions style = new QrStyleOptions
{
BackgroundColor = Color.Aqua,
Dimensions = 300, // px
Margins = 10, // px
Color = Color.Red,
Logo = new QrLogo
{
Bitmap = logoBmp,
Width = 100,
Height = 100,
CornerRadius = 2
}
};
// Save QR Code
AnyBitmap qrImage = myQr.Save(style);
// Save QR Code to local disk
qrImage.SaveAs("advancedQr.png");
}
}
}使用IronQR有许多自定义选项。 在上面的程序中,我们尝试自定义背景色、二维码颜色、边距。 我们还可以设置尺寸。
代码解释
- 首先,创建
QrOptions对象以设置错误校正级别。 - 使用
QrWriter.Write方法准备二维码。 - 使用
QrStyleOptions设置样式选项。 - 设置背景色、前景色、边距、尺寸,甚至为二维码设置徽标。
- 将二维码图像保存到本地磁盘。
输出

许可
QRCoder是一个基于MIT许可证的包,由社区提供支持。 这个包适合小型预算项目。 用户需要等社区解决问题,或自行修复并通过拉请求提交代码到Git存储库。
IronQR需要许可证。 它由Iron Software支持。
可以获取IronQR试用许可证。 获取的密钥需要放置在这里的appSettings.json文件中:
{
"IronQR.License.LicenseKey": "myKey"
}结论
在C# QRCoder和IronQR之间进行选择最终取决于您项目的具体需求。 如果您需要一个免费和开源的具有许多自定义选项的二维码库,那么由于其简单性和广泛的自定义选项,C# QRCoder可能是首选。
如果您需要一个企业级库,它不仅支持带有自定义选项的二维码生成,还支持二维码读取,那么IronQR将是终极选择。借助IronQR库、其众多优势和来自Iron Software的支持功能,开发人员可以轻松安心地编写企业应用程序。
常见问题解答
如何在 C# 中生成 QR 码?
您可以使用诸如 QRCoder 和 IronQR 之类的库在 C# 中生成 QR 代码。QRCoder 是开源的,提供广泛的自定义选项,而 IronQR 提供高级功能和跨平台支持,非常适合企业级应用。
在 .NET 6 项目中使用 QRCoder 有哪些好处?
由于使用方便、广泛的自定义选项和对多种编码格式的支持,QRCoder 对于 .NET 6 项目是有利的。它在 MIT 许可证下免费,使其适合预算紧张的项目。
如何使用 IronQR 自定义 QR 代码?
IronQR 允许开发人员通过调整背景色、QR 代码颜色、边距、尺寸,甚至添加徽标来增强 QR 代码的外观,以自定义 QR 代码。
IronQR 对于跨平台应用有什么优势?
IronQR 支持包括桌面(WPF 和 MAUI)、移动(Xamarin 和 MAUI)、网页(Blazor 和 WebForms)以及控制台应用程序和云环境(如 Docker、Azure 和 AWS)的跨平台应用,使其满足多样化开发需求的理想选择。
在 Visual Studio 中设置一个 QR 代码生成项目需哪些步骤?
要在 Visual Studio 中设置 QR 代码生成项目,您需要安装 QRCoder 或 IronQR 所需的 NuGet 包,具体取决于您的选择。文章提供逐步说明和代码示例以指导您完成流程。
IronQR 如何提高 QR 代码的错误校正能力?
IronQR 通过提供详细选项来提高 QR 代码的错误校正能力,即使 QR 代码受损或部分遮挡,也确保能被准确读取。这使其对关键应用的可靠性非常高。
IronQR有什么许可选项?
IronQR 需要 Iron Software 支持的商业许可证,并提供评估用途的试用许可证选项。这确保了企业级项目能够获得强大的支持和功能。
对于简单的 QR 代码项目,我应该选择哪个库?
对于简单的 QR 代码项目,推荐使用 QRCoder 因为其简单性、易用性和成本效益,它是一个基于 MIT 许可证的开源库。
IronQR 能从各种图像格式中读取 QR 代码吗?
是的,IronQR 可以从各种图像格式中读取 QR 代码,使用先进的机器学习模型确保在不同平台上的快速准确读取。






