在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在 C# 应用程序中创建 QR 代码是开发人员的常见需求,尤其是涉及产品识别、票务或轻松共享 URL 和其他数据的应用程序。有几个库可用来在 C# 中生成二维码。两个值得注意的选项是 QRCoder 和 IronQR.在本文中,我们将对这两个库进行详细比较,检查它们的功能、易用性、许可证等,并通过代码示例来说明它们的用法。
1.创建一个新的 Visual Studio 项目来生成 QR 代码
2.安装 QRCoder 和 IronQR NuGet 软件包进行比较
3.使用 QRCoder 和 IronQR 创建 QR 代码
4.使用 QRCoder 和 IronQR 的定制选项
QRCoder 是一个用 C# 和 QR 码实现编写的开源库,可让您在任何 .NET 应用程序中生成 ISO/IEC 18004 所定义的 QR 码。它是一个轻量级且易于使用的库,不依赖于其他库或网络堆栈。
以下是 QRCoder 的主要功能和优点:
C# QRCoder 它提供了一个简单直观的应用程序接口,使开发人员只需花最少的精力就能轻松生成 QR 代码/QR 代码文本。它的简易性使各种技能水平的开发人员都能快速将二维码生成功能集成到他们的项目中。
QRCoder 的突出特点之一是能够根据特定要求定制 QR 代码。开发人员可以调整纠错级别、大小、颜色等参数,甚至在 QR 代码中嵌入徽标或图像。
QRCoder 支持多种编码格式,使开发人员能够将不同类型的数据编码到 QR 码中。无论是纯文本、URL、联系信息还是 Wi-Fi 证书,QRCoder 都能处理各种数据格式。
C# QRCoder 生成的 QR 码质量很高,可确保在不同设备和扫描条件下的可读性和可靠性。对于将 QR 码作为物理和数字互动桥梁的应用来说,这种可靠性至关重要。
C# QRCoder 是一个开源项目,允许开发人员为其开发做出贡献,并确保持续改进和更新。这种积极的社区参与促进了创新,并确保该库在不断发展的技术领域中始终保持相关性。
IronQR 是一个功能强大的 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 支持 阅读二维码 可从各种图像格式,包括 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)
1.桌面:可与 Windows 桌面应用程序配合使用 (WPF 和 MAUI).
2.移动版与 Xamarin 和 MAUI 兼容。
3.网络版支持 Blazor 和 WebForms。
4.控制台应用程序和库环境
5.云:Docker、Azure 和 AWS。
您可以在二维码中编码各种类型的数据,包括文本、URL、字节和数字。
IronQR 提供详细的错误信息和自定义纠错选项。
IronQR 以其可靠性和易用性赢得了数百万人的信赖。要开始使用 IronQR,您可以通过以下方式进行安装 NuGet.
要开始使用代码,让我们创建一个 Visual Studio 项目。打开 Microsoft Visual Studio 2022,选择 "创建新项目 "选项。
从模板列表中选择控制台应用程序模板
然后提供项目名称和解决方案名称。选择存储项目文件的路径
选择所需的 .NET 版本。在撰写本文时,我将使用最新的 .NET 8 框架。
点击 "创建 "按钮后,项目就创建完成,可以进行开发了。
安装 QRCoder 如下图所示,可以使用 Visual Studio NuGet 软件包管理器安装 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
在这两个库中创建 QR 代码只需简单的代码,让我们来看看它们吧
以下代码展示了如何使用 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
1.我们创建 QRCodeGenerator 并调用 CreateQrCode 方法生成二维码图形
2.然后,我们使用 QRCoder.BitmapByteQRCode 方法从 GetGraphic 方法中获取字节数组
3.然后使用 Image.FromStream 方法将字节流保存为图像
4.输出的二维码如下所示
下面的代码展示了如何使用 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 代码生成所需的代码量更少。
1.我们使用 QrWriter.Write 创建二维码() 方法并传递内容。
2.然后使用 Save() 方法。
3.最后,我们使用 SaveAs 保存图像() 方法;
由于我使用的是试用版程序库,因此输出结果带有 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
1.我们创建 QRCodeGenerator 并调用 CreateQrCode 方法生成二维码图形
2.然后我们使用 QRCoder.BitmapByteQRCode() 方法从 GetGraphic 方法中获取字节数组
3.在 GetGraphic 方法中,我们可以设置背景和线条颜色。我们使用红色 [255,0,0] R、G、B 为线条颜色,绿色为线条颜色 [0,255,0] 为背景。
4.然后,我们使用 Image.FromStream 将字节流保存为图像。() 方法
5.输出的二维码如下所示
我们可以为 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 有许多好处 定制选项.在上述程序中,我们尝试自定义背景颜色、二维码颜色和边距。我们还可以设置尺寸。
1.首先,我们创建一个选项对象来设置误差修正级别
2.然后用 QrWriter.Write 准备二维码() 方法
3.然后使用 QrStyleOptions 设置样式选项
4.我们为二维码设置背景色、前景色、边距、尺寸和徽标
5.然后将二维码图像保存到本地磁盘。
QRCoder 是基于 MIT 许可的软件包,由社区帮助开发。该软件包适用于小预算项目。用户需要等待社区解决问题,也可以在拉取请求获得批准后修复代码并推送到 Git 仓库。
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 库的诸多优势和支持功能来自于 铁软件因此,开发人员可以轻松、放心地编写企业应用程序。