國產化條碼類庫Spire.Barcode教程:使用 C# 讀取二維碼(QR Code)——從圖片或數據流解析

二維碼已成為現代應用的常見組成部分,廣泛應用于用戶身份驗證、移動支付、商品包裝和活動票務等場景。很多使用 C# 開發的系統需要從圖像或掃描件中提取二維碼信息,因此掌握二維碼識別技術顯得尤為重要。

為滿足這類需求,開發者需要一種既可靠又易于集成的二維碼解碼方式。本文將通過一個簡潔明了的示例,演示如何借助?Spire.Barcode for .NET?使用 C# 從圖像中讀取二維碼,并在桌面或服務器端項目中輕松實現識別功能。

? ?Spire.Barcode for .NET試用下載

1. 項目配置

首先我們需要使用支持二維碼解碼的 .NET 條碼庫。E-iceblue旗下Spire系列產品是國產化文檔處理和轉換領域的佼佼者,支持國產化信創。本指南采用?Spire.Barcode for .NET,該庫提供簡潔API幫助開發者輕松從圖片文件和數據流讀取二維碼。

1.1 通過NuGet安裝庫

可通過NuGet包管理器安裝:

Install-Package Spire.Barcode

1.2 創建控制臺項目

演示案例使用 Visual Studio 創建 C# 控制臺應用:

  • 支持?.NET Framework.NET Core/.NET 6+ASP.NET?或 Xamarin 跨平臺移動開發
  • 添加?Spire.Barcode.dll?引用(如未使用NuGet)

2. 用 C# 從圖片讀取二維碼

通過庫提供的靜態方法?BarcodeScanner.Scan()?即可從圖片文件讀取二維碼。該方法接收圖片路徑和?BarcodeType?作為參數,返回匹配指定類型(如二維碼)的所有解碼結果。此方法支持 JPG、PNG、EMF 等圖片格式,適用于控制臺應用、桌面應用或處理上傳圖像的服務端程序。

2.1 C# 示例代碼:從圖片文件解碼二維碼

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# 解碼效果:

C#解碼二維碼輸出結果到控制臺

2.2 代碼說明

  • Scan()?方法讀取并解碼圖片中所有條碼
  • BarCodeType.QRCode?參數確保僅檢測二維碼(可修改為其他類型)
  • 返回數組格式以支持多二維碼場景

3. 用 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 等需要內存處理的應用。

4. 提高準確率與錯誤處理

實際場景中可能因圖像質量導致識別失敗,以下是提升解碼成功率的實踐方案:

4.1 優化識別準確率

  • 使用高清圖片,避免模糊或過度壓縮
  • 保留靜區(二維碼周圍空白區域)
  • 優先選擇PNG格式保證清晰度
  • 避免透視畸變——使用正對拍攝的圖片

4.2 增強錯誤處理

通過 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);
}

5. 進階技巧:獲取二維碼在圖片上的坐標

有時需要獲取二維碼在圖片中的精確位置(用于裁剪或標注),可通過?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");
}

該方案可同時獲取二維碼數據和位置信息。

效果演示:

用C#解碼二維碼并讀取其在圖片上的坐標

6. 常見問題

如何在 C# 中讀取二維碼?

使用?Spire.Barcode for .NET?庫的?BarcodeScanner.Scan()?方法,幾行代碼即可實現從圖片或數據流讀取二維碼。

如何讀取其他類型條碼(非二維碼)?

向?Scan()?方法傳入圖片路徑后,將自動檢測所有支持類型。若需限定檢測類型(如僅 QR 碼或 Code128),傳入對應的?BarCodeType?參數即可。

如何掃描一張圖片上的多個二維碼?

直接使用?BarcodeScanner.Scan()?方法即可掃描一張圖片上的多個二維碼。該方法支持自動識別圖片上條碼的類型,并返回所有條碼的掃描結果。

7. 總結

