一维码,二维码,zxing
什么是一维码、二维码?一维码就是商品包装盒上的条形码,例如:书本后面的条形码,在真维斯或者其他等品牌店的衣服标签上都可以看到,一维码的应用已经很广泛了;而二维码就是。。。。。。类似“马赛克”打格的图像,以图像中的黑白点数量、大小来表示0和1,因此二维码可以存储的信息远比一维码要多好多,例如火车票右下角的那个方块,别的实在想不起来了……反正现在也很多了。
技术角度介绍一维码:
条码卡以一组规则排列的条、空及其对应字符组成的条形码记载信息,常见的条码符号是由黑条和白空印刷而成,当光照射到条码符号上时,黑条和白空产生较强的对比度,从而利用条、空对光的不同反射率来识读信息。
条码卡分为一维码和二维码两种。一维码比较常用,如日常商品外包装上的条码就是一维码。它的信息存储量小,仅能存储一个代号,使用时通过这个代号调取计算机网络中的数据。二维码是近几年发展起来的,它能在有限的空间内存储更多的信息,包括文字、图象、指纹、签名等,并可脱离计算机使用。
条码卡制作简便,普通的条码按一定要求打印或复印即可,成本较低,但它的识读设备(特别是二维码的识读设备)比较昂贵。与磁卡和IC卡不同的是,条码卡内的信息不能改写,另外,安全性能差、标准也不统一,这些都限制了它的应用。
条码加载的信息是数字、字母,这些数字、字母是经过按一定标准编码的号串。
条码编码技术主要涉及条码编码规则及标准。条码编码规则是制定码制标准和对条码符号进行识别的主要依据。
目前,国际上常用码制有以下几种:
① UPC码
1973年,美国率先在国内的商业系统中应用。该码制主要用于商业系统。该码长度固定为12位。
② EAN码
1977年,欧洲经济共同体各国按照UPC码标准制定了欧洲物品编码EAN码。EAN码有两种类型:EAN-13码和EAN-8码。
③ 交叉25码
交叉25码(Interleaved 2 of 5 Code)是一种长度可变的连续自校验数字码制。
④ 39码
39码(Code 3 of 9)是长度可变的离散型自校验字母字式码制。
⑤ 库德巴码(codabar)
库德巴码是长度可变的离散型自校验数字码制。它常用于仓库、血库和航空快递包裹的管理工作中。
⑥ 128码(Code128)
128码(Code128)是一种长度可变的连续型字母数字式码制。
⑦ 中国邮政码(China Post Code)
中国邮政快件专用码。
⑧ 其它码:93码(Code 93),49码(Code 49),25码(Code 2 of 5),11码(Code 11),矩阵25码(Matrix 2 of 5
技术上的二维码:
二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。
二维码分类:
二维条码的种类很多,不同的机构开发出的二维条码具有不同的结构以及编写、读取方法。常见的二维条码有:QR码、PDF417码和DM码等。
二维码的特点:
二维条码比一维条码记载数据量更多,二维码条码是一种高密度、高信息含量的便携式数据文件,是实现证件及卡片等大容量、高可靠性信息自动存储、携带并可用机器自动识读的理想手段。而且可以记载更复杂的数据,比如图片等。
(1)、信息容量大
根据不同的条空比例每平方英寸可以容纳250到1100个字符。在国际标准的证卡有效面积上(相当于信用卡面积的2/3,约为76mm*25mm), 二维码条码可以容纳1848个字母字符或2729个数字字符,约500个汉字信息。这种二维条码比普通条码信息容量高几十倍。
(2)、编码范围广
二维码条码可以将照片、指纹、掌纹、签字、声音、文字等凡可数字化的信息进行编码。
(3)、保密、防伪性能好。
二维码条码具有多重防伪特性,它可以采用密码防伪、软件加密及利用所包含的信息如指纹、照片等进行防伪,因此具有极强的保密防伪性能。
(4)、译码可靠性高
普通条码的译码错误率约为百万分之二左右,而二维码条码的误码率不超过千万分之一,译码可靠性极高。
(5)、修正错误能力强
二维码条码采用了世界上最先进的数学纠错理论,如果破损面积不超过50%,条码由于沾污、破损等所丢失的信息,可以照常破译出丢失的信息。
(6)、容易制作且成本很低
利用现有的点阵、激光、喷墨、热敏/热转印、制卡机等打印技术,即可在纸张、卡片、PVC、甚至金属表面上印出二维条码。由此所增加的费用仅是油墨的成本,因此人们又称二维码是“零成本”技术。
(7)、条码符号的形状可变
同样的信息量,二维码条码的形状可以根据载体面积及美工设计等进行自我调整。
由于二维条码具有成本低,信息可随载体移动,不依赖于数据库和计算机网络、保密防伪性能强等优点,结合我国人口多、底子薄、计算机网络投资资金难度较大,对证件的防伪措施要求较高等特点,可以预见,二维码条码在我国极有推广价值。
上面的介绍都是对条码进行解释的,那在技术开发中我们该如何使用呢?
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。使用ZXing,可以帮助大家在最短的时间内开发出检验1D/2D条形码的程序,ZXing的工作原理是打开手机摄像头,然后拍照,接着再在手机上解码1D/2D条形码。
要发挥ZXing最佳性能,那么你的手机就必须高像素,最好支持JSR-234,这个JSR-234就厉害咯-----对焦功能,为了保证图像解码尽可能正确,所以图像本身的清晰度一定要高。