使用SkiaSharp.QrCode生成二维码介绍

  微信公众号中看到一篇介绍C#跨平台生成二维码的文章《使用C#快速生成二维码 | 真正跨平台方案》(微信公众号中没有带链接,在网上找了一篇内容一模一样的)。文章中使用SkiaSharp.QrCode跨平台生成二维码。
  SkiaSharp是基于GoogleSkia图形库(skia.org)的,NET跨平台二维图形库,其中的API支持跨移动端、服务器和桌面渲染图形。关于SkiaSharp的详细介绍及类型说明详见参考文献1和4。本文主要根据参考文献2中的代码进行学习,并在windows平台上验证SkiaSharp.QrCode的使用方式。

  创建Winform项目,并添加skiasharp.qrcode的包引用(具体添加方式见《VS2019中通过NuGet添加包依赖项》)。
  首先照着参考文献2中的代码将二维码输入到文件中,代码逻辑比较简单,主要用到的类包括QRCodeGenerator、SKImageInfo、SKCanvas 、SKImage ,具体的类型介绍请见参考文献4.

	 QRCodeGenerator generator = new QRCodeGenerator();
     QRCodeData qr = generator.CreateQrCode(txtRawValue.Text, ECCLevel.H);

      // 创建一个Canvas
      SKImageInfo info = new SKImageInfo(512, 512);
	  using (SKSurface surface = SKSurface.Create(info))
      {
          SKCanvas canvas = surface.Canvas;

          // 渲染二维码到Canvas
          canvas.Render(qr, info.Width, info.Height);

          // 输出到文件
          using (SKImage image = surface.Snapshot())
          {
	          using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
	          {
	              using (var stream = File.OpenWrite(@"QRCode.png"))
		          {
		              data.SaveTo(stream);
		          }
	          }	          
          }
      }

在这里插入图片描述

  除了输出到本地文件,还可以将二维码图形显示在控件中,主要使用的类型包括QRCodeGenerator、SKImageInfo、SKCanvas和SKImage ,详细代码及效果图如下:

		using (SKSurface surface = SKSurface.Create(info))
        {
            SKCanvas canvas = surface.Canvas;

            // 渲染二维码到Canvas
            canvas.Render(qr, info.Width, info.Height);

            // 输出到图形控件
            using (SKImage image = surface.Snapshot())
            {
                picQrCode.Image = Image.FromStream(image.Encode(SKEncodedImageFormat.Png, 100).AsStream());
            }
        }

在这里插入图片描述
  用微信的扫一扫功能扫描上述二维码,显示的结果如下。
在这里插入图片描述
  SkiaSharp支持跨平台,功能强大,本文主要学习参考文献中的代码示例并进行技术验证,后续还会继续学习SkiaSharp相关类型的使用方式。

参考文献:
[1]https://github.com/mono/SkiaSharp
[2]https://blog.csdn.net/zls365365/article/details/122315085
[3]https://www.nuget.org/packages/SkiaSharp.QrCode/
[4]https://docs.microsoft.com/en-us/dotnet/api/skiasharp?view=skiasharp-2.80.2

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值