最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#代碼實現(xiàn)掃描圖片中的條形碼

 更新時間:2026年05月21日 14:16:40   作者:咕白m625  
在實際業(yè)務系統(tǒng)中,條碼的識別需求隨處可見,本文將介紹如何在?.NET?項目中通過?C#?實現(xiàn)一維條碼掃描,涵蓋從圖片文件、內(nèi)存流中讀取條碼,獲取條碼位置信息等實用示例,希望對大家有所幫助

在實際業(yè)務系統(tǒng)中,條碼的識別需求隨處可見——從倉儲物流的包裹追蹤、零售業(yè)的商品掃碼,到票務系統(tǒng)的票據(jù)驗證、醫(yī)療行業(yè)的樣本追溯,都離不開對條碼圖片的自動化解析。

本文將介紹如何在 .NET 項目中通過 C# 實現(xiàn)一維條碼掃描,涵蓋從圖片文件、內(nèi)存流中讀取條碼,獲取條碼位置信息等實用示例。

注意:本文使用的免費庫 FreeSpire.Barcode 不支持二維碼(QR Code、Data Matrix 等)的掃描。

一、環(huán)境配置與依賴安裝

首先需要創(chuàng)建一個 .NET 項目。無論是控制臺應用還是桌面程序均可。

通過 NuGet 包管理器安裝依賴庫:

Install-Package FreeSpire.Barcode

或在 .NET CLI 中執(zhí)行:

dotnet add package FreeSpire.Barcode

安裝完成后,在代碼文件中引入命名空間:

using Spire.Barcode;

二、核心 API 說明

條碼掃描主要由 BarcodeScanner 類提供,其中包含以下常用方法:

方法說明
Scan(string path)從圖片文件中掃描所有條碼
Scan(Stream stream)從數(shù)據(jù)流中掃描所有條碼
Scan(Bitmap bitmap)從位圖對象中掃描所有條碼
ScanOne(...)快速掃描單一條碼(適用于圖像中只包含一個條碼的場景)
ScanInfo(...)掃描并獲取條碼類型、位置坐標等詳細信息

所有 ScanScanInfo 方法均提供了帶 BarCodeType 參數(shù)的重載版本,可指定只識別特定類型的一維條碼(如 Code128、EAN-13 等),從而提高識別效率。

三、從圖片文件掃描條碼

3.1 掃描單張圖片中的條碼

最簡單的場景是掃描一張圖片中已存在的條碼。以下示例演示如何從圖片文件中讀取 Code128 條碼的內(nèi)容:

using Spire.Barcode;

class Program
{
    static void Main(string[] args)
    {
        // 指定圖片路徑
        string imagePath = @"C:\barcode-sample.png";

        // 掃描圖片中的條碼,僅識別 Code128 類型
        string[] results = BarcodeScanner.Scan(imagePath, BarCodeType.Code128);

        // 輸出識別結(jié)果
        if (results.Length > 0)
        {
            foreach (string result in results)
            {
                Console.WriteLine("識別到條碼內(nèi)容: " + result);
            }
        }
        else
        {
            Console.WriteLine("未識別到任何條碼。");
        }
    }
}

Scan() 方法返回一個字符串數(shù)組,能夠處理一張圖片中包含多個條碼的情形。若圖片中恰好只有一個條碼,也可使用 ScanOne() 方法直接返回字符串結(jié)果:

string result = BarcodeScanner.ScanOne(imagePath, BarCodeType.Code128);

3.2 掃描多種條碼類型

在實際業(yè)務中,圖片可能包含不同類型的一維條碼(如 Code 128、EAN-13 混合出現(xiàn))。若不確定條碼類型,可直接調(diào)用不指定類型的方法重載:

string[] results = BarcodeScanner.Scan(imagePath);

四、從數(shù)據(jù)流掃描條碼

在 Web 應用或微服務架構(gòu)中,用戶上傳的圖片通常以數(shù)據(jù)流(Stream)的形式存在,無需寫入磁盤即可直接處理。這種方式可以減少 I/O 開銷,提升響應速度,也更適合云端部署環(huán)境。

using System;
using System.IO;
using Spire.Barcode;

