首页 > 技术文章 > 条形码类型介绍以及如何使用LEADTOOLS Barcodes

charts 2013-12-04 10:32 原文

条码的类型非常多,选择合适的条形码对于成功的软件是必不可少的。从大的分类来看,条形码分为:一维(1D)条码和二维(2D)条码。一维(1D)条码最简单,使用最广泛,但持有的信息量比较小。二维(2D)条码由于其携带的信息量较大而日益普及。然而,选择使用一维(1D)条码或二维(2D)条码是一件非常复杂的工作。在选择条形码类型前,我们首先来了解一下当下最流行的条形码以及如何使用这些一维(1D)条形码和二维(2D)条形码。

条形码类型:

Code 128

Code 128属于一维(1D)条形码,表示从 ASCII 0 到ASCII 127 共128个字符,故称128码。其中包含了数字、字母和符号字符。CODE128条码由于其字符集大,密度高,广泛应用在企业内部管理、生产流程、物流控制、航运、包装、运输等方面的条码码制。

条形码类型介绍以及如何使用LEADTOOLS Barcodes

Code 39 (Code 3 of 9)

Code 39码与Code 128有很多相似之处,都广泛运用在企业内部管理、生产流程、物流控制系统方面。不同的在于Code 128比Code 39能表现更多的字符,单位长度里的编码密度更高。当单位长度里不能容下Code 39编码或编码字符超出了Code 39的限制时,就可选择Code 128来编码。所以Code 128比Code 39更具灵性。

条形码类型介绍以及如何使用LEADTOOLS Barcodes

UPC / EAN

UPC / EAN是使用最频繁的条形码。通用产品代码(UPC)欧洲商品编号(EAN)被广泛用于标识商品销售点零售领域。UPC和EAN主要不同之处在于,商品条码EAN 使用两位数字(00-99)和UPC使用一个(0-9)。条形码类型介绍以及如何使用LEADTOOLS Barcodes

QR Code

QR Code属于二维(2D)条形码,是目前最知名、最友好的条码。QR来自英文 “Quick Response” 的缩写,即快速反应的意思,这种二维码能够快速读取,与之前的条形码相比,QR 码能存储更丰富的信息,包括对文字、URL 地址和其他类型的数据加密。QR码的信息容量令人难以置信:数字最多7,089 字节;字母最多4,296 字节;二进位数 (8 bit) 最多2,953 字节。除了其巨大的储存能力外,QR码也是最强大、修正错误能力最强的条码之一。条形码类型介绍以及如何使用LEADTOOLS Barcodes

PDF417

PDF417是最常见的二维条码,是一种高密度、高信息含量的便携式数据文件,是实现证件及卡片等大容量、高可靠性信息自动存储、携带并可用机器自动识读的理想手段。从诞生之始就受到了国际社会的广泛关注。经过几年的努力,现已广泛地应用在国防、公共安全、交通运输、医疗保健、工业、商业、金融、海关及政府管理等领域。

条形码类型介绍以及如何使用LEADTOOLS Barcodes

Data Matrix

Data Matrix是二维条码的一种,它被称为 “数据码” 或 “数据矩阵码”。Data Matrix二维条码的最小尺寸是目前所有条码中最小的,尤其特别适用於小零件的标识,以及直接印刷在实体上。Data Matrix 可以对大量数据进行编码:3116 个字符 (仅限数字字符)、2335 个字符 (仅限字母数字字符) 及 1556 个字符(仅限二进制数据)。Data Matrix 的另一个特性是缩小了尺寸。正是因为这种特性,Data Matrix 可以刻印在液晶显示器、半导体或 IC 零件上。条形码类型介绍以及如何使用LEADTOOLS Barcodes

LEADTOOLS for Barcodes的使用

在了解并选择了条形码后,如何将她们添加到应用程序中是一件较为困难的事情。当然,一维条码可以自己编写,因为它比较简单,但是如果需要支持二维条码或者多个一维条码时,就比较复杂,最好使用专业的条码SDK。

在寻找专业的条码工具包时,选择范围是非常广的。大多数条形码具有直接的规范和标准,所以只需要选择符合您应用程序的条码SDK即可。但这只是一种理想状态,假设每个图像都非常干净,所拍摄照片的光线非常好。然而在实际应用中,图像有时候不太清晰,需要对图像做一些预处理,因此一般的条形码SDK无法达到要求。

LEADTOOLS公司拥有超过20年的图像成像技术,旗下的条形码工具包LEADTOOLS for Barcodes除了能否准确地读写条形码外,而且只需要几行代码便可完成读写,参考代码如下:

// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();

// Write a barcode to the image (UPC in this example)
BarcodeData data = new BarcodeData(BarcodeSymbology.UPCA, "01234567890");
data.Bounds = new LogicalRectangle(0, 0, 400, 200, LogicalUnit.Pixel);
engine.Writer.WriteBarcode(myImage, data, null);

// Read all barcodes with default options.
BarcodeData[] barcodes = engine.Reader.ReadBarcodes(myImage, LogicalRectangle.Empty, 0, null);

如上所示,LEADTOOLS提供了强大的条码读写功能,而且还提供了条码识别的微调选项。当已知条码类型时,你可以限制程序中所使用符号的搜索范围,因此对条码程序性能要求比较高:

// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();

// Read only PDF417 and Data Matrix barcodes
PDF417BarcodeReadOptions pdf417Options = new PDF417BarcodeReadOptions();
pdf417Options.BackColor = RasterColor.White;
pdf417Options.ForeColor = RasterColor.Black;
pdf417Options.SearchDirection = BarcodeSearchDirection.Vertical;

DatamatrixBarcodeReadOptions dataMatrixOptions = new DatamatrixBarcodeReadOptions();
dataMatrixOptions.BackColor = RasterColor.White;
dataMatrixOptions.ForeColor = RasterColor.Black;
dataMatrixOptions.EnableSmallSymbols = true;

BarcodeData[] barcodes = engine.Reader.ReadBarcodes(
myImage, LogicalRectangle.Empty, 0,
new BarcodeSymbology[] {
BarcodeSymbology.PDF417, BarcodeSymbology.Datamatrix},
new BarcodeReadOptions[] { pdf417Options, dataMatrixOptions });

结论:

LEADTOOLS for Barcodes可以帮助开发人员缩短整个软件开发过程的生命周期,提供多种条形码支持,处理现实世界的图像。而且,LEADTOOLS能提供最快的条形码识别速度。相比较于其它的商业引擎来说,LEADTOOLS Barcode SDK 模块有更快的条形码识别速度。这就减少了高速扫描应用程序时的瓶颈问题。

 

推荐阅读