🚀介绍
🍀QRCoder是一个开源的.NET库,用于生成QR码(Quick Response Code)。这个库是用C#编写的,并且可以在.NET框架的各种版本上使用,包括.NET Framework, .NET Core, Mono, Xamarin等。QRCoder提供了一个简单易用的API,允许开发者快速地在他们的应用程序中生成QR码图像。
使用QRCoder,你可以创建不同类型的QR码,包括文本、URL、联系信息(vCard)、电子邮件、SMS、MMS、地理位置等。此外,它还支持生成带有自定义颜色、大小和边距的QR码,以及添加标志或图标到QR码中心的功能。
🐳下面案例演示如何在c#项目中使用QRCoder生成一个像下面一样携带logo的二维码,并且在扫描的时候可以跳转到我们设置的链接中
🚀案例
🍀安装nuget包 QRCoder
在 NuGet 包管理器控制台中运行以下命令
PM> Install-Package QRCoder -Version 1.4.2
或者直接用Nuget包管理器手动搜索安装,建议使用1.4.2版本,其他版本的用法可能存在差异
🍀引入QRCoder的命名空间 using QRCoder,然后就可以直接在项目中使用
public class Program
{
public static void Main(string[] args)
{
//创建一个QRCodeGenerator的实例,这是QRCoder库中用于生成QR码的核心类
var qrCodeGenerator = new QRCodeGenerator();
//CreateQrCode()中第一个参数是文本内容(这里我放的是我csdn的链接)
//第二个参数是错误矫正等级
QRCodeData qrCodeData = qrCodeGenerator.CreateQrCode(
"https://blog.csdn.net/weixin_65243968?spm=1010.2135.3001.5343",
QRCodeGenerator.ECCLevel.H);
//使用前面生成的qrCodeData来创建一个QRCode的实例,这个实例将用于生成实际的二维码图像
QRCode qrCode = new QRCode(qrCodeData);
//GetGraphic方法的参数指定了二维码的像素大小、前景色、背景色以及是否要绘制一个白色的边框。
//在这个例子中,每个QR码模块的大小被设置为15像素,前景色为黑色,背景色为白色,并且绘制了白色边框
Bitmap bitmap = qrCode.GetGraphic(15,
Color.Black,
Color.White, true);
//将Bitmap对象转换为一个Image对象
Image image = Image.FromHbitmap(bitmap.GetHbitmap());
image.Save(@"test.png");
}
}
🍀在上面例子中,设置了 QRCodeGenerator.ECCLevel.H,它的作用是什么呢
QRCodeGenerator.ECCLevel
是一个枚举,它定义了在生成二维码时使用的错误更正级别。错误更正能力允许二维码在部分损坏的情况下仍然能够被扫描和解码。QRCodeGenerator.ECCLevel
枚举中的每个值代表了不同的错误更正能力:
L
:大约 7% 的错误更正能力。M
:大约 15% 的错误更正能力。Q
:大约 25% 的错误更正能力。H
:大约 30% 的错误更正能力。
H
和 Q
级别之间的主要区别在于它们提供的错误更正能力。H
级别提供的错误更正能力最高,大约是 30%,而 Q
级别提供的错误更正能力稍低,大约是 25%。这意味着 H
级别的二维码可以在更多的数据损坏情况下仍然被解码。
选择哪个错误更正级别通常取决于应用场景和对二维码耐用性的需求。如果你预计二维码可能会在恶劣环境下使用,或者有较高的损坏风险,那么选择更高的错误更正级别(如 H
)可能更合适。然而,需要注意的是,随着错误更正级别的提高,二维码的复杂性也会增加,这可能会导致二维码的尺寸变大,因为需要更多的数据来实现错误更正。‘
🍀此时运行项目,图片保存位置会生成一张像下面一样的二维码
🍀如需要添加logo,只需要在原来的GetGraphic
方法中添加三个参数
-
logo
: 这是你想要放在二维码中心的图标,它应该是一个Bitmap
对象。在这个例子中,它是从名为 "logo.png" 的文件中加载的。 -
20
: 这个参数定义了 logo 图像的最大宽度(以像素为单位)。在这个例子中,logo 的最大宽度被设置为 20 像素。如果 logo 的实际宽度超过了这个值,它将被缩放以适应这个最大宽度。 -
2
: 这个参数定义了在 logo 周围绘制的白色边框的厚度(以像素为单位)。在这个例子中,边框的厚度被设置为 2 像素。
🍀运行项目,在设置的图片保存位置中生成了一张二维码图片
🍀打开微信扫一下,可以正常跳转到我设置的文本内容URL,也就是我的CSDN界面