条形码、二维码、三维码解读

条形码、二维码、三维码解读条形码 二维码 三维码解读 1 条形码 Barcode1 1 释义 1 2 识别原理 1 3 编码原理 1 4 示例 Code128 编码 2 二维码 QRcode2 1 释义 2 2QR 码基本结构 2 3 码元结构 2 4 编码规范

大家好,欢迎来到IT知识分享网。

元旦假期无聊做了个 手绘二维码工具,一直以来都只是用,却对其背后的信息不是很了解,恰逢周末,正好来学习记录一下。

1 条形码 Bar code

1.1 释义

条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。

但是光有这些标识,其实是没多大用途的;需要和条形码识别器进行配合,将标识中“包含”的数据读取出来,才能被用于后续的使用。

1.2 识别原理

条码符号是由反射率不同的“条”、“空”按照一定的编码规则组合起来的一种信息符号。由于条码符号中“条”、“空”对光线具有不同的反射率,从而使条码扫描器接受到强弱不同的反射光信号,相应地产生电位高低不同的电脉冲。而条码符号中“条”、“空”的宽度则决定电位高低不同的电脉冲信号的长短。

条形码扫描器利用光电元件将检测到的光信号转换成电信号,再将电信号通过模拟数字转换器转化为数字信号传输到计算机中处理。我们在生活中,最常见到的就是下面这种设备。光笔扫描器

1.3 编码原理

有一篇文章介绍的很全面,这里不再赘述。

1.4 示例:Code128编码

比如我要编码的内容是“TIGER”,则参照码表。

ID Code128A Code128B Code128C BandCode 编码值
0 SP SP 0 bbsbbssbbss
31 ? ? 31 bbsbbsssbbs
37 E E 37 bsssbbsbsss
39 G G 39 bbsbsssbsss
41 I I 41 bbsssbsssbs
50 R R 50 bbsssbsbbbs
52 T T 52 bbsbbbsssbs
101 FNC4 CODEA CODEA bbbsbsbbbbs
102 FNC1 FNC1 FNC1 bbbbsbsbbbs
103 StartA StartA StartA bbsbssssbss
104 StartB StartB StartB bbsbssbssss
105 StartC StartC StartC bbsbssbbbss
106 Stop Stop Stop bbsssbbbsbsbb

则按照编码规则后可计算出数据位与校验位((103 + 52 + 241 + 339 + 437 + 550)%103)

开始位StartA(bbsbssssbss)+数据位[T(bbsbbbsssbs) I(bbsssbsssbs) G(bbsbsssbsss) E(bsssbbsbsss) R(bbsssbsbbbs)] + 检验位31(bbsbbsssbbs)+ 结束位Stop(bbsssbbbsbsbb) 

即:

bbsbssssbssbbsbbbsssbsbbsssbsssbsbbsbsssbsssbsssbbsbsssbbsssbsbbbsbbsbbsssbbsbbsssbbbsbsbb 

然后机器用这个字符串按像素排列,生成条形码

# pip install pySrtich import os from pystrich.code128 import Code128Encoder encoder=Code128Encoder('tiger') encoder.save("./1.png",bar_width=2) os.system("./1.png") 

tiger

详细解读可点击链接

2 二维码 QR code

2.1 释义

二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。

2.2 QR 码基本结构

QR 码基本结构
在这张图中,不难看出:空白区、位置探测图形、矫正图形、定位图形都是固定的。

版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21×21(版本1),到177×177(版本40),每一版本符号比前一版本 每边增加4个模块。

数据区和纠错码字,这块才是我们所有信息的几种汇聚地。

详细结构可参考:链接

2.3 码元结构

QR 码版本及规格信息
版本区别

版本 40

可以看出,数据区数据越多,需要的码元空间也就越大,其版本也就越大,我们肉眼能看到的二维码也就越密集。版本最大到 40,也就是说,数据区可存储的数据空间是有限的,超过一定阈值,就无法生成二维码。

寻象图型

2.4 编码规范

第一步,计算出编码数据占据的空间大小,选择最佳版本坑位。
版本坑位

第二步,将数据字符转化成位流。

如需模式转化,则在新的模式段开始前加上模式指示符进行模式转换。在数据序列后面添加终止符。最终位流以8 位进行码字。

第三步,填充数据到指定位置,生成二维码。
序列顺序如:如:D1, D12, D23, D35, D2, D13, D24, D36, … D11, D22, D33, D45, D34, D46, E1, E23,E45, E67, E2, E24, E46, E68,…
版本 2-M 的符号字符布置

示例
数据可以按照一种模式进行编码,以便进行更高效的解码,例如:对数据:0编码(版本1-H),
1)分组:012 345 67
2)转成二进制:012→0000001100 (即8+4)
345→0
67 →
3)转成序列:0000001100 0
4)字符数 转成二进制:8→0000001000
5)加入模式指示符(上图数字)0001:0001 0000001000 0000001100 0
对于字母、中文、日文等只是分组的方式、模式等内容有所区别。基本方法是一致的

2.5 活码

活码说白了就是二维码内套二维码,外层二维码不会变化,但是经由外部二维码识别到的内容,可以随意更换。

二维码很好用,我自己在公司内有一套专属工具箱(《泰戈尔的工具箱》),里面呢有一系列扫码预览工具,号称“APP 内全场景落地页预览神器”。其就是建立在二维码之上。用的时候绝大多数场景都没啥问题,但是有一些情况下,由于编码跳转链接太过冗长,会导致数据量超出了二维码能承载的上限。

这就导致没办法直接生成二维码去“预览跳转”了。结合市面上常见的“活码”技术,针对这个数据承载量有限的问题,我也有了一套针对性解决方案。

那就是“重定向”(仅支持端内跳转形式的 scheme 来生成二维码)。

比如来看个例子:
本地起一个 web 服务

查看本机 IP 地址

生成二维码“活码”
活码示例

手机与电脑链接至同一台 WiFi 设备下,扫这个码。

可以发现成功 redirect。

我生成的码命名是“http://192.168.0.104:8080/redirect”, 结果扫码后却是”https://blog.csdn.net/marksinoberg”。

这就是“活码”的其中一个应用,目前很好的解决了我在公司内遇到的二维码过长无法生成问题。

不难看出,“活码”可应用的方向多,但受限也比较多,具体场景具体分析吧。

3 三维码 VR code

3.1 释义

三维码, [1] 英文名称VR Code,VR全称Visual Recognition(视觉识别),由创始人陈绳旭 [2] 重新定义标识为“三维码”,并在全球范围内申请相关知识产权保护,其中包括商标。三维码相较于二维码具有更大的信息容量、相同的识别便易性和较好的安全性。其编码方式是先将文本编译一串二进制数字,然后通过特定的算法并结合图片整体的色彩内容,将该二进制数字串与图像信息编码为一组可以通过特定规则解读的阵列。并且该图像阵列除了可以被机器设备读取以外,仅用人眼辨识也可以获取到部分乃至全部文本信息。

3.2 拓展

对三维码我也只是略有耳闻,没有具体了解,有兴趣的可自查,这里不做记录了。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151138.html

(0)
上一篇 2025-03-15 14:20
下一篇 2025-03-15 14:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信