
如何使用 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代码/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");
}
}Imports IronQr
Imports IronSoftware.Drawing
Public Class Program
Public Shared Sub Main()
' Prepare a QR Code object
Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Dim myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
End Sub
End Class二维码读取
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);
}
}Imports IronQr
Imports IronSoftware.Drawing
Imports System.Collections.Generic
Public Class Program
Public Shared Sub Main()
' Read QR code
Dim inputBmp = AnyBitmap.FromFile("awesome.png")
' Load the image into QrImageInput
Dim imageInput As New QrImageInput(inputBmp)
' Create the QR Reader object
Dim reader As New QrReader()
' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
End Sub
End Class跨平台兼容性
- 桌面:适用于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包管理器控制台中使用以下命令安装。
QRCoder的NuGet包可以在NuGet网站上找到

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

同样,在NuGet包管理器控制台中使用以下命令

步骤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");
}
}
}
}
}Imports QRCoder
Imports System.Drawing
Imports System.IO
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
' Initialize QRCodeGenerator
Using qrGenerator As New QRCodeGenerator()
' Create QR code data
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
' Initialize the QR code with the data
Using qrCode As New BitmapByteQRCode(qrCodeData)
' Generate the QR code's graphic and store it in a byte array
Dim qrCodeImage() As Byte = qrCode.GetGraphic(20)
' Convert the byte array to an image format and save it to disk
Using file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Using
End Sub
End Class
End Namespace代码解释
- 初始化
CreateQrCode方法生成二维码数据。 - 使用
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");
}
}
}Imports IronQr
Imports IronSoftware.Drawing
Namespace QrCodeWithIronQR
Public Class Program
Public Shared Sub Main()
' Prepare a QR Code object
Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Dim myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
End Sub
End Class
End Namespace您已经可以看到代码量的差异。 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");
}
}
}
}
}Imports QRCoder
Imports System.Drawing
Imports System.IO
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
' Initialize QRCodeGenerator
Using qrGenerator As New QRCodeGenerator()
' Create QR code data
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
' Initialize the QR code with the data
Using qrCode As New BitmapByteQRCode(qrCodeData)
' Generate the QR code's graphic, specifying foreground and background colors
Dim qrCodeImage() As Byte = qrCode.GetGraphic(20, Color.Red, Color.Green)
' Convert the byte array to an image format and save it to disk
Using file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Using
End Sub
End Class
End Namespace代码解释
- 初始化
CreateQrCode方法生成二维码数据。 - 使用
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");
}
}
}Imports IronQr
Imports IronSoftware.Drawing
Imports System.Drawing
Namespace QrCodeWithIronQR
Public Class Program
Public Shared Sub Main()
' Set options
Dim options As New QrOptions(QrErrorCorrectionLevel.Medium, 20)
' Create QR
Dim myQr As QrCode = QrWriter.Write("IronQR Generation Demo 1", options)
' Style options
Dim logoBmp As New AnyBitmap("logo.png")
Dim style As New QrStyleOptions With {
.BackgroundColor = Color.Aqua,
.Dimensions = 300,
.Margins = 10,
.Color = Color.Red,
.Logo = New QrLogo With {
.Bitmap = logoBmp,
.Width = 100,
.Height = 100,
.CornerRadius = 2
}
}
' Save QR Code
Dim qrImage As AnyBitmap = myQr.Save(style)
' Save QR Code to local disk
qrImage.SaveAs("advancedQr.png")
End Sub
End Class
End Namespace使用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的支持功能,开发人员可以轻松安心地编写企业应用程序。

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


