在.NET MAUI中生成QR码
#dotnet #android #ios #dotnetmaui

在本文中,我将向您展示如何在不使用Google Vision或ZXing的Android和iOS中生成QR码。这是为了给您带来仅生成仅QR码而没有太多依赖性的替代方案。


关于Nuget软件包

qrcoder-imagesharp是一个简单的库,用c#.net编写,使您可以创建QR码。它是从使用System.Drawing Assembly的QRCoder项目分配的。

由于系统。绘制组件不支持非窗口平台,因此qrcoder-imagesharp正在使用imagesharp汇编来支持更多平台。

您可以在这里找到更多信息:https://www.nuget.org/packages/QRCoder-ImageSharp#readme-body-tab


开始吧

首先,我们将在.net Maui项目中添加以下Nuget软件包:

<ItemGroup>
    <PackageReference Include="QRCoder-ImageSharp" Version="0.9.0" />
</ItemGroup>

然后,我们创建了一种生成QR代码的方法

QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(Hello MAUI, QRCodeGenerator.ECCLevel.L);

PngByteQRCode qRCode = new PngByteQRCode(qrCodeData);
byte[] qrCodeBytes = qRCode.GetGraphic(20);
ImageSource qrImageSource = ImageSource.FromStream(() => new MemoryStream(qrCodeBytes));

然后可以将Qrimagesource变量分配给.NET MAUI中的图像控件以显示生成的QR代码。

<Image
x:Name="QrCodeImage"
HeightRequest="200"
HorizontalOptions="Center"
WidthRequest="200"/>
QrCodeImage.Source = qrImageSource;

仅此而已!


更多

碰巧您可能需要通过社交应用(例如WhatsApp,Facebook,Twitter等)共享生成的QR码作为图像。好吧,我们可以使用.NET MAUI API将图像存储在Cache文件夹中,并且然后轻松分享。

// Right after the image is created we create a PNG image and store it on the cache of the app
var path = FileSystem.Current.CacheDirectory;
string fn = "demo-qr-code.png";
var fullPath = Path.Combine(path, fn);
await File.WriteAllBytesAsync(fullPath, qrCodeBytes);

// Then we display the share native options on each platform to share it with others
string file = Path.Combine(FileSystem.CacheDirectory, fn);

await Share.Default.RequestAsync(new ShareFileRequest
{
      Title = "Generated QR Code",
      File = new ShareFile(file)
});

结论

有时,我们只需要一个可以帮助我们完成一个任务的软件包。还有其他提供更多功能的库,但是它们还要求其他权限和配置。如果您需要QR和条形码扫描,我强烈建议您从我们的朋友Gerald查看youtube channel,您可以在其中找到有关如何使用Camera.Maui,Google Vision或Zxing库的惊人指南。

感谢您的阅读!在Twitter上关注我 @ivictorhugo