跳過到頁腳內容
使用 IRONBARCODE

.NET MAUI 條碼掃描器 SDK:幾分鐘內建置跨平台掃描器

我們都知道 .NET MAUI 的承諾:一次寫好程式碼,隨處部署。 但是,當您需要整合硬體功能 (特別是 BarCode 掃描) 時,這種"無縫"的體驗往往會遇到障礙。

如果您曾經嘗試過以手動方式橋接原生攝影機 API,您就會知道這很快就會變成平台特定配置的兔子洞。 這並不難。 在本教程中,我們將跳過數小時的設定,使用 IronBarcode 函式庫,在短短幾分鐘內建立一個可運作的跨平台掃描器。

準備好開始? 取得您的免費試用版,讓我們一起編碼。

!{--010011000100100101000010010100100100000101010010010110010101111101001110010101010101010101010101010101010101010 0100010111110100100101001101010100010000010100110001001100010111110100001001001100010011110010101010

如何在 .NET MAUI 中設定 BarCode Scanner SDK?

設定 .NET MAUI BarCode 掃描器 SDK 需要建立新專案、安裝 NuGet 套件以及設定平台權限。 整個設定過程只需在 Visual Studio 中花費幾分鐘即可完成。

建立 .NET MAUI 專案

開啟 Visual Studio 並建立新的 .NET MAUI App 專案。 將您的 MAUI 專案命名為描述性的名稱,例如"BarcodeScanner",並選擇 .NET 8 或更新版本作為您的目標框架。 Visual Studio 會產生預設的專案結構,並針對 Android 和 iOS 設定特定平台的資料夾。

安裝 IronBarcode。

使用套件管理員控制台安裝 IronBarcode NuGet 套件:

Install-Package BarCode

此指令會下載並安裝條碼掃描器 SDK 以及所有 .NET MAUI 應用程式所需的相依性。

設定平台權限

即使是從影像檔案而非即時攝影機進行掃描,為您的 .NET MAUI 條碼掃描器應用程式設定下列權限也是良好的做法。

針對 Android,請在 Platforms/Android/AndroidManifest.xml 中加入下列內容:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
XML

對於 iOS,請將這些項目新增至 Platforms/iOS/Info.plist:

<key>NSPhotoLibraryUsageDescription</key>
<string>Access needed to select barcode images for scanning.</string>
<key>NSCameraUsageDescription</key>
<string>Camera permission for barcode scanning.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Access needed to select barcode images for scanning.</string>
<key>NSCameraUsageDescription</key>
<string>Camera permission for barcode scanning.</string>
XML

初始化 SDK

在您的 MauiProgram.cs 檔案中設定 IronBarcode:

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });
        return builder.Build();
    }
}
public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });
        return builder.Build();
    }
}
Public Module MauiProgram
    Public Function CreateMauiApp() As MauiApp
        Dim builder = MauiApp.CreateBuilder()
        builder _
            .UseMauiApp(Of App)() _
            .ConfigureFonts(Sub(fonts)
                                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular")
                            End Sub)
        Return builder.Build()
    End Function
End Module
$vbLabelText   $csharpLabel

在應用程式的初始化程式碼中設定您的授權金鑰,以啟用完整的功能。 IronBarcode 提供免費試用授權供開發及測試使用。

如何從影像檔中讀取 BarCode?

任何 MAUI 條碼掃描器的核心功能都是能夠從選取的影像中讀取條碼。 IronBarcode 的 BarcodeReader 類讓這一切變得非常簡單。

設計使用者介面

在 MainPage.xaml 中建立簡潔的介面,讓使用者可以選擇影像檔案並檢視掃描的 BarCode 資料:

<?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="BarcodeScanner.MainPage">
    <VerticalStackLayout Padding="20" Spacing="15">
        <Label Text=".NET MAUI Barcode Scanner" FontSize="24" HorizontalOptions="Center"/>
        <Button Text="Select Image to Scan" Clicked="OnSelectImageClicked"/>
        <Image x:Name="SelectedImageView" HeightRequest="200"/>
        <Label x:Name="ResultLabel" FontSize="16"/>
    </VerticalStackLayout>
</ContentPage>
<?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="BarcodeScanner.MainPage">
    <VerticalStackLayout Padding="20" Spacing="15">
        <Label Text=".NET MAUI Barcode Scanner" FontSize="24" HorizontalOptions="Center"/>
        <Button Text="Select Image to Scan" Clicked="OnSelectImageClicked"/>
        <Image x:Name="SelectedImageView" HeightRequest="200"/>
        <Label x:Name="ResultLabel" FontSize="16"/>
    </VerticalStackLayout>
</ContentPage>
XML

實施 BarCode 掃描

將掃描邏輯新增至 MainPage.xaml.cs。 此程式碼處理影像選擇與 BarCode 偵測:

