有时候,我们不确定数据源图片中到底有多少个条码,这些条码有可能是同一个类型的,也可能是不同类型的,如何在C#,vb等.NET平台语言里实现快速准确读取呢?答案是使用SharpBarcode!
SharpBarcode是C#快速高效、准确的条形码,线性条码,QR二维码的读取和生成类库。接口调用简单,文档齐全。

初识SharpBarcode

您可以点击下面的链接了解更多信息:
1、SharpBarcode简介
2、一张图看懂SharpBarcode

读取任意个条码

从上面的两篇文章中,相信您已经大概了解了该类库。那么如何实现读取条码呢?对!就是BarcodeReadEngine的静态方法!

设置授权码

在您调用SharpBarcode的方法之前,必须先设置授权,如果是试用版,直接传入Test即可。

1
2
//设置授权码
KeyMgr.SetKey("Test");

调用BarcodeReadEngine的静态方法读取

我们可以打开SharpBarcode的API帮助文档,可以看到很多SharpBarcode的静态方法。虽然方法有很多,理解起来却很容易,因为他们按照读取的条码个数不同区分,或者是按照数据源的不同来区分。
通过名字就可以一眼看出具体的功能,我们可以根据项目中的实际情况来调用合适的方法。

//识别出给定图片的多个条码,返回一个数组
BarcodeResult[] resultArr = BarcodeReadEngine.ReadAllBarcodes(pictureBox1.Image, BarcodeEncoding.All, BarcodeRotationCorrectionEnum.High, BarcodeImageCorrectionEnum.MediumCleanPixels); ;

//显示每一个识别到的barcode,以及总共识别出多少个barcode
if(resultArr != null && resultArr.Length > 0)
{
    label32.Text = string.Format("类型:{0},值:{1}",resultArr[0].BarcodeType, resultArr[0].Text);
    label1.Text = string.Format("类型:{0},值:{1}", resultArr[1].BarcodeType, resultArr[1].Text);
    label3.Text = string.Format("类型:{0},值:{1}", resultArr[2].BarcodeType, resultArr[2].Text);

    //显示识别到的barcode个数
    label6.Text = resultArr.Length.ToString();
}
else
{
    label6.Text = "0";
}

程序运行结果如下图:

下载示例源码

点击下载源码