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

条形码类型:

Code 128

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

Code 39 (Code 3 of 9)

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

UPC / EAN

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

QR Code

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

PDF417

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

Data Matrix

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

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 模块有更快的条形码识别速度。这就减少了高速扫描应用程序时的瓶颈问题。

条形码类型介绍以及如何使用LEADTOOLS Barcodes相关推荐

  1. 智能合约语言Solidity 类型介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity 类型介绍11 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合 ...

  2. MySQL复制类型介绍

    MySQL复制类型介绍: (1)同步复制:MASTER提交事务,直到事务在所有的Slave都已提交,此时,才会返回给客户端,事务执行完毕. 缺点:完成一个事务可能会有很大的延迟. slave1 MAs ...

  3. nginx虚拟主机概念和类型介绍

    nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服 ...

  4. 计算机内存与内置类型,笔记本内存种类有哪些 笔记本常见内存类型介绍

    此前经常有电脑小白咨询我"128GB内存够不够"之类的问题,很明显这是将内存和硬盘搞混了.如果你也分不清内存和硬盘,那么很有必要看下去.本文主要介绍目前笔记本中常见的内存类型,并且 ...

  5. FPGA原语类型介绍

    1.1 FPGA原语类型介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA原语类型介绍: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至千里 ...

  6. 对象存储 OSS > 开发指南 > 存储类型 > 存储类型介绍

    存储类型介绍 更新时间:2020-09-18 14:56:19 编辑我的收藏 本页目录 标准存储(Standard) 低频访问(Infrequent Access) 归档存储(Archive) 冷归档 ...

  7. 4.2 char类型介绍

    C语言学习栏目目录 目录 4.1 int类型介绍 4.2 char类型介绍 4.3 float.double类型介绍 4.4 小结及其他数据类型简单介绍 4.5 类型大小 char类型用于储存字符(如 ...

  8. 4.1 int类型介绍

    C语言学习栏目目录 目录 4.1 int类型介绍 4.2 char类型介绍 4.3 float.double类型介绍 4.4 小结及其他数据类型简单介绍 4.5 类型大小 C语言提供了许多整数类型,为 ...

  9. Spring 中的Advice类型介绍

    Spring 中的 Advice 类型介绍 翻译原文链接 Introduction to Advice Types in Spring 1. 概述 在本文中,我们将讨论可以在 Spring 中创建的不 ...

最新文章

  1. 为什么集群要奇数_面试系列 redis数据删除amp;集群
  2. python 匿名函数捕获变量值 (执行时的值)
  3. Quartus II与 ModelSim功能仿真与后仿真扫盲(转)
  4. LeetCode-best time to buy and sell stock 1 数组
  5. 【转】LAMP网站架构方案分析【精辟】
  6. 请编写程序编写前n个整数的全排列_26道基础算法题(请查收)
  7. 信息学奥赛一本通 1018:其他数据类型存储空间大小 | OpenJudge NOI 1.2 03
  8. ICallbackEventHandler不支持二次回调的问题
  9. java实现学生财务管理_基于jsp的学生社团财务管理-JavaEE实现学生社团财务管理 - java项目源码...
  10. 安卓nfs网络文件服务器,Linux网络文件服务器 NFS
  11. Python中Socket粘包问题的解决
  12. OAuth: How and Why?
  13. lldp协议代码阅读_LLDPD协议验证过程记录
  14. React 入门实例教程
  15. java list移除所有元素_Java - List集合中如何删除多个元素? remove( )方法 ?
  16. html dd标签隐藏,HTML dl dt dd 标签
  17. 常用的RGB值和颜色对照表
  18. 一种改进的教与学优化算法
  19. 关闭mac开机当的一声的终极方法
  20. 关于在Opengl中先平移后旋转和先旋转后平移的效果不一样的原因

热门文章

  1. 自然语言菜鸟学习笔记(二)
  2. python打开手机网页_Python selenium 用chrome的Mobile emulation模拟手机浏览器测试手机网页...
  3. LiveGBS流媒体平台GB/T28181功能-大屏展示智能码流支持码流清晰度切换取低码率直播流
  4. 广东企业电子申报管理系统——官方软件下载
  5. 产品设计(1) – 产品需求文档(PRD)介绍
  6. 华硕好屏性能如何?华硕OLED笔记本电脑灵耀Pro16彰显真本色
  7. 微信push服务器,GitHub - brucx/mp-push-nestjs: 微信公众号消息推送服务,类似“server酱”,提供Docker镜像部署...
  8. 这是长新冠,还是我老了?浙江出国抢订单又抢CTO;脉脉发布人才迁徙报告;元宇宙产业生态图谱;GitHub今日热榜 | ShowMeAI资讯日报
  9. 数据统计图表显示功能
  10. 在C++中如何实现文件的读写