在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
在 C# 应用程序中创建二维码是开发人员的常见需求,尤其是涉及产品识别、票务或轻松共享 URL 和其他数据的应用程序。 有几个库可用来用 C# 生成二维码。 两个值得注意的选项是QRCoder和IronQR。 在这里,我们将探讨这两种库,比较它们的功能、易用性、性能以及与使用 .NET 6 的开发人员相关的其他因素。 在本文中,我们将对这些库进行详细比较,检查它们的功能、易用性、许可证等,并提供代码示例来说明它们的用法。
创建一个新的 Visual Studio 项目以生成 QR 代码
安装 QRCoder 和 IronQR NuGet 软件包进行比较
使用 QRCoder 和 IronQR 创建 QR 代码
QRCoder 是一个用 C# 编写的开源库和 QR 代码实现,允许您在任何 .NET 应用程序中生成符合 ISO/IEC 18004 规定的 QR 代码。 这是一个轻量级且易于使用的库,不依赖于其他库或网络堆栈。
以下是 QRCoder 的主要功能和优点:
C# QRCoder 提供了一个简单直观的 API,使开发人员可以轻松生成二维码/二维码文本,只需最少的工作量。 它的简易性使各种技能水平的开发人员都能快速将 QR 代码生成集成到他们的项目中。
QRCoder 的突出特点之一是能够根据具体要求定制 QR 代码。 开发人员可以调整纠错级别、大小、颜色等参数,甚至可以在二维码中嵌入徽标或图片。
QRCoder 支持各种编码格式,使开发人员能够将不同类型的数据编码到 QR 代码中。 无论是纯文本、URL、联系信息还是 Wi-Fi 证书,QRCoder 都能处理各种数据格式。
C# QRCoder 生成的二维码质量很高,可确保在不同设备和扫描条件下的可读性和可靠性。 这种可靠性对于二维码作为物理和数字互动桥梁的应用至关重要。
C# QRCoder 是一个开源项目,允许开发人员为其开发做出贡献,并确保持续改进和更新。 这种积极的社区参与促进了创新,并确保图书馆在不断发展的技术领域中保持相关性。
IronQR 是由 Iron Software 开发和维护的强大 C# QR 码库。 它允许 C# 软件工程师在 .NET 应用程序和网站中检测、读取和创建二维码。 以下是 IronQR 的一些主要功能:
IronQR支持高度可定制的二维码生成。 您可以使用各种选项创建 QR 代码,如调整大小、边距、边框和重新着色。
using IronQr;
using IronSoftware.Drawing;
// 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;
// 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
' Prepare a QR Code object
Private theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Private myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
IronQR 使用先进的机器学习模型进行 QR 码检测。 这种模式可确保准确、快速地读取 QR 代码。 IronQR支持从各种图像格式读取QR码,包括JPG、PNG、SVG、bmp以及多页图像如gif和tiff。
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
// 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 an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
// 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 an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Collections.Generic
' Read QR code
Private inputBmp = AnyBitmap.FromFile("awesome.png")
' Load the image into QrImageInput
Private imageInput As New QrImageInput(inputBmp)
' Create the QR Reader object
Private reader As New QrReader()
' Read the Input an get all embedded QR Codes
Private results As IEnumerable(Of QrResult) = reader.Read(imageInput)
桌面:与Windows桌面应用程序(WPF和MAUI)兼容。
移动:与 Xamarin 和 MAUI 兼容。
网络:支持 Blazor 和 WebForms。
控制台:应用程序和库环境。
您可以在二维码中编码各种类型的数据,包括文本、URL、字节和数字。
IronQR提供详细的错误信息和自定义错误校正选项。
IronQR 以其可靠性和易用性赢得了数百万人的信任,深受全球工程师的信赖。 要开始使用IronQR,您可以通过NuGet安装它。
要开始编写代码,让我们创建一个Visual Studio项目。 打开 Microsoft Visual Studio 2022,选择 "创建新项目 "选项。
从模板列表中选择控制台应用程序模板
然后提供项目名称和解决方案名称。 选择存储项目文件的路径
选择所需的 .NET 版本。 在撰写本文时,我将采用最新的 .NET 8 Framework。
点击创建按钮后,项目即已创建并准备好进行开发。
QRCoder NuGet 软件包可以使用 Visual Studio 的 NuGet 包管理器安装,如下所示。
或使用以下命令从 NuGet 软件包管理器控制台进行安装
dotnet add package QRCoder --version 1.4.3
dotnet add package QRCoder --version 1.4.3
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package QRCoder --version 1.4.3
QRCoder NuGet 软件包可从 NuGet 网站获取,请点击此处
IronQR 也可以通过如下所示的 Visual Studio NuGet 包管理器进行安装。
同样从 NuGet 软件包管理器控制台,使用以下命令
dotnet add package IronQR --version 2024.4.1
dotnet add package IronQR --version 2024.4.1
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronQR --version 2024.4.1
在这两个库中创建二维码只需简单的代码,让我们来看看它们吧
以下代码显示了如何使用 QRCoder 生成我们的第一个 QR 代码
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
{
var qrCodeImage = qrCode.GetGraphic(20);
var file = Image.FromStream(new MemoryStream(qrCodeImage));
file.Save("QrCoderDemo1.png");
}
}
}
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
{
var qrCodeImage = qrCode.GetGraphic(20);
var file = Image.FromStream(new MemoryStream(qrCodeImage));
file.Save("QrCoderDemo1.png");
}
}
}
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
Using qrGenerator As New QRCodeGenerator()
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
Dim qrCodeImage = qrCode.GetGraphic(20)
Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Sub
End Class
End Namespace
我们创建 QRCodeGenerator 并调用 CreateQrCode 方法生成 QR 代码图形
然后,我们使用 QRCoder.BitmapByteQRCode 方法从 GetGraphic 方法中获取字节数组
然后,我们使用 Image.FromStream 方法将字节流保存为图像
以下代码展示了如何使用 IronQR 生成 QR 代码:
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");
}
}
}
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() 方法并传递内容来创建 QR 代码。
然后使用 Save() 方法将二维码保存到内存中。
由于我使用的是试用版的 IronQR 库,因此输出结果带有 IronQR 水印。 在授权版本中,这一点将被删除。
两个库都支持自定义选项。 让我们来看看一些可供选择的方案
我们可以像下面这样在QRCoder中设置二维码的颜色:
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
{
var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
var file = Image.FromStream(new MemoryStream(qrCodeImage));
file.Save("QrCoderDemo1.png");
}
}
}
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
{
var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
var file = Image.FromStream(new MemoryStream(qrCodeImage));
file.Save("QrCoderDemo1.png");
}
}
}
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
Using qrGenerator As New QRCodeGenerator()
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
Dim qrCodeImage = qrCode.GetGraphic(20, (255,0,0), (0,255, 0)) ' can also use html hex color notation
Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Sub
End Class
End Namespace
我们创建 QRCodeGenerator 并调用 CreateQrCode 方法生成 QR 代码图形
然后我们使用 QRCoder.BitmapByteQRCode() 方法从 GetGraphic 方法获取字节数组
在 GetGraphic 中,我们可以设置背景和线条颜色。 我们使用红色 [255,0,0] R、G、B 颜色作为线条颜色,绿色 [0,255,0] 作为背景色。
然后我们使用 Image.FromStream() 方法将字节流保存为图像
我们可以像下面的代码一样为IronQR的二维码生成设置颜色:
using IronQr;
using IronSoftware.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;
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
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
}
使用IronQR,有许多自定义选项。 在上述程序中,我们尝试自定义背景颜色、二维码颜色和页边距。 我们还可以设置尺寸。
首先,我们创建选项对象来设置纠错级别
然后我们使用QrWriter.Write()方法准备二维码
然后,我们使用 QrStyleOptions 设置样式选项
我们为二维码设置了背景色、前景色、边距、尺寸和徽标。
QRCoder 是一个基于MIT许可证的软件包,并由社区协助开发。 本翻译包适用于小预算项目。 用户需要等待社区解决问题,也可以在拉取请求获得批准后修复并将代码推送到 Git 仓库。
IronQR 用于应用程序。 它得到了Iron Software的支持。
IronQR 可以获取。 获得的密钥需要放在此处的 appSettings.json 文件中:
{
"IronQR.License.LicenseKey":"myKey"
}
{
"IronQR.License.LicenseKey":"myKey"
}
If True Then
"IronQR.License.LicenseKey":"myKey"
End If
在 C# QRCoder 和 IronQR 之间选择最终取决于您项目的具体需求。 如果您需要一个具有大量自定义选项的免费开源 QR 代码生成库,那么 C# QRCoder 可能是您的首选,因为它简单易用且具有广泛的自定义选项。
如果您需要一个企业级的库,不仅支持自定义选项的二维码生成,还支持二维码读取,那么IronQR将是最终的选择。因此,使用IronQR库及其许多好处和来自Iron Software的支持功能,开发人员可以轻松自如地编写企业应用程序。