namespace BarcodeScanDemo
{
    class StreamScan
    {
        static void Main(string[] args)
        {
            string imagePath = @"C:\Barcode\stream_barcode.jpg";
            
            // 1. 將圖片轉(zhuǎn)換為內(nèi)存流(適配上傳流、網(wǎng)絡流直接使用)
            using (FileStream fs = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
            using (MemoryStream ms = new MemoryStream())
            {
                fs.CopyTo(ms);
                // 流指針復位(關鍵:必須將流位置重置到起始位置)
                ms.Position = 0;

                // 2. 從內(nèi)存流中掃描條碼(自動檢測類型)
                string[] results = BarcodeScanner.Scan(ms);

                // 輸出結(jié)果
                if (results != null && results.Length > 0)
                {
                    Console.WriteLine("流數(shù)據(jù)條碼識別結(jié)果:" + results[0]);
                }
            }
        }
    }
}

除了 Stream 輸入外,Scan() 方法還支持直接從 Bitmap 對象進行掃描,方便與現(xiàn)有的圖像處理流程進行集成。

五、知識擴展

在 C# 中識別圖片里的條形碼,有多種方案可選。選擇哪種,主要取決于項目的預算、性能和功能需求。

1.免費開源方案:ZXing.NET

對于絕大多數(shù)開發(fā)者而言,這通常是首選。它不僅免費,功能也足夠強大。

安裝:在 NuGet 包管理器控制臺中執(zhí)行:

Install-Package ZXing.Net

從圖片文件識別:這是最基礎的功能,只需幾行代碼即可完成。

using ZXing;
public string ScanBarcodeFromFile(string imagePath)
{
    // 初始化BarcodeReader
    var reader = new BarcodeReader();
    // 從圖片文件中解碼
    var result = reader.Decode(imagePath);
    // 輸出識別結(jié)果
    if (result != null)
    {
        Console.WriteLine($"識別成功!類型: {result.BarcodeFormat}, 內(nèi)容: {result.Text}");
        return result.Text;
    }
    else
    {
        Console.WriteLine("未識別到條形碼。");
        return null;
    }
}

從內(nèi)存中的 Bitmap 識別:如果你的圖片是以 Bitmap 對象的形式存在于內(nèi)存中,同樣可以輕松識別。

using System.Drawing;
using ZXing;
public string ScanBarcodeFromBitmap(Bitmap bitmap)
{
    var reader = new BarcodeReader();
    var result = reader.Decode(bitmap);
    return result?.Text;
}

識別圖片中的多個條碼:ZXing 也支持一次識別圖片中的多個條碼。

using ZXing;
using ZXing.Common;
using System.Drawing;
public List<string> ScanMultipleBarcodes(Bitmap bitmap)
{
    var reader = new BarcodeReader();
    // 解碼多個條碼
    var results = reader.DecodeMultiple(bitmap);
    if (results != null && results.Length > 0)
    {
        return results.Select(r => r.Text).ToList();
    }
    return null;
}

處理中文內(nèi)容:如果條碼內(nèi)容是中文,識別可能出現(xiàn)亂碼,可以強制指定字符編碼來解決。

var reader = new BarcodeReader
{
    Options = new DecodingOptions
    {
        CharacterSet = "UTF-8"  // 針對中文內(nèi)容設置
    }
};

2. 商用方案:簡單高效

對于有預算的企業(yè)級應用,商用庫能提供更便捷的API、更全面的技術支持以及更復雜的條碼識別能力。

IronBarcode

特點:API 設計極為簡潔,甚至只需一行代碼即可完成識別。它還提供了調(diào)試視圖,方便開發(fā)時定位問題。

安裝

Install-Package BarCode

代碼示例

using IronBarCode;
public string ScanBarcodeWithIron(string imagePath)
{
    // 一行代碼識別條碼
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}

Aspose.BarCode

特點:功能全面的專業(yè)級庫,提供精細的配置選項,適合對識別速度和準確性要求極高的場景。

安裝

Install-Package Aspose.BarCode

代碼示例

using Aspose.BarCode.BarCodeRecognition;
public string ScanBarcodeWithAspose(string imagePath)
{
    using (BarCodeReader reader = new BarCodeReader(imagePath, DecodeType.AllSupportedTypes))
    {
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine($"Code Type: {result.CodeType}, Code Text: {result.CodeText}");
            return result.CodeText;
        }
    }
    return null;
}

六、總結(jié)

