使用C#快速生成二维码 | 真正跨平台方案
2022/1/3 22:10:36
本文主要是介绍使用C#快速生成二维码 | 真正跨平台方案,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
二维码(QR Code),与传统的一维码,比如条形码,二维码具有存储的数据量更大;可以包含数字、字符,及中文文本等混合内容;有一定的容错性(在部分损坏以后还可以正常读取);空间利用率高等优点。
因此,二维码在我们的生活中被广泛应用,例如支付码、健康码等。
SkiaSharp.QrCode介绍
虽然已经有很多生成二维码的解决方案,但是它们大多依赖System.Drawing,而在Linux下需要考虑System.Drawing的GDI+兼容性问题(需要安装libgdiplus)。
如果要实现真正的跨平台二维码生成方案,可以试试SkiaSharp.QrCode,因为它完全不依赖GDI和System.Drawing。
Demo
引用Nuget包SkiaSharp.QrCode
,然后编写如下代码:
var content = "My IO"; //创建生成器 using (var generator = new QRCodeGenerator()) { // 设置错误校正能力(ECC)级别 var qr = generator.CreateQrCode(content, ECCLevel.H); // 创建一个Canvas var info = new SKImageInfo(512, 512); using (var surface = SKSurface.Create(info)) { var canvas = surface.Canvas; // 渲染二维码到Canvas canvas.Render(qr, info.Width, info.Height); // 输出到文件 using (var image = surface.Snapshot()) using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) using (var stream = File.OpenWrite(@"QRCode.png")) { data.SaveTo(stream); } } }
结论
生成二维码最关键的是ECC级别设置,具体取决于最终图像计划使用的场合,是否容易被污损或遮挡:
-
L:最大纠错率7%
-
M:最大纠错率15%
-
Q:最大纠错率25%
-
H:最大纠错率30%
比如上面生成的二维码,我覆盖了一张Logo图片,还是可以正常识别的:
这篇关于使用C#快速生成二维码 | 真正跨平台方案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#