在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在 C# 应用程序中创建二维码是开发人员的常见需求,尤其是涉及产品识别、票务或轻松共享 URL 和其他数据的应用程序。 有几个库可用来用 C# 生成二维码。 两个值得注意的选项是QRCoder和IronQR. 在这里,我们将探讨这两种库,比较它们的功能、易用性、性能以及与使用 .NET 6 的开发人员相关的其他因素。 在本文中,我们将对这些库进行详细比较,检查它们的功能、易用性、许可证等,并提供代码示例来说明它们的用法。
创建一个新的 Visual Studio 项目以生成 QR 代码
安装 QRCoder 和 IronQR NuGet 软件包进行比较
使用 QRCoder 和 IronQR 创建 QR 代码
QRCoderQR Code 是一个用 C# 和 QR Code 实现编写的开源库,可让您在任何 .NET 应用程序中生成 ISO/IEC 18004 所定义的 QR 代码。 这是一个轻量级且易于使用的库,不依赖于其他库或网络堆栈。
以下是 QRCoder 的主要功能和优点:
C#QRCoderQR Code 提供了简单直观的应用程序接口,使开发人员能够以最小的工作量轻松生成 QR 代码/QR 代码文本。 它的简易性使各种技能水平的开发人员都能快速将 QR 代码生成集成到他们的项目中。
QRCoder 的突出特点之一是能够根据具体要求定制 QR 代码。 开发人员可以调整纠错级别、大小、颜色等参数,甚至可以在二维码中嵌入徽标或图片。
QRCoder 支持各种编码格式,使开发人员能够将不同类型的数据编码到 QR 代码中。 无论是纯文本、URL、联系信息还是 Wi-Fi 证书,QRCoder 都能处理各种数据格式。
C# QRCoder 生成的二维码质量很高,可确保在不同设备和扫描条件下的可读性和可靠性。 这种可靠性对于二维码作为物理和数字互动桥梁的应用至关重要。
C# QRCoder 是一个开源项目,允许开发人员为其开发做出贡献,并确保持续改进和更新。 这种积极的社区参与促进了创新,并确保图书馆在不断发展的技术领域中保持相关性。
IronQR是一个功能强大的 C# QR 代码库,由铁软件. 它允许 C# 软件工程师在 .NET 应用程序和网站中检测、读取和创建二维码。 以下是 IronQR 的一些主要功能:
IronQR 可实现高度自定义生成 QR 码. 您可以使用各种选项创建 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 支持阅读二维码可从各种图像格式,包括 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。
点击创建按钮后,项目即已创建并准备好进行开发。
"(《世界人权宣言》)QRCoderNuGet 软件包可使用 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 代码()方法并传递内容。
然后使用 "保存 "将 QR 代码保存到内存中。()方法。
由于我使用的是试用版的 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 制作 QR 代码()方法
然后,我们使用 QrStyleOptions 设置样式选项
我们为二维码设置了背景色、前景色、边距、尺寸和徽标。
QRCoder该翻译软件是基于 MIT 许可的软件包,是在社区的帮助下开发的。 本翻译包适用于小预算项目。 用户需要等待社区解决问题,也可以在拉取请求获得批准后修复并将代码推送到 Git 仓库。
IronQR在应用程序中使用。 它得到了以下方面的支持铁软件.
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 可能是您的首选,因为它简单易用且具有广泛的自定义选项。
如果您需要的企业级库不仅支持带有自定义选项的 QR 代码生成,还支持 QR 代码读取,那么IronQR将是最终的选择。因此,归根结底,IronQR 库的诸多优势和支持功能来自于铁软件因此,开发人员可以轻松、放心地编写企业应用程序。