前言
此篇文章适合一些一脸懵逼开发二维码的人群,相信通过这篇文章能让你对二维码的认知从一无所知到牛逼到死,感谢我吧!骚年。。!!
在写代码之前我觉得应该先讲一下二维码原理以及规则,每个区域的小黑快都有着什么含义。
一. 二维码基本知识
二维码另一个名称是QR Code(Quick Response Code),近年来在移动设备上经常使用,与传统条形码相比,可以存储更多的信息。二维码本质上是个密码算法,基本知识总结如下。
首先,二维码存在 40 种尺寸,在官方文档中,尺寸又被命名为 Version。尺寸与 Version 存在线性关系:Version 1 是 21×21 的矩阵,Version 2 是 25×25 的矩阵,每增加一个 Version,尺寸都会增加 4,故尺寸 Size 与 Version 的线性关系为:
Size=(Version−1)×4Size=(Version−1)×4
Version 的最大值是 40,故尺寸最大值是(40-1)*4+21 = 177,即 177 x 177 的矩阵。
二维码结构如下图 1.1 所示:
图1.1 二维码结构
二维码的各部分都有自己的作用,基本上可被分为定位、功能数据、数据内容三部分。
- 定位图案:
- Position Detection Pattern, 定位图案:用于标记二维码矩形的大小;用三个定位图案即可标识并确定一个二维码矩形的位置和方向了;
- Separators for Position Detection Patterns, 定位图案分割器:用白边框将定位图案与其他区域区分;
- Timing Patterns, 时序图案:用于定位,二维码如果尺寸过大,扫描时容易畸变,时序图案的作用就是防止扫描时畸变的产生;
- Alignment Patterns, 对齐图案:只有在 Version 2 及其以上才会需要;
- 功能数据:
- Format Information, 格式信息:存在于所有尺寸中,存放格式化数据;
- Version Information, 版本信息:用于 Version 7 以上,需要预留两块 3×6 的区域存放部分版本信息;
- 数据内容:剩余部分存储数据内容
- Data Code, 数据码;
- Error Correction Code, 纠错码;
有趣的我粘贴就粘贴一半,剩下的就让他随缘而去吧。毕竟搞懂这些就已经足够了,可爱的你,如果还是想深究,请戳https://blog.youkuaiyun.com/ajianyingxiaoqinghan/article/details/78837864
二. 二维码代码编写
二维码的生成用了一个DLL,叫做ThoughtWorks.QRCode。相信你也已经在网上搜索到了。的却,很贵!面对可爱的你,我决定无偿!!赠送!!https://pan.baidu.com/s/1D2a6MLrYNCxzabRTBtY3iA 密码:ndzq
首先在你的项目里添加这个引用。
然后在你的文件里添加下面的代码。
#region 生成二维码
public string GetQRCode()
{
string FullPath = string.Empty;
try
{