windev20中文版呼叫zxing 。net dll來識別圖片裡多個條碼
windev20中文版裡有識別qr二維碼的內建函式,但是沒有識別條碼的函式,正好zxing現在有。net的介面
參考這批文字的c#寫法 Barcode識別:如何應對多條形碼和複雜場景_yushulx的專欄-程式設計師八零_多條形碼識別 - 程式設計師八零 (cxy80.com)
先去下載dll 在NuGet Gallery | ZXing.Net 0.16.8 下載安裝包,安裝包字尾是nupkg,可以改成zip 解壓出,net2.0的dll,然後在windev工程裡新增。net程式集
新增System.Drawing與zxing
參考c#語句,用GenericMultipleBarcodeReader 來識別多個條碼
Bitmap barcodeBitmap = (Bitmap)Image.FromFile(file); ZXing.MultiFormatReader multiFormatReader = new ZXing.MultiFormatReader(); ZXing.Multi.GenericMultipleBarcodeReader multiBarcodeReader = new ZXing.Multi.GenericMultipleBarcodeReader(multiFormatReader); LuminanceSource source = new BitmapLuminanceSource(bitmap); ZXing.BinaryBitmap bBitmap= new ZXing.BinaryBitmap(new HybridBinarizer(source)); ZXing.Result[] zResults=multiBarcodeReader.decodeMultiple(bBitmap);
windev實際是用反射在執行dll函式
重複區域刪除全部(重複區域_識別結果)//重置looper
圖片路徑 是字串型 = 檔案圖片選擇器("C:\Directories","File.bmp","Select an image")
圖片_無名稱1 = 圖片路徑
物件2 是 Bitmap(圖片路徑)//圖片路徑做引數例項化bitmap物件
物件3 是 BitmapLuminanceSource(物件2)
物件4 是 HybridBinarizer(物件3)
物件5 是 BinaryBitmap(物件4) //最後形成BinaryBitmap物件例項
多條碼閱讀器 是 MultiFormatReader
通用多條碼閱讀器 是 GenericMultipleBarcodeReader(多條碼閱讀器)
如果 變數型別(通用多條碼閱讀器.decodeMultiple(物件5)) 不等於 WL.四位元組整數型 那麼//返回數字是無法識別報錯
對於通用多條碼閱讀器.decodeMultiple(物件5) 中的每個 項
重複區域新增行(重複區域_識別結果,項.Text)
結束
否則
錯誤(“無法識別”)
結束
實際識別效果一般 5.87 ZZm:/ 使用zXing.net庫來識別圖片裡多個條碼 https://v.douyin.com/NhSoWrm/ 複製此連結,開啟Dou音搜尋,直接觀看視訊!
工程原始碼
連結:https://pan.baidu.com/s/1Fe6s3jPgTu-Gn9E8ZZ1buA
提取碼:1243