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

C#使用ZXing.Net實現(xiàn)識別二維碼和條碼

 更新時間:2024年01月02日 08:36:56   作者:rjcql  
ZXing用Java實現(xiàn)的多種格式的一維二維條碼圖像處理庫,而ZXing.Net是其.Net版本的實現(xiàn),本文主要為大家詳細介紹了如何使用ZXing.Net實現(xiàn)識別二維碼和條碼,需要的可以參考下

寫在前面

上一篇寫了 C# 使用ZXing.Net生成二維碼和條碼

使用ZXing.Net解碼非常簡單,事實上就只用一行代碼就好了,這么簡單那為什么還要貼在這里呢,原因是開始時,在網(wǎng)上看資料看到一篇文章,稀里嘩啦寫了一堆代碼,然后拿來運行一下,竟然還得不到預期的結(jié)果;看了下用了最復雜的方式,調(diào)用了參數(shù)最多的重載函數(shù),問題卻沒有解決,所以在網(wǎng)上查找資料,鑒別成本有時候是很高的;大部分的代碼拷來拷去,完全不做驗證,實在是浪費時間;最簡單有效的辦法還是盡量往信息的源頭去追溯,比如官網(wǎng)文檔、GitHub上的源碼介紹、業(yè)內(nèi)大牛的文章等。最好還是自己把代碼跑一遍,不僅可以確認也能加深印象,下次碰到同類問題或許拿來就用了,效率就是這么提升的。

官網(wǎng): GitHub - micjahn/ZXing.Net: .Net port of the original java-based barcode reader and generator library zxing 

代碼實現(xiàn)

    var reader = new BarcodeReader();
    var result = reader.Decode((Bitmap)pictureBox1.Image);
    if (result != null)
    {
        lblMessage.Text = result.Text;
    }
    else
    {
        lblMessage.Text = "None";
    }

反面教材原代碼如下:

// create a barcode reader instance
IBarcodeReader reader = new BarcodeReader();  
// 加載圖片文件
Bitmap image = new Bitmap("D:\\PrideJoy\\Zxing.Demo\\Zxing.demo\\bin\\Debug\\net7.0\\qr-image.jpg");
 
// 獲取rawRGB數(shù)據(jù)
Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
System.Drawing.Imaging.BitmapData bmpData = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, image.PixelFormat);
IntPtr ptr = bmpData.Scan0;
int bytes = Math.Abs(bmpData.Stride) * image.Height;
byte[] rawRGB = new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, rawRGB, 0, bytes);
image.UnlockBits(bmpData);
 
// 獲取格式(format)
RGBLuminanceSource.BitmapFormat format;
switch (image.PixelFormat)
{
    case System.Drawing.Imaging.PixelFormat.Format8bppIndexed:
        format = RGBLuminanceSource.BitmapFormat.Gray8;
        break;
    case System.Drawing.Imaging.PixelFormat.Format16bppGrayScale:
        format = RGBLuminanceSource.BitmapFormat.Gray16;
        break;
    case System.Drawing.Imaging.PixelFormat.Format24bppRgb:
        format = RGBLuminanceSource.BitmapFormat.RGB24;
        break;
    case System.Drawing.Imaging.PixelFormat.Format32bppRgb:
        format = RGBLuminanceSource.BitmapFormat.RGB32;
        break;
    case System.Drawing.Imaging.PixelFormat.Format32bppArgb:
        format = RGBLuminanceSource.BitmapFormat.ARGB32;
        break;
    // 其他格式的處理
    default:
        format = RGBLuminanceSource.BitmapFormat.Unknown;
        break;
}
 
// 獲取寬度(width)和高度(height)
int width = image.Width;
int height = image.Height;
var result = reader.Decode(rawRGB,width,height, format);
// do something with the result
if (result != null)
{
    Console.WriteLine("內(nèi)容為:"+result.Text);
}

調(diào)用示例

到此這篇關(guān)于C#使用ZXing.Net實現(xiàn)識別二維碼和條碼的文章就介紹到這了,更多相關(guān)C#識別二維碼和條碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Unity中的ShaderGraph入門使用教程

    詳解Unity中的ShaderGraph入門使用教程

    Unity2018版本之后推出了一個可編程渲染管線工具ShaderGraph,讓我們可以通過可視化界面拖拽來實現(xiàn)著色器的創(chuàng)建和編輯,今天重點給大家介紹Unity中的ShaderGraph入門使用教程,需要的朋友參考下吧
    2021-07-07
  • C#使用Data?Annotations進行手動數(shù)據(jù)驗證

    C#使用Data?Annotations進行手動數(shù)據(jù)驗證

    這篇文章介紹了C#使用Data?Annotations進行手動數(shù)據(jù)驗證的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#利用Refit實現(xiàn)JWT自動續(xù)期詳解

    C#利用Refit實現(xiàn)JWT自動續(xù)期詳解

    Refit?是一個受到Square的Retrofit庫(Java)啟發(fā)的自動類型安全REST庫,這篇文章主要為大家介紹了C#如何利用Refit實現(xiàn)JWT自動續(xù)期,感興趣的可以了解下
    2023-08-08
  • WCF分布式開發(fā)之MSMQ消息隊列

    WCF分布式開發(fā)之MSMQ消息隊列

    這篇文章介紹了WCF分布式開發(fā)之MSMQ消息隊列,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#中的除法運算符與VB.NET中的除法運算符

    C#中的除法運算符與VB.NET中的除法運算符

    這篇文章主要介紹了C#中的除法運算符與VB.NET中的除法運算符,需要的朋友可以參考下
    2014-10-10
  • C#備忘錄模式(Memento Pattern)實例教程

    C#備忘錄模式(Memento Pattern)實例教程

    這篇文章主要介紹了C#備忘錄模式(Memento Pattern),以一個支持回退操作的例子講述了C#備忘模式的實現(xiàn)方法,需要的朋友可以參考下
    2014-09-09
  • C#實現(xiàn)獲取文件夾大小的方法

    C#實現(xiàn)獲取文件夾大小的方法

    這篇文章主要介紹了C#實現(xiàn)獲取文件夾大小的方法,實例分析了兩種獲取方法,涉及C#針對文件夾操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • .NET?Core使用C#掃描并讀取圖片中的文字

    .NET?Core使用C#掃描并讀取圖片中的文字

    本文詳細講解了.NET?Core使用C#掃描并讀取圖片中的文字,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • C# 泛型的約束

    C# 泛型的約束

    本文將詳細介紹C# 泛型的約束:引用類型約束;值類型約束;構(gòu)造函數(shù)類型約束;轉(zhuǎn)換類型約束;組合約束的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 解決用Aspose.Words,在word文檔中創(chuàng)建表格的實現(xiàn)方法

    解決用Aspose.Words,在word文檔中創(chuàng)建表格的實現(xiàn)方法

    本篇文章是對利用Aspose.Words,在word文檔中創(chuàng)建表格的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

清水河县| 务川| 娱乐| 崇仁县| 乌审旗| 巫山县| 阆中市| 贞丰县| 高陵县| 湖北省| 民勤县| 台东县| 沽源县| 温宿县| 江源县| 托里县| 同心县| 兰州市| 尖扎县| 社旗县| 南通市| 延庆县| 平乐县| 垦利县| 洛隆县| 西青区| 竹溪县| 鹤庆县| 无极县| 武城县| 城市| 东山县| 顺平县| 嘉兴市| 县级市| 密山市| 吉首市| 精河县| 上高县| 红河县| 西充县|