使用?Spire.Barcode for .NET?庫,僅需少量代碼即可在 C# 中實現二維碼讀取。該方案支持圖片和數據流解碼,完美適配桌面應用、服務端及 WPF 程序,且配置簡單性能優異。

基于此基礎,可進一步探索二維碼生成、文檔集成和實時掃描等進階應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90560.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90560.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IPSAN 共享存儲詳解:架構、優化與落地實踐指南

一、IPSAN 技術定位與核心價值核心價值對比矩陣:維度IPSANFC-SAN實現方案成本端口成本$500端口成本$2000復用IP網絡設備傳輸距離跨地域(VPN/專線)≤10公里兩地三中心架構運維效率SNMP/CLI管理Zone/ALPA管理自動化運維工具鏈協議標準IETF RFC …

【衛星語音】基于神經網絡的低碼率語音編解碼(ULBC)方案架構分析:以SoundStream為例

摘要 隨著深度學習技術的快速發展,基于神經網絡的音頻編解碼技術已成為下一代音頻壓縮的重要研究方向。本文以Google提出的SoundStream為核心分析對象,深入探討其在低碼率語音編解碼領域的創新架構設計和關鍵技術突破。SoundStream通過全卷積編解碼器網絡…

技術面試問題總結一

MySQL的幾種鎖機制一、從鎖的粒度角度劃分表級鎖機制:它是對整張表進行鎖定的一種鎖。當一個事務對表執行寫操作時,會獲取寫鎖,在寫鎖持有期間,其他事務無法對該表進行讀寫操作;而當事務執行讀操作時,會獲取…

Python(一)

基本語法:變量,語法變量類型:不同于Java,C語言,C,Python在創建一個變量的時候,不需要聲明變量類型,由編譯器自行識別Python語句在只有一個語句的時候語句末尾不需要分號,…

Adaptive AUTOSAR中的Firewall技術:智能汽車網絡安全架構的核心

1 防火墻技術基礎 1.1 定義與演進歷程 防火墻(Firewall)作為一種位于內部網絡與外部網絡之間的網絡安全系統,本質上是依照特定規則允許或限制數據傳輸的信息安全防護機制。在汽車電子電氣架構從分布式向集中式轉變的背景下,防火墻技術已從傳統的IT領域深度融入Adaptive A…

android閃光燈源碼分析

目錄 一、APP層源碼分析 二,framework層代碼分析 ???????2.1 binder溯源 這幾天擼了android11 aosp閃光燈源碼,本著前人栽樹后人乘涼的原則,有志于android系統開發的新同學們提供一盞明燈,照亮你們前行。 本人擼代碼風格&…

文心一言4.5開源部署指南及文學領域測評

📝個人主頁:哈__ 期待您的關注 目錄 一、引言 二、文心一言開源模型 2.1 MoE架構 2.2 文心一言MoE架構 三、文心一言稠密模型部署 3.1 產品選擇 3.2 環境選擇 3.3 Python3.12安裝 3.3 PaddlePaddle-GPU安裝 3.4 FastDeploy-GPU安裝 ?編輯3.…

深入探討 C++ 中的浮點數數據類型

核心概念:IEEE 754 標準 C 中的浮點數(float, double, long double)在絕大多數現代系統上遵循 IEEE 754 標準。這個標準定義了浮點數在內存中的二進制表示方式、運算規則、特殊值(如無窮大、NaN)等。數據類型與精度 fl…

相機:以鼠標點為中心縮放(使用OpenGL+QT開發三維CAD)

很多軟件中(Auto CAD、ODA等)支持以鼠標點為中心進行放縮操作,有什么黑科技嗎? 本章節為相機原理和實現的補充內容,支持鼠標放縮時以鼠標點為中心進行放縮。 對應視頻課程已上線,歡迎觀看和支持~ https:…

??XAMPP安全升級指南:修復CVE-2024-4577漏洞,從PHP 8.2.12升級至PHP 8.4.10??

