这几天在研究二维码的扫码登录。初来乍到,还有好多东西不懂。在网上看到有人写了一些通过QRCode或者Zxing实现二维码的生成和解码。一时兴起,决定自己亲手试一试。本人是通过QRCode实现的,下面具体的说一下。
很重要的一部分知识:二维码一共有 40 个尺寸。官方叫版本 Version。Version 1 是 21 x 21 的矩阵,Version 2 是 25 x 25 的矩阵,Version 3 是 29 的尺寸,每增加一个 version,就会增加 4 的尺寸,公式是:(V-1)*4 + 21(V是版本号) 最高 Version 40,(40-1)*4+21 = 177,所以最高是 177 x 177 的正方形。

生成二维码(不含有logo) 生成二维码(带有logo)
对应的解码
工具很简单,但是很实用。界面还可以美化,功能还可以加强,初心只是为了练习一下二维码的生成和解析。
View Code
对于二维码图片大小还是不会计算,如果有人看到这里,方便的话可以告诉小弟一声。我这里的这个值(235)是通过设定好QrcodeVersion(版本15),以及绘制图像时偏移量pixoff=2和black区域的size=3,最终生成图片后,将图片通过ps打开,然后确定图片的尺寸信息。
还有就是中间的logo不要过大,否则会导致QRCode解析出错,但是手机扫码不一定会出错。感觉手机扫码解析比QRCode解析能力强。
一般设置version就好了,网上好多都是7或者8,我尝试下更大的值,15的话二维码看起来很密集。
绘制black区域的时候要设置偏移量,要不然可能导致二维码识别出错。 black区域的大小根据实际情况来就好。
按照自己的理解画的,结合上图,看一下代码吧。
用户请求扫码方式登录,后台生成二维码,将uuid和二维码访问地址传给用户。
用户获得uuid和二维码之后,请求后台的长连接(携带uuid),不断检测uuid是否有对应的用户信息,如果有则转到登录模块(携带登录信息)。
用户通过手机扫码之后,在手机端输入用户信息,然后进行验证(携带uuid),后台更新uuid对应的用户信息,以便长连接可以检测到用户登录信息。