之前的文章《使用SkiaSharp.QrCode生成二维码介绍》介绍了windows平台下调用SkiaSharp.QrCode生成二维码的示例。SkiaSharp是一个跨平台的.net 二维图形库,本文介绍SkiaSharp.QrCode在Ubuntu下的使用方式。
使用VSCode创建基于.net 6的控制台程序,然后添加SkiaSharp.QrCode引用。
测试代码还是上篇文章中的代码,如下所示:
using SkiaSharp.QrCode;
using SkiaSharp;
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);
}
}
}
程序编译正常,但是运行时报如下错误:
百度错误信息没有找到能参考的内容,最后在SkiaSharp的GitHub网站介绍中看到如下的内容,大致意思是说linux版本很多,SkiaSharp项目组无法支持所有版本,他们创建了包含linux支持内容的package:SkiaSharp.NativeAssets.Linux,在linux下可以引用该包。:
于是在VSCode中添加相应版本的包引用,再运行程序即可正常运行。生成的二维码图片如下所示:
dotnet add package SkiaSharp.NativeAssets.Linux --version 2.80.3
参考文献:
[1]https://www.nuget.org/packages/SkiaSharp.NativeAssets.Linux
[2]https://github.com/mono/SkiaSharp