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

 

posted @ 2022-03-14 20:28  kyo413  阅读(533)  评论(1编辑  收藏  举报