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