using IronBarCode;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private async void OnSelectImageClicked(object sender, EventArgs e)
    {
        var result = await FilePicker.PickAsync(new PickOptions
        {
            FileTypes = FilePickerFileType.Images,
            PickerTitle = "Select a barcode image"
        });
        if (result != null)
        {
            // Display the selected image
            SelectedImageView.Source = ImageSource.FromFile(result.FullPath);
            // Read barcodes from the image file
            var barcodes = BarcodeReader.Read(result.FullPath);
            if (barcodes.Any())
            {
                ResultLabel.Text = $"Found: {barcodes.First().Value}";
            }
            else
            {
                ResultLabel.Text = "No barcodes detected in selected image.";
            }
        }
    }
}
using IronBarCode;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }
    private async void OnSelectImageClicked(object sender, EventArgs e)
    {
        var result = await FilePicker.PickAsync(new PickOptions
        {
            FileTypes = FilePickerFileType.Images,
            PickerTitle = "Select a barcode image"
        });
        if (result != null)
        {
            // Display the selected image
            SelectedImageView.Source = ImageSource.FromFile(result.FullPath);
            // Read barcodes from the image file
            var barcodes = BarcodeReader.Read(result.FullPath);
            if (barcodes.Any())
            {
                ResultLabel.Text = $"Found: {barcodes.First().Value}";
            }
            else
            {
                ResultLabel.Text = "No barcodes detected in selected image.";
            }
        }
    }
}
Imports IronBarCode

Public Partial Class MainPage
    Inherits ContentPage

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Async Sub OnSelectImageClicked(sender As Object, e As EventArgs)
        Dim result = Await FilePicker.PickAsync(New PickOptions With {
            .FileTypes = FilePickerFileType.Images,
            .PickerTitle = "Select a barcode image"
        })
        If result IsNot Nothing Then
            ' Display the selected image
            SelectedImageView.Source = ImageSource.FromFile(result.FullPath)
            ' Read barcodes from the image file
            Dim barcodes = BarcodeReader.Read(result.FullPath)
            If barcodes.Any() Then
                ResultLabel.Text = $"Found: {barcodes.First().Value}"
            Else
                ResultLabel.Text = "No barcodes detected in selected image."
            End If
        End If
    End Sub
End Class
$vbLabelText   $csharpLabel

輸出

.NET MAUI 條碼掃描器 SDK:在幾分鐘內建立一個跨平台的掃描器:圖片 1 - 條碼掃描輸出

BarcodeReader.Read() 方法會分析選取的影像,並傳回所有偵測到的條碼。 IronBarcode 可自動辨識多種條碼符號,包括 QR 碼、Code 128、Code 39、EAN-13 以及 許多其他格式

如何從 PDF 文件掃描 BarCode?

IronBarcode 與眾不同的一項強大功能是直接從 PDF 檔案讀取條碼。 這對於處理文件工作流程的 .NET MAUI 應用程式來說至關重要。

private async void OnSelectPdfClicked(object sender, EventArgs e)
{
    var result = await FilePicker.PickAsync(new PickOptions
    {
        PickerTitle = "Select a PDF with barcodes"
    });
    if (result != null)
    {
        // Read barcodes from PDF document
        var barcodes = BarcodeReader.ReadPdf(result.FullPath);
        string output = "";
        foreach (var barcode in barcodes)
        {
            output += $"Page {barcode.PageNumber}: {barcode.Value}\n";
        }
        await DisplayAlert("Scan Results", output, "OK");
    }
}
private async void OnSelectPdfClicked(object sender, EventArgs e)
{
    var result = await FilePicker.PickAsync(new PickOptions
    {
        PickerTitle = "Select a PDF with barcodes"
    });
    if (result != null)
    {
        // Read barcodes from PDF document
        var barcodes = BarcodeReader.ReadPdf(result.FullPath);
        string output = "";
        foreach (var barcode in barcodes)
        {
            output += $"Page {barcode.PageNumber}: {barcode.Value}\n";
        }
        await DisplayAlert("Scan Results", output, "OK");
    }
}
Private Async Sub OnSelectPdfClicked(sender As Object, e As EventArgs)
    Dim result = Await FilePicker.PickAsync(New PickOptions With {
        .PickerTitle = "Select a PDF with barcodes"
    })
    If result IsNot Nothing Then
        ' Read barcodes from PDF document
        Dim barcodes = BarcodeReader.ReadPdf(result.FullPath)
        Dim output As String = ""
        For Each barcode In barcodes
            output &= $"Page {barcode.PageNumber}: {barcode.Value}" & vbCrLf
        Next
        Await DisplayAlert("Scan Results", output, "OK")
    End If
End Sub
$vbLabelText   $csharpLabel

輸出

.NET MAUI 條碼掃描器 SDK:在幾分鐘內建立一個跨平台的掃描器:圖片 2 - 掃描含有 QR 代碼的 PDF 的輸出

