当前位置 : 主页 > 网络编程 > net编程 >

#yyds干货盘点#【愚公系列】2023年04月 .NET CORE工具案例-.NET Core使用QrCodeGenerator进行二维码生成

来源:互联网 收集:自由互联 发布时间:2023-09-03
(文章目录) 前言 QrCodeGenerator 是开源的 .NET 二维码生成库,它支持从文本字符串和字节数组生成二维码图片。 这个库是基于 .NET Standard 2.0 构建的,所以它可以在大多数现代 .NET 平台(

(文章目录)


前言

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")
); 
上一篇:C# AES加密报错:填充无效,无法被移除
下一篇:没有了
网友评论