.NET MAUI 条码扫描器

This article was translated from English: Does it need improvement?
Translated
View the article in English

介绍

.NET MAUI (.NET多平台应用程序用户界面)是一个跨平台框架,可以帮助更容易地在单一代码库中创建跨平台应用程序。 例如,您可以在一个项目中轻松创建 Microsoft Windows、IOS 和 Android 应用程序。 它与其他平台、框架和库的不同之处在于它允许开发者社区在其项目中使用本地控件,并为他们提供额外的组件。 因此,开发者可以使用这些预制的组件和服务来更快地构建应用程序,无需从头开始编写代码的每一个方面。

在这篇文章中,我将解释我们如何在.NET MAUI Windows 应用中扫描 QR 码或条形码。

IronBarcode:C# 条码库

IronBarcode 是一个 .NET 库,可以在程序中轻松创建条形码。 它提供了一套强大且易用的默认API。IronBarcode库提供了生成和读取QR码或其他条形码的功能,在对象级别上进行操作,因此您可以通过调用它们的方法逐个开发它们,而无需担心创建条形码对象和先前知识的细节。 此外,它不需要加载任何外部依赖项即可工作,并且可以使用NuGet包管理器轻松下载。

IronBarcode支持多种QR码和现代条码格式,如Code 39、Code 128、PDF417等多种格式。 您也可以将这个.NET库用作QR码读取器和构建器。 它将输入数据解码为人类可读的文本。 您可以从图像、流、GIF以及其他多种方式获取输入。 本文还将解释如何使用IronBarcode库在.NET MAUI应用程序中读取和扫描QR码。

在 .NET MAUI 应用中读取和扫描条形码的步骤

按照以下步骤在 .NET MAUI 应用中读取 QR 码。

先决条件

  1. 视觉工作室 2022

  2. 在 Visual Studio 中运行的 .NET MAUI 项目

  3. 稳定的互联网来安装IronBarcode库进行条形码扫描

    假设您具备上述先决条件,那么您可以进行下一步。

安装 IronBarcode 库

我们可以使用 NuGet 包控制台安装 IronBarcode 库。 在控制台中输入以下命令:

Install-Package BarCode

此控制台命令将在MAUI项目中下载IronBarcode库的最新版本。 但是,您当然可以随时在上检查并搜索 NuGet 包库的最新版本。NuGet 网站.

前端

首先,我们需要创建前端设计。

我们将创建一个布局,其中包含两个按钮、一个文本区域和一个图像框。 一个按钮用于选择条形码,另一个按钮用于复制条形码的文本。 图像框将显示所选图片。

MainPage.xaml 文件中的内容替换为以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MAUI_Barcode.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Button
                x:Name="ImageSelect"
                Text="Select Barcode"
                SemanticProperties.Hint="Select Image"
                Clicked="SelectBarcode"
                HorizontalOptions="Center" />
            <Image
                x:Name="barcodeImage"
                SemanticProperties.Description="Selected Barcode"
                HeightRequest="200"
                HorizontalOptions="Center" />
            <Editor x:Name="outputText"
                Placeholder="Output text"
                HeightRequest="100"
                WidthRequest="500" />
            <Button
                x:Name="copyText"
                Text="Copy"
                SemanticProperties.Hint="Copy Text"
                WidthRequest="150"
                Clicked="CopyEditorText"
                HorizontalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

所有元素都垂直堆叠在中心位置。 您可以根据您的喜好进行更改。

使用IronBarcode进行条码扫描

本部分将描述使用IronBarcode库扫描条形码的代码。 首先,我们将使用FilePicker来选择文件并指定图像的文件类型。 之后,我们将使用 FullPath 属性来检索图像文件的路径,然后将图像框的源设置为 FullPath 值。 最后,我们将在 BarcodeReaderRead 函数中使用 path 值来检索文本。

private async void SelectBarcode(object sender, EventArgs e)
{
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
    PickerTitle = "Pick image",
    FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();
    barcodeImage.Source = imageSource;
    var result = BarcodeReader.Read(imageSource).First().Text;
    outputText.Text = result;
}
private async void SelectBarcode(object sender, EventArgs e)
{
    var images = await FilePicker.Default.PickAsync(new PickOptions
    {
    PickerTitle = "Pick image",
    FileTypes = FilePickerFileType.Images
    });
    var imageSource = images.FullPath.ToString();
    barcodeImage.Source = imageSource;
    var result = BarcodeReader.Read(imageSource).First().Text;
    outputText.Text = result;
}
Private Async Sub SelectBarcode(ByVal sender As Object, ByVal e As EventArgs)
	Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
		.PickerTitle = "Pick image",
		.FileTypes = FilePickerFileType.Images
	})
	Dim imageSource = images.FullPath.ToString()
	barcodeImage.Source = imageSource
	Dim result = BarcodeReader.Read(imageSource).First().Text
	outputText.Text = result
End Sub
VB   C#

下图所示代码将用于复制文本编辑器的文本,并向用户显示文本已复制的提示信息。

private async void CopyEditorText (object sender, EventArgs e)
{
    await Clipboard.SetTextAsync(outputText.Text);
    await DisplayAlert("Success", "Text is copied!", "OK");
}
private async void CopyEditorText (object sender, EventArgs e)
{
    await Clipboard.SetTextAsync(outputText.Text);
    await DisplayAlert("Success", "Text is copied!", "OK");
}
Private Async Sub CopyEditorText(ByVal sender As Object, ByVal e As EventArgs)
	Await Clipboard.SetTextAsync(outputText.Text)
	Await DisplayAlert("Success", "Text is copied!", "OK")
End Sub
VB   C#

您可以在以下网站上获取这个用于读取和扫描代码的项目 GitHub().

输出

运行项目后,您会看到以下输出。 图像未显示是因为尚未选择。

使用 IronBarcode 的 .NET MAUI 条码扫描器教程 - 图 1:未选择图像时的输出结果

未选择图像时的输出

选择条形码后,就会显示如下截图,编辑器中也会显示 QR 码的输出文本。

.NET MAUI 条形码扫描仪教程使用 IronBarcode - 图 2:选择图像后的输出

选择图像后输出

单击 "复制 "按钮将触发前面提到的警报窗口。

.NET MAUI 条形码扫描器教程使用 IronBarcode - 图 3:复制警告

复制警报

结论

在这篇文章中,我们解释了如何在 .NET MAUI 应用程序中使用 IronBarcode 读取条形码。 IronBarcode是一个完整的产品,包含了所有必要的工具,使条码操作成为可能。 作为二维码阅读器,IronBarcode表现非常出色。 它提供了预期的确切输出。 此外,它可以识别复杂的条形码。 您还可以使用不同的字体来创建和自定义条形码。 获取有关IronBarcode的更多教程文章链接.

IronBarcode 用于开发目的是免费的。 但对于商业用途,您必须购买许可证。 您可以使用以下方法获取有关许可证的信息。链接.