ReadPdf()方法會掃描 PDF 的所有頁面,並將條碼資料與頁碼一併傳回,讓您可以輕鬆處理包含多個條碼的文件。

如何處理多個 BarCode 和 QR 碼?

對於需要從單一掃描檢測多個條碼或特定條碼格式過濾的情況,請設定 BarcodeReaderOptions 類:

var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
foreach (var barcode in barcodes)
{
    Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}");
}
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
foreach (var barcode in barcodes)
{
    Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}");
}
Imports System

Dim options As New BarcodeReaderOptions With {
    .ExpectMultipleBarcodes = True,
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
    .Speed = ReadingSpeed.Balanced
}
Dim barcodes = BarcodeReader.Read(imagePath, options)
For Each barcode In barcodes
    Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}")
Next
$vbLabelText   $csharpLabel

此配置可掃描多種條碼,同時將偵測範圍限制在特定條碼符號,以提高效能。 速度屬性可讓您根據應用程式的需求,在掃描速度與精確度之間取得平衡。

此 BarCode SDK 的主要優點為何?

IronBarcode 為 .NET MAUI 條碼掃描專案提供多項優點:

  • 跨平台支援:從單一代碼庫部署至 Android、iOS 平台和 Windows
  • 多種輸入來源:掃描影像、記憶體串流和 PDF 檔案中的 BarCode
  • 廣泛的格式支援:解碼數十種 1D 和 2D 條碼符號的 BarCode
  • 簡單的 API:僅需幾行程式碼即可整合快速的 BarCode 掃描功能
  • 無外部依賴:.NET 函式庫可獨立運作,不需要額外的原生 SDK

結論

使用 IronBarcode 建立一個 .NET MAUI 條碼掃描器,展示了如何簡單直接地將條碼掃描功能整合到跨平台應用程式中。 從安裝 NuGet 套件到從影像和 PDF 讀取 BarCode,整個過程只需要最少的設定和程式碼。

.NET MAUI 的跨平台框架功能與 IronBarcode 強大的掃描 SDK 相結合,使開發人員能夠建立功能強大的條碼掃描應用程式,並在移動和桌面上無縫運行。

準備好在您的 .NET MAUI 專案中加入 BarCode 掃描功能了嗎? 開始免費試用探索生產部署的授權選項

常見問題解答

.NET MAUI是什麼?它與條碼掃描有何關係?

.NET MAUI 是一個框架,它允許開發人員使用單一程式碼庫建立跨平台應用程式。將條碼掃描功能整合到 .NET MAUI 應用程式中可能具有挑戰性,但 IronBarcode 透過提供強大的工具來簡化此過程,這些工具可用於在不同平台上掃描和讀取條碼。

IronBarcode 如何協助開發用於 .NET MAUI 應用程式的條碼掃描器?

IronBarcode 提供了一個功能全面的函式庫,支援條碼掃描和產生。它透過提供易於使用的方法和函數,簡化了為 .NET MAUI 應用程式建立條碼掃描器的過程,這些方法和函數可以從圖像和 PDF 中讀取條碼。

IronBarcode 是否相容於 .NET MAUI 中的跨平台開發?

是的,IronBarcode 與 .NET MAUI 完全相容,允許開發人員從單一程式碼庫將條碼掃描功能整合到在多個平台上執行的應用程式中。

在 .NET MAUI 應用程式中,IronBarcode 可以掃描哪些類型的條碼?

IronBarcode 支援多種條碼格式,包括 QR 碼、Code 128、UPC、EAN 等,使其適用於 .NET MAUI 中的各種應用程式。

IronBarcode 如何簡化 .NET MAUI 中的條碼掃描?

IronBarcode 透過提供統一的 API 簡化條碼掃描,該 API 可以用最少的程式碼處理條碼檢測和讀取,從而確保與 .NET MAUI 專案順利整合。

在MAUI應用程式中使用IronBarcode進行PDF條碼讀取有哪些優勢?

IronBarcode 提供從 PDF 文件中提取條碼的高級功能,使 .NET MAUI 開發人員能夠輕鬆地將 PDF 條碼讀取功能添加到他們的跨平台應用程式中。

在.NET MAUI專案中設定IronBarcode需要哪些步驟?

在 .NET MAUI 專案中設定 IronBarcode 包括安裝 IronBarcode NuGet 套件、匯入必要的命名空間,並利用提供的方法來實現條碼掃描和讀取功能。

IronBarcode 能否在 .NET MAUI 中處理基於影像的條碼掃描?

是的,IronBarcode 可以有效地掃描和讀取影像中的條碼,對於希望在其 .NET MAUI 應用程式中實現基於影像的條碼掃描的開發人員來說,它是一款強大的工具。

IronBarcode 是否適用於行動應用程式中的即時條碼掃描?

IronBarcode 旨在有效處理即時條碼掃描,因此適用於使用 .NET MAUI 開發的需要快速、準確的條碼資料處理的行動應用程式。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。