【愚公系列】2022年12月 .NET CORE工具案例-.NET Core使用QrCodeGenerator进行二维码生成

举报
愚公搬代码 发表于 2022/12/30 23:19:27 2022/12/30
【摘要】 前言QrCodeGenerator 是开源的 .NET 二维码生成库,它支持从文本字符串和字节数组生成二维码图片。这个库是基于 .NET Standard 2.0 构建的,所以它可以在大多数现代 .NET 平台(.NET Core、.NET Framework、Mono 等)上运行,包括 .NET 6, .NET 7。核心功能:支持根据 QR Code 模型 2 标准对所有 40 个版本(...

前言

QrCodeGenerator 是开源的 .NET 二维码生成库,它支持从文本字符串和字节数组生成二维码图片。

这个库是基于 .NET Standard 2.0 构建的,所以它可以在大多数现代 .NET 平台(.NET Core、.NET Framework、Mono 等)上运行,包括 .NET 6, .NET 7。

核心功能:

  • 支持根据 QR Code 模型 2 标准对所有 40 个版本(大小)和所有 4 个纠错级别进行编码
  • 输出格式:QR 符号、SVG 和 XAML 路径的原始模块/像素。对于光栅位图,提供了其他代码。见下文。
  • 在比常规文本更小的空间内对数字和特殊字母数字文本进行编码
  • 宽松的 MIT 许可证下的开源代码
  • 作为NuGet包提供(名为Net.Codecrete.QrCodeGenerator))
  • WinForms,WPF,ASP.NET,ImageSharp,SkiaSharp等的示例代码。

手动参数:

  • 您可以指定允许的最小和最大版本号,库将自动选择适合数据的范围内的最小版本。
  • 您可以手动指定掩码图案,否则库将自动评估所有 8 个掩码并选择最佳掩码。
  • 您可以指定纠错级别,也可以选择允许库在不增加大小(版本)时提升它。
  • 您可以手动创建数据细分受众群列表并添加 ECI 细分受众群。

可选高级功能:

  • 以汉字模式对日语 Unicode 文本进行编码,与 UTF-8 字节相比节省空间
  • 计算具有混合数字/字母数字/一般/汉字部分的文本的最佳句段模式切换

GitHub网址:https://github.com/manuelbl/QrCodeGenerator
在这里插入图片描述

一、.NET Core使用QrCodeGenerator进行二维码生成

1.安装nuget程序包

Install-Package Net.Codecrete.QrCodeGenerator -Version 2.0.3

在这里插入图片描述

2.二维码生成

2.1 基本生成

var text = "https://dotnet.microsoft.com"; 
var qr = QrCode.EncodeText(text, QrCode.Ecc.Medium);
string svg = qr.ToSvgString(4);
File.WriteAllText("qrcode.svg", svg, Encoding.UTF8);

上面的代码中, QrCode.Ecc.Medium 用来配置纠错级别。比如设置为 QrCode.Ecc.High 时,代表二维码损坏 30% 以下,还是可以正常识别的。另外 Medium 是 15%, Low 是 7%。
在这里插入图片描述

2.2 设置前景和背景颜色

var text = "https://dotnet.microsoft.com";  
var qr = QrCode.EncodeText(text, QrCode.Ecc.High);
string svg = qr.ToSvgString(4,"green","white");
File.WriteAllText("qrcode.svg", svg, Encoding.UTF8);

2.3 生成 PNG 格式的二维码

从 .NET 6 开始,System.Drawing 仅在 Windows 操作系统上受支持,因此不能用于像这样的多平台库。因此,已删除,现在以方法扩展的形式提供了三个选项。ToBitmap()

要使用它:

  • 选择以下映像库之一
  • 将 NuGet 依赖项添加到项目
  • 将相应的文件复制到项目中QrCodeBitmapExtensions.cs
映像库 建议 NuGet 依赖项 扩展文件
系统.绘图 对于仅限 Windows 的项目 System.Drawing.Common QrCodeBitmapExtensions.cs
斯基亚夏普 适用于 macOS、Linux、iOS、Android 和多平台项目 SkiaSharp和(仅适用于 Linux)SkiaSharp.NativeAssets.Linux QrCodeBitmapExtensions.cs
图像锐利 目前处于测试状态 SixLabors.ImageSharp.Drawing QrCodeBitmapExtensions.cs
var text = "https://dotnet.microsoft.com";  
var qr = QrCode.EncodeText(text, QrCode.Ecc.High);  
qr.SaveAsPng("qrcode.png", 10, 3, 
    foreground:SKColor.Parse("#45aae5"),
    background:SKColor.Parse("#ffffff")
); 
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。