条形码类型介绍以及如何使用LEADTOOLS Barcodes
条码的类型非常多,选择合适的条形码对于成功的软件是必不可少的。从大的分类来看,条形码分为:一维(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相关推荐
- 智能合约语言Solidity 类型介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity 类型介绍11 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合 ...
- MySQL复制类型介绍
MySQL复制类型介绍: (1)同步复制:MASTER提交事务,直到事务在所有的Slave都已提交,此时,才会返回给客户端,事务执行完毕. 缺点:完成一个事务可能会有很大的延迟. slave1 MAs ...
- nginx虚拟主机概念和类型介绍
nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服 ...
- 计算机内存与内置类型,笔记本内存种类有哪些 笔记本常见内存类型介绍
此前经常有电脑小白咨询我"128GB内存够不够"之类的问题,很明显这是将内存和硬盘搞混了.如果你也分不清内存和硬盘,那么很有必要看下去.本文主要介绍目前笔记本中常见的内存类型,并且 ...
- FPGA原语类型介绍
1.1 FPGA原语类型介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA原语类型介绍: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至千里 ...
- 对象存储 OSS > 开发指南 > 存储类型 > 存储类型介绍
存储类型介绍 更新时间:2020-09-18 14:56:19 编辑我的收藏 本页目录 标准存储(Standard) 低频访问(Infrequent Access) 归档存储(Archive) 冷归档 ...
- 4.2 char类型介绍
C语言学习栏目目录 目录 4.1 int类型介绍 4.2 char类型介绍 4.3 float.double类型介绍 4.4 小结及其他数据类型简单介绍 4.5 类型大小 char类型用于储存字符(如 ...
- 4.1 int类型介绍
C语言学习栏目目录 目录 4.1 int类型介绍 4.2 char类型介绍 4.3 float.double类型介绍 4.4 小结及其他数据类型简单介绍 4.5 类型大小 C语言提供了许多整数类型,为 ...
- Spring 中的Advice类型介绍
Spring 中的 Advice 类型介绍 翻译原文链接 Introduction to Advice Types in Spring 1. 概述 在本文中,我们将讨论可以在 Spring 中创建的不 ...
最新文章
- 为什么集群要奇数_面试系列 redis数据删除amp;集群
- python 匿名函数捕获变量值 (执行时的值)
- Quartus II与 ModelSim功能仿真与后仿真扫盲(转)
- LeetCode-best time to buy and sell stock 1 数组
- 【转】LAMP网站架构方案分析【精辟】
- 请编写程序编写前n个整数的全排列_26道基础算法题(请查收)
- 信息学奥赛一本通 1018:其他数据类型存储空间大小 | OpenJudge NOI 1.2 03
- ICallbackEventHandler不支持二次回调的问题
- java实现学生财务管理_基于jsp的学生社团财务管理-JavaEE实现学生社团财务管理 - java项目源码...
- 安卓nfs网络文件服务器,Linux网络文件服务器 NFS
- Python中Socket粘包问题的解决
- OAuth: How and Why?
- lldp协议代码阅读_LLDPD协议验证过程记录
- React 入门实例教程
- java list移除所有元素_Java - List集合中如何删除多个元素? remove( )方法 ?
- html dd标签隐藏,HTML dl dt dd 标签
- 常用的RGB值和颜色对照表
- 一种改进的教与学优化算法
- 关闭mac开机当的一声的终极方法
- 关于在Opengl中先平移后旋转和先旋转后平移的效果不一样的原因
热门文章
- 自然语言菜鸟学习笔记(二)
- python打开手机网页_Python selenium 用chrome的Mobile emulation模拟手机浏览器测试手机网页...
- LiveGBS流媒体平台GB/T28181功能-大屏展示智能码流支持码流清晰度切换取低码率直播流
- 广东企业电子申报管理系统——官方软件下载
- 产品设计(1) – 产品需求文档(PRD)介绍
- 华硕好屏性能如何?华硕OLED笔记本电脑灵耀Pro16彰显真本色
- 微信push服务器,GitHub - brucx/mp-push-nestjs: 微信公众号消息推送服务,类似“server酱”,提供Docker镜像部署...
- 这是长新冠,还是我老了?浙江出国抢订单又抢CTO;脉脉发布人才迁徙报告;元宇宙产业生态图谱;GitHub今日热榜 | ShowMeAI资讯日报
- 数据统计图表显示功能
- 在C++中如何实现文件的读写