微信公众号“dotNET跨平台”的文章《.NET 使用 ZXing.Net 生成二维码,并识别》中介绍了使用ZXing.Net库创建并识别条形码的方式,该库除了能生成二维码、PDF 417、EAN、UPC、Aztec等条形码外,还能从图片中识别条形码内容,本文学习并测试C#调用ZXing.Net识别图片中的条形码的基本用法。
创建Winform项目,在Nuget包管理器中搜索并安装ZXing.Net包,根据ZXing.Net的GitHub网址(参考文献2)的说明,.Net5及以上版本的项目还需要安装额外的图片库ZXing.Bindings,因此项目中还安装了ZXing.Net.Bindings.Windows.Compatibility包。
主要使用BarcodeReader类从图片中识别条形码,如果没有安装ZXing.Net.Bindings.Windows. Compatibility包,则ZXing命名空间中仅包括一个BarcodeReader泛型类,与参考文献1中的用法差别较大。
安装ZXing.Net.Bindings.Windows.Compatibility包后,会在ZXing.Windows.Compatibility命名空间下存在同名的BarcodeReader类,该类继承BarcodeReader和IBarcodeReader接口,用于从图片中获取条形码:
BarcodeReader类中的Decode函数返回识别的第一个条形码结果,DecodeMultiple函数返回识别的所有条形码结果集合,返回类型为Result类型,该类的主要属性如下图所示,其中Text为条形码内容,ResultPoints属性返回条形码位置(一维码返回两个坐标,二维码返回四个坐标),BarcodeFormat返回条形码的编码格式。
最后是测试程序运行效果(测试图片来自参考文献1及百度图片),
参考文献:
[1]https://www.cnblogs.com/netcore5/p/17746520.html
[2]https://github.com/micjahn/ZXing.Net/