本文介紹了如何在 .NET 項目中通過 C# 實現(xiàn)一維條碼掃描,涵蓋了從基礎安裝配置、單張圖片掃描、數(shù)據(jù)流處理、多碼識別到性能優(yōu)化等各個環(huán)節(jié)。主要要點總結(jié)如下:

  • BarcodeScanner.Scan()ScanOne() 是條碼識別的核心方法,支持圖片文件、Stream 流和 Bitmap 對象三種輸入方式
  • ScanInfo() 可獲取條碼類型和位置坐標,便于實現(xiàn)區(qū)域標注或數(shù)據(jù)分析
  • Web 應用中推薦使用內(nèi)存流直接處理上傳圖片,避免磁盤 I/O 開銷
  • 條碼識別率受圖片質(zhì)量影響較大,需關注靜區(qū)、分辨率和清晰度
  • 通過指定條碼類型、縮小圖片尺寸等方法可有效提升掃描速度

條碼識別作為自動化數(shù)據(jù)處理的基礎環(huán)節(jié),其穩(wěn)定性和準確度直接影響業(yè)務流程的效率。掌握上述技術要點后,開發(fā)者可以根據(jù)實際需求靈活構(gòu)建適用于自身場景的一維條碼掃描解決方案。

到此這篇關于C#代碼實現(xiàn)掃描圖片中的條形碼的文章就介紹到這了,更多相關C#掃描圖片條形碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#通過JObject解析json對象

    C#通過JObject解析json對象

    這篇文章介紹了C#通過JObject解析json對象的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C# FileStream復制大文件

    C# FileStream復制大文件

    這篇文章主要為大家詳細介紹了C# FileStream復制大文件的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • c#圖片添加水印的實例代碼

    c#圖片添加水印的實例代碼

    這篇文章介紹了c#圖片添加水印的實例代碼,有需要的朋友可以參考一下
    2013-07-07
  • c# 實現(xiàn)輪詢算法實例代碼

    c# 實現(xiàn)輪詢算法實例代碼

    這篇文章主要介紹了c# 實現(xiàn)輪詢算法實例代碼的相關資料,這里附有實例代碼,具有一定的參考價值,需要的朋友可以參考下
    2016-12-12
  • C# 中的 LINQ語法和類型(兩種語法)

    C# 中的 LINQ語法和類型(兩種語法)

    LINQ 允許開發(fā)人員直接在 C# 代碼中編寫查詢,從而更輕松地操作和轉(zhuǎn)換數(shù)據(jù),這篇文章主要介紹了C# 中的 LINQ:語法和類型,需要的朋友可以參考下
    2024-06-06
  • C#實現(xiàn)簡單超市收銀系統(tǒng)

    C#實現(xiàn)簡單超市收銀系統(tǒng)

    這篇文章主要為大家詳細介紹了C#實現(xiàn)簡單超市收銀系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 新手必看Unity2019 2020保姆級安裝教程

    新手必看Unity2019 2020保姆級安裝教程

    這篇文章主要介紹了Unity2019 2020安裝教程,本文分步驟通過圖文并茂的形式給大家介紹Unity2019 2020安裝方法,需要的朋友可以參考下
    2021-05-05
  • C# 獲取當前總毫秒數(shù)的實例講解

    C# 獲取當前總毫秒數(shù)的實例講解

    這篇文章主要介紹了C# 獲取當前總毫秒數(shù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 解決C#中取消方向鍵對控件焦點控制的實現(xiàn)方法

    解決C#中取消方向鍵對控件焦點控制的實現(xiàn)方法

    本篇文章是對C#中取消方向鍵對控件焦點控制的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • wpf實現(xiàn)超低延遲的RTMP或RTSP播放

    wpf實現(xiàn)超低延遲的RTMP或RTSP播放

    這篇文章主要為大家詳細介紹了wpf如何實現(xiàn)超低延遲的RTMP或RTSP播放,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04

最新評論

土默特左旗| 嘉黎县| 兴山县| 大城县| 翁源县| 静宁县| 阿城市| 兴业县| 邻水| 米易县| 天峨县| 日照市| 平潭县| 满洲里市| 宽城| 潞西市| 浦东新区| 建阳市| 高台县| 郎溪县| 台北县| 济宁市| 通江县| 西乌珠穆沁旗| 泗阳县| 临泉县| 眉山市| 临澧县| 旬阳县| 富顺县| 剑河县| 博客| 锡林郭勒盟| 五家渠市| 曲阜市| 吴川市| 崇信县| 中卫市| 普洱| 沙河市| 天津市|