??1. 背景與漏洞概述?? 近期,PHP官方披露了一個高危漏洞 ??CVE-2024-4577??,該漏洞影響PHP 8.2.x及更早版本,可能導致遠程代碼執行(RCE)或信息泄露。由于XAMPP默認捆綁的PHP版本(如8.2.12)可能受此漏洞影響,建議用戶盡快升級至最新的??PHP 8.4.10??(或官…

ES 壓縮包安裝

以下是 Elasticsearch (ES) 通過 .tar.gz 壓縮包安裝的詳細步驟(適用于 Linux/macOS 系統): 1. 準備工作 1.1 檢查系統依賴 Java 環境:ES 需要 JDK,推薦 OpenJDK 11/17(ES 7.x/8.x 兼容版本)。…

RoboRefer:面向機器人視覺-語言模型推理的空間參考

25年6月來自北航、北大和北京智源的論文“RoboRefer: Towards Spatial Referring with Reasoning in Vision-Language Models for Robotics”。 空間參考是實體機器人與三維物理世界交互的基本能力。然而,即使有了強大的預訓練視覺-語言模型 (VLM),近期方…

【Unity】MiniGame編輯器小游戲(十)連連看【Link】

更新日期:2025年7月9日。 項目源碼:獲取項目源碼 索引 連連看【Link】一、游戲最終效果二、玩法簡介三、正式開始1.定義游戲窗口類2.規劃游戲窗口、視口區域3.方塊 Block①.定義方塊類②.生成方塊所有類型③.生成連連看棋盤④.繪制方塊陣列4.連線 Line①.點擊方塊連線②.嘗試…

Enable ADB Debugging Before Connect

If you don’t enable Developer Options and turn on USB Debugging before plugging in the cable, adb devices won’t detect the phone because the Android system doesn’t trust the connection yet. Here’s what you need to do step-by-step to fix this:? 1. Enab…

從互聯網電腦遷移Dify到內網部署Dify方法記錄

一、在互聯網電腦上準備遷移文件1. 保存 Docker 鏡像# 獲取所有 Dify 相關鏡像(根據實際容器名調整) docker ps --filter "namedify" --format "{{.Image}}" | sort -u > dify-images.list# 保存鏡像為 .tar 文件 docker save $(…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(一)

MatSwap: Light-aware material transfers in images介紹任務:輸入一張拍攝圖像、示例材質紋理圖像(這里跟BRDF無關,通常我們講到材質一般指的是SVBRDF,但是這里的材質指的只是紋理)、用戶為拍攝圖像指定的遮罩區域&am…

餓了么el-upload上傳組件報錯:TypeError: ***.upload.addEventListener is not a function

在本地上傳沒有報這個錯誤,部署到服務器后會報這個錯誤,一開始以為是服務器配置等什么原因,但是一想這個報錯應該還是在前端,接口都還沒請求,不可能到后臺去,后面搜了好幾個AI也沒有找到想要的答案或解決方…

淘寶直播與開源鏈動2+1模式AI智能名片S2B2C商城小程序的融合發展研究

摘要:本文聚焦于淘寶直播這一以“網紅”內容為主的社交電商平臺,深入分析其特點與流量入口優勢。同時,引入開源鏈動21模式AI智能名片S2B2C商城小程序這一新興概念,探討二者融合的可能性與潛在價值。通過分析融合過程中的技術、市場…

【macos用鏡像站體驗】Claude Code入門使用教程和常用命令

一、下載安裝nodejs # macOS 用戶安裝nodejs brew update brew install node二、安裝官方Claude Code # 安裝 Claude Code npm install -g anthropic-ai/claude-code # 查看版本 claude --version三、正式使用(國內鏡像站) 今天發現的一個鏡像站&…

算法學習筆記:11.冒泡排序——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

在排序算法的大家族中,冒泡排序是最基礎也最經典的算法之一。它的核心思想簡單易懂,通過重復地走訪待排序序列,一次比較兩個相鄰的元素,若它們的順序錯誤就把它們交換過來,直到沒有需要交換的元素為止。雖然冒泡排序的…