在本文中,我将向您展示如何在不使用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