使用 IRONBARCODE MAUI條碼掃描器教學:攝影機與IronBarcode集成 Curtis Chau 發表日期:2026年1月21日 下載 IronBarcode NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 現代行動應用程式越來越依賴條碼掃描來進行庫存管理、銷售點系統和產品追蹤。 建立 MAUI 條碼掃描器,可以將條碼偵測直接整合到 .NET MAUI 應用程式中,結合攝影機畫面和影像檔案處理來偵測二維碼、資料矩陣和其他條碼格式。 雖然許多條碼庫專注於相機預覽,但 IronBarcode 即使在具有挑戰性的條件下也能準確讀取和掃描條碼,表現出色。 在本指南中,我將向您展示如何使用 IronBarcode 在 .NET MAUI 專案中實作條碼掃描功能。 到最後,您將能夠掃描單個影像檔案中的多個條碼或從裝置的攝影機掃描條碼,讀取任何給定條碼的數據,並自信地在您自己的 MAUI 專案中使用 IronBarcode。 建構MAUI條碼掃描器需要哪些先決條件? 在開始之前,請確保您已安裝 Visual Studio Code 或 Visual Studio 2022 以及 .NET MAUI 工作負載,並具備 C# 的基本知識。 您還需要 .NET 8 SDK 以獲得最佳效能和對跨平台應用程式的支援。 如何設定 MAUI 條碼掃描項目? 在 Visual Studio 2022 中建立一個新的 .NET MAUI 應用程式專案。將其命名為"BarcodeScannerApp",並選擇 .NET 8 作為目標框架。 透過 NuGet 套件管理器控制台安裝 IronBarcode: Install-Package BarCode 這將安裝一個 .NET 程式庫,支援多種條碼格式,包括二維碼、Code 128 和 Data Matrix。 IronBarcode 可離線運作,並可處理原生不支援的反向條碼,從而確保連續掃描和更好的掃描一致性。 要啟動 IronBarcode,請取得免費試用許可證並將其新增至您的程式碼: License.LicenseKey = "YOUR-LICENSE-KEY"; License.LicenseKey = "YOUR-LICENSE-KEY"; License.LicenseKey = "YOUR-LICENSE-KEY" $vbLabelText $csharpLabel 如何設定安卓和iOS系統的相機權限? 平台特定的相機權限對於條碼掃描功能至關重要。 每個平台都需要在其清單檔案中進行特定配置。 對於 Android 系統,請編輯 Platforms/Android/AndroidManifest.xml 檔案: <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> The provided code is XML, not C#. Therefore, it doesn't require conversion to VB.NET. If you have C# code that needs conversion, please provide it, and I'll be happy to assist. $vbLabelText $csharpLabel 這些權限允許存取相機並聲明使用相機硬件,確保您的應用程式可以在 Android 裝置上擷取條碼影像。 對於 iOS 系統,請修改 Platforms/iOS/Info.plist 檔案: <key>NSCameraUsageDescription</key> <string>This app requires camera access to scan barcodes</string> <key>NSCameraUsageDescription</key> <string>This app requires camera access to scan barcodes</string> $vbLabelText $csharpLabel 此配置提供了 iOS 在向使用者要求相機權限時顯示的必要隱私描述。 如何建立條碼掃描器介面? 在 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="BarcodeScannerApp.MainPage"> <VerticalStackLayout Padding="20" Spacing="20"> <Label Text="Barcode Scanner" FontSize="24" HorizontalOptions="Center" /> <Image x:Name="CapturedImage" HeightRequest="300" Aspect="AspectFit" /> <Label x:Name="ResultLabel" Text="Tap button to scan" HorizontalOptions="Center" /> <Button Text="Scan Barcode" Clicked="OnScanClicked" BackgroundColor="#007ACC" TextColor="White" /> </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="BarcodeScannerApp.MainPage"> <VerticalStackLayout Padding="20" Spacing="20"> <Label Text="Barcode Scanner" FontSize="24" HorizontalOptions="Center" /> <Image x:Name="CapturedImage" HeightRequest="300" Aspect="AspectFit" /> <Label x:Name="ResultLabel" Text="Tap button to scan" HorizontalOptions="Center" /> <Button Text="Scan Barcode" Clicked="OnScanClicked" BackgroundColor="#007ACC" TextColor="White" /> </VerticalStackLayout> </ContentPage> $vbLabelText $csharpLabel 此佈局創建了一個簡潔的介面,包括圖像預覽區、結果顯示標籤和掃描按鈕。 VerticalStackLayout 提供一致的間距和內邊距,讓外觀更專業。 如何實現條碼讀取器功能? 在 MainPage.xaml.cs 中使用 IronBarcode 的影像處理功能實現掃描邏輯: using IronBarCode; using IronSoftware.Drawing; namespace BarcodeScannerApp; public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); License.LicenseKey = "YOUR-LICENSE-KEY"; } private async void OnScanClicked(object sender, EventArgs e) { try { // Capture photo using device camera var photo = await MediaPicker.Default.CapturePhotoAsync(); if (photo == null) return; // Convert photo to byte array using var stream = await photo.OpenReadAsync(); using var memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); var imageBytes = memoryStream.ToArray(); // Display captured image CapturedImage.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes)); // Process with IronBarcode var bitmap = AnyBitmap.FromBytes(imageBytes); var results = await BarcodeReader.ReadAsync(bitmap); // Display results if (results.Any()) { var barcodeValue = results.First().Value; ResultLabel.Text = $"Scanned: {barcodeValue}"; } else { ResultLabel.Text = "No barcode detected"; } } catch (Exception ex) { await DisplayAlert("Error", $"Scanning failed: {ex.Message}", "OK"); } } } using IronBarCode; using IronSoftware.Drawing; namespace BarcodeScannerApp; public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); License.LicenseKey = "YOUR-LICENSE-KEY"; } private async void OnScanClicked(object sender, EventArgs e) { try { // Capture photo using device camera var photo = await MediaPicker.Default.CapturePhotoAsync(); if (photo == null) return; // Convert photo to byte array using var stream = await photo.OpenReadAsync(); using var memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); var imageBytes = memoryStream.ToArray(); // Display captured image CapturedImage.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes)); // Process with IronBarcode var bitmap = AnyBitmap.FromBytes(imageBytes); var results = await BarcodeReader.ReadAsync(bitmap); // Display results if (results.Any()) { var barcodeValue = results.First().Value; ResultLabel.Text = $"Scanned: {barcodeValue}"; } else { ResultLabel.Text = "No barcode detected"; } } catch (Exception ex) { await DisplayAlert("Error", $"Scanning failed: {ex.Message}", "OK"); } } } Imports IronBarCode Imports IronSoftware.Drawing Namespace BarcodeScannerApp Public Partial Class MainPage Inherits ContentPage Public Sub New() InitializeComponent() License.LicenseKey = "YOUR-LICENSE-KEY" End Sub Private Async Sub OnScanClicked(sender As Object, e As EventArgs) Try ' Capture photo using device camera Dim photo = Await MediaPicker.Default.CapturePhotoAsync() If photo Is Nothing Then Return ' Convert photo to byte array Using stream = Await photo.OpenReadAsync() Using memoryStream As New MemoryStream() Await stream.CopyToAsync(memoryStream) Dim imageBytes = memoryStream.ToArray() ' Display captured image CapturedImage.Source = ImageSource.FromStream(Function() New MemoryStream(imageBytes)) ' Process with IronBarcode Dim bitmap = AnyBitmap.FromBytes(imageBytes) Dim results = Await BarcodeReader.ReadAsync(bitmap) ' Display results If results.Any() Then Dim barcodeValue = results.First().Value ResultLabel.Text = $"Scanned: {barcodeValue}" Else ResultLabel.Text = "No barcode detected" End If End Using End Using Catch ex As Exception Await DisplayAlert("Error", $"Scanning failed: {ex.Message}", "OK") End Try End Sub End Class End Namespace $vbLabelText $csharpLabel 此實作透過 MediaPicker 擷取影像,將其轉換為位元組數組進行處理,並使用 IronBarcode 的 BarcodeReader.ReadAsync 方法進行檢測。 AnyBitmap.FromBytes 方法可以自動處理各種影像格式。 錯誤處理機制確保以用戶友好的訊息實現優雅的故障復原。 有了這個代碼,我們就可以掃描這個條碼了: 如何使用 IronBarcode 建立 MAUI 條碼掃描器:圖 2 - 輸入測試條碼 你應該可以在螢幕上看到條碼的數據: 如何使用 IronBarcode 建立 MAUI 條碼掃描器:圖 3 - 掃描的條碼值 IronBarcode提供哪些進階功能? IronBarcode 提供多種進階功能,可提高掃描可靠性。 該函式庫的機器學習演算法會自動調整置信度閾值,進而提高對複雜條碼的辨識準確率。 影像校正濾鏡無需額外配置即可處理旋轉、傾斜或光線不足的條碼。 根據具體的掃描需求,自訂閱讀器選項: var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced, ExpectMultipleBarcodes = true, ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 }; var results = await BarcodeReader.ReadAsync(bitmap, opcanbvations); var options = new BarcodeReaderOptions { Speed = ReadingSpeed.Balanced, ExpectMultipleBarcodes = true, ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 }; var results = await BarcodeReader.ReadAsync(bitmap, opcanbvations); Imports System.Threading.Tasks Dim options As New BarcodeReaderOptions With { .Speed = ReadingSpeed.Balanced, .ExpectMultipleBarcodes = True, .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128 } Dim results = Await BarcodeReader.ReadAsync(bitmap, options) $vbLabelText $csharpLabel 此配置優化了特定條碼類型的掃描,並可在單一影像中偵測多個條碼,從而在保持準確性的同時減少處理時間。 如何使用 IronBarcode 建立 MAUI 條碼掃描器:圖 4 - 從相同影像掃描多個條碼 常見故障排除技巧 即使設定了強大的 MAUI 條碼掃描器,由於裝置設定、影像品質或平台特定限制,偶爾也會出現問題。 以下提示旨在解決在 .NET MAUI 應用程式中實現條碼掃描功能時遇到的最常見問題: *攝影機無法開啟:*請確保在清單節點中正確設定下列權限,然後重新部署應用程式。此外,如果您在具有多個攝影機或自訂攝影機配置的裝置上進行測試,請檢查是否支援多攝影機設定。 掃描結果不佳:**調整影像解析度或光照,或對條碼進行變換。 此外,啟用連續掃描並提高 BarcodeReaderOptions 中的"速度"選項可以提高掃描一致性。 *記憶體問題:使用 using 語句正確釋放影像流。 這樣可以確保條碼掃描功能保持反應迅速,並防止在 Android 裝置或 Microsoft Windows 電腦上出現意外崩潰或運行緩慢的情況。 iOS 問題:確認 Info.plist 檔案包含正確的二維碼綁定屬性。 建議在 iPhone 和 iPad 裝置上進行測試,以確保 iOS 裝置上的條碼掃描功能一致。 結論 IronBarcode以其強大的影像處理引擎和機器學習功能,徹底改變了MAUI條碼掃描方式。 與即時相機預覽庫不同,IronBarcode 的方法即使在具有挑戰性的條件下也能確保可靠的掃描。 該庫的離線功能和廣泛的格式支援使其成為企業應用程式的理想選擇。 現在,您可以自信地運用今天我們教給您的知識,創建您自己的 .NET MAUI 條碼掃描器。 想了解更多? 請務必閱讀 IronBarcodes 的詳細文件。 立即開始開發,免費試用版即可用於生產部署。 IronBarcode 兼具準確性、易用性和全面性的功能,是 MAUI 條碼掃描應用的最佳選擇。 常見問題解答 使用 IronBarcode 為 MAUI 條碼掃描器提供什麼優勢? IronBarcode 即使在具有挑戰性的條件下也能準確讀取和掃描條碼,使其成為 MAUI 應用程式整合的理想選擇。 IronBarcode能否在MAUI應用程式中處理多種條碼格式? 是的,IronBarcode 可以偵測各種條碼格式,包括二維碼和資料矩陣碼,使其能夠靈活滿足不同的應用需求。 IronBarcode 如何與 MAUI 條碼掃描器的攝影機畫面整合? IronBarcode 可與相機畫面無縫集成,從而在 MAUI 應用程式中直接實現即時條碼偵測和處理。 IronBarcode是否支援MAUI應用程式中的離線條碼掃描? 是的,IronBarcode 支援離線碼掃描,無需網路連接即可運行,這對於行動應用程式來說是有利的。 IronBarcode在MAUI系統中條碼掃描的主要功能有哪些? 主要特點包括:精確的條碼檢測、支援多種條碼格式,以及即使在具有挑戰性的條件下也能保持穩定的效能。 IronBarcode 如何面對複雜的掃描環境? IronBarcode 旨在即使在光線不足或角度傾斜等具有挑戰性的條件下也能準確讀取條碼,從而確保可靠的性能。 在 MAUI 中使用 IronBarcode 設定條碼掃描權限是否容易? 是的,IronBarcode 提供了關於設定條碼掃描所需權限的清晰指導,使其在 MAUI 中易於實現。 IronBarcode 能否用於 MAUI 的庫存管理應用? 當然,IronBarcode 非常適合庫存管理,它提供高效的條碼掃描功能,可以整合到 MAUI 應用程式中。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 更新2026年1月22日 ASP.NET 條碼掃描器教學:C# 條碼產生器指南 學習如何使用 IronBarcode 在 ASP.NET 中掃描條碼 閱讀更多 發表日期 2026年1月21日 C# 資料矩陣產生器:IronBarcode 完整指南 C# 資料矩陣條碼產生器教學。學習如何使用 IronBarcode 建立 ECC200 資料矩陣條碼。提供簡單的二維條碼生成程式碼範例。 閱讀更多 發表日期 2026年1月21日 使用 IronBarcode 的 Xamarin 條碼產生器建立專業品質的條碼 使用 IronBarcode 和 Xamarin 條碼產生器,學習如何建立專業品質的條碼。 閱讀更多 如何將高效的條碼 .NET 元件無縫整合到 C# 應用程式中使用 IronBarcode 建立 C# 掃描...
發表日期 2026年1月21日 C# 資料矩陣產生器:IronBarcode 完整指南 C# 資料矩陣條碼產生器教學。學習如何使用 IronBarcode 建立 ECC200 資料矩陣條碼。提供簡單的二維條碼生成程式碼範例。 閱讀更多
發表日期 2026年1月21日 使用 IronBarcode 的 Xamarin 條碼產生器建立專業品質的條碼 使用 IronBarcode 和 Xamarin 條碼產生器,學習如何建立專業品質的條碼。 閱讀更多