当前位置: 首页 > news >正文

c#生成二维码二维码中间添加定制LoGo

🚀介绍

🍀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界面

http://www.lryc.cn/news/257089.html

相关文章:

  • 设计CPU功能的数字电路
  • 在windows下编译libiconv库
  • html,css,开发知识,调试知识
  • Vulnerability: File Upload(Medium)--MYSQL注入
  • 短视频账号剪辑矩阵+无人直播系统源头开发
  • Python traceback模块:获取异常信息
  • 单点登录方案调研与实现
  • HarmonyOS应用开发者基础认证考试(稳过)
  • 日常开发日志
  • 【FMCW毫米波雷达设计 】 — FMCW波形
  • 力扣labuladong一刷day35天
  • Matlab 曲线动态绘制
  • Spark DataFrame和Dataset使用例子
  • CSS彩色发光液体玻璃
  • OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存
  • 小红书蒲公英平台开通后,有哪些注意的地方,以及如何进行报价?
  • 持续集成交付CICD:Jenkins配置Nexus制品上传流水线
  • C语言笔试例题_指针专练30题(附答案解析)
  • 【Vue+Python】—— 基于Vue与Python的图书管理系统
  • 智能成绩表 - 华为OD统一考试(C卷)
  • 【基于ESP32无线蓝牙上传电脑Excel透传数据】
  • Qt篇——QChartView实现鼠标滚轮缩放、鼠标拖拽平移、鼠标双击重置缩放平移、曲线点击显示坐标
  • 掌握VUE中localStorage的使用
  • 所有行业的最终归宿-我有才打造知识付费平台
  • 图的深度和广度优先遍历
  • 计算机毕业设计JAVA+SSM+springboot养老院管理系统
  • Flutter路由的几种用法
  • 力扣119双周赛
  • Redux,react-redux,dva,RTK
  • 基于Java SSM框架实现高校信息资源共享平台系统【项目源码+论文说明】计算机毕业设计