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