翻譯|使用教程|編輯:吉煒煒|2025-07-09 10:07:05.217|閱讀 98 次
概述:本文將通過一個簡潔明了的示例,演示如何使用 C# 從圖像中讀取二維碼,并在桌面或服務器端項目中輕松實現識別功能。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
二維碼已成為現代應用的常見組成部分,廣泛應用于用戶身份驗證、移動支付、商品包裝和活動票務等場景。很多使用 C# 開發的系統需要從圖像或掃描件中提取二維碼信息,因此掌握二維碼識別技術顯得尤為重要。
為滿足這類需求,開發者需要一種既可靠又易于集成的二維碼解碼方式。本文將通過一個簡潔明了的示例,演示如何借助 Spire.Barcode for .NET 使用 C# 從圖像中讀取二維碼,并在桌面或服務器端項目中輕松實現識別功能。
加入Spire技術交流QQ群(125237868),與更多開發者一起提升文檔開發技能。
首先我們需要使用支持二維碼解碼的 .NET 條碼庫。E-iceblue旗下Spire系列產品是國產化文檔處理和轉換領域的佼佼者,支持國產化信創。本指南采用 Spire.Barcode for .NET,該庫提供簡潔API幫助開發者輕松從圖片文件和數據流讀取二維碼。
可通過NuGet包管理器安裝:
Install-Package Spire.Barcode
演示案例使用 Visual Studio 創建 C# 控制臺應用:
通過庫提供的靜態方法 BarcodeScanner.Scan() 即可從圖片文件讀取二維碼。該方法接收圖片路徑和 BarcodeType 作為參數,返回匹配指定類型(如二維碼)的所有解碼結果。此方法支持 JPG、PNG、EMF 等圖片格式,適用于控制臺應用、桌面應用或處理上傳圖像的服務端程序。
using Spire.Barcode; class Program { static void Main(string[] args) { // 加載二維碼圖片 string imagePath = @"C:\qr-code.png"; // 條碼掃描器從圖片讀取二維碼 string[] results = BarcodeScanner.Scan(imagePath, BarCodeType.QRCode); // 顯示解碼結果 foreach (string result in results) { Console.WriteLine("二維碼內容: " + result + "\n"); } } }
二維碼圖片及 C# 解碼效果:
在Web API或現代應用中處理內存圖像時,常需操作 Stream 對象——例如處理文件上傳或讀取云存儲時。
BarcodeScanner.Scan() 方法直接支持 Stream 輸入,無需轉換即可輕松解碼二維碼:
using Spire.Barcode; using System.IO; class Program { static void Main(string[] args) { using (FileStream fs = new FileStream(@"C:\qr-code.png", FileMode.Open, FileAccess.Read)) { // 直接從數據流解析二維碼 string[] results = BarcodeScanner.Scan(fs, BarCodeType.QRCode, false); foreach (string result in results) { Console.WriteLine("二維碼內容: " + result); } } } }此方法特別適用于 WPF 或 ASP.NET Core 等需要內存處理的應用。
實際場景中可能因圖像質量導致識別失敗,以下是提升解碼成功率的實踐方案:
通過 try-catch 塊優化異常處理:
try { string[] results = BarcodeScanner.Scan(imagePath, BarCodeType.QRCode); if (results.Length == 0) { Console.WriteLine("未檢測到二維碼"); } else { Console.WriteLine("二維碼內容: " + results[0]); } } catch (Exception ex) { Console.WriteLine("解碼錯誤: " + ex.Message); }
有時需要獲取二維碼在圖片中的精確位置(用于裁剪或標注),可通過 ScanInfo() 方法獲取邊界框:
ScanResult[] results = scanner.ScanInfo(imagePath, BarCodeType.QRCode); foreach (BarcodeInfo result in results) { Console.WriteLine("內容: " + result.DataString); Console.WriteLine($"坐標: " + string.Join(",", result.Vertexes.Select(p => $"({p.X},{p.Y})")) + "\n"); }
該方案可同時獲取二維碼數據和位置信息。
效果演示:
使用 Spire.Barcode for .NET 庫的 BarcodeScanner.Scan() 方法,幾行代碼即可實現從圖片或數據流讀取二維碼。
向 Scan() 方法傳入圖片路徑后,將自動檢測所有支持類型。若需限定檢測類型(如僅 QR 碼或 Code128),傳入對應的 BarCodeType 參數即可。
直接使用 BarcodeScanner.Scan() 方法即可掃描一張圖片上的多個二維碼。該方法支持自動識別圖片上條碼的類型,并返回所有條碼的掃描結果。
使用 Spire.Barcode for .NET 庫,僅需少量代碼即可在 C# 中實現二維碼讀取。該方案支持圖片和數據流解碼,完美適配桌面應用、服務端及 WPF 程序,且配置簡單性能優異。
基于此基礎,可進一步探索二維碼生成、文檔集成和實時掃描等進階應用。
————————————————————————————————————————
關于慧都科技:
慧都科技是一家行業數字化解決方案公司,長期專注于軟件、油氣與制造行業。公司基于深入的業務理解與管理洞察,以系統化的業務建模驅動技術落地,幫助企業實現智能化運營與長期競爭優勢。在軟件工程領域,我們提供開發控件、研發管理、代碼開發、部署運維等軟件開發全鏈路所需的產品,提供正版授權采購、技術選型、個性化維保等服務,幫助客戶實現技術合規、降本增效與風險可控。慧都科技E-iceblue的官方授權代理商,提供E-iceblue系列產品免費試用,咨詢,正版銷售等于一體的專業化服務。E-iceblue旗下Spire系列產品是國產文檔處理領域的優秀產品,支持國產化,幫助企業高效構建文檔處理的應用程序。
歡迎下載|體驗更多E-iceblue產品
獲取更多信息請咨詢 ;技術交流Q群(125237868)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網