还有一天考完试,先出来浪一浪~
首先,需要在文章开头感谢孟坤博客。本程序源代码修改自孟坤博客。本文首发 惶心 | 技术博客 。地址自己百度。
其次,这是一个需要服务器空间和域名运行的HMTL程序。请注意,百度网盘一类的服务不属于服务器空间。
再其次,如果你没有服务器空间和域名,你可以联系我通过非常便宜的价格定制。具体方案请见文末。
(请管理、版主注意,这篇帖子主要目的是分享和探讨修改源码的过程,源码的思想以及学到的东西,并非广告。帖子长3000字,其中只有100字左右提及了定制。)
在开始之前,我想先谈一谈我修改源码的过程。
我原来准备做的是付款码三合一。在修改的过程中,发现孟坤使用了 liantu.com 的api。简单地用站长工具 ping了一下,发现国内延迟不算低,而且不支持https。
孟坤在api下面放了几个备用的,除了百度云的api以外,都不支持https,而且速度也不算一流。
简单地在Google上搜索了一下,支持https的二维码生成只有 cli.im 草料二维码,lwl12提供的api,和百度云的api。
草料二维码的api没看错的话是自带广告的,不适合使用。所以剩下就只有百度的和lwl的。
虽然lwl12是很大的dalao,服务器也很棒,但是想想应该不够百度的快,所以就放到了备用里。另外lwl12的api如果链接太长则会无法生成,然而QQ钱包的链接也很长,所以在付款二维码多合一里面无法使用。(在二维码名片多合一里面可用)。
很快,我萌发出了一个新的想法:既然可以做付款二维码,那么可以不可以做一个个人名片呢?
当然是可以的,因为原理是一毛一样的。
但是我是完全不会Coding的,几天前才学了一点微不足道的html。其实一开始也没有指望自己能看懂孟坤的代码。
不过好在我没有放弃。看多了几次,就看懂了。
总的来说,孟坤的代码分为以下几部分。
1. 分别定义QQ、微信、支付宝 的链接。这里需要用二维码识别提取出来。
2. 定义api。(我已经替换成百度云的api)。
3. 显示页面分为三部分。这里用Word里面的词汇来说,分别是页眉、主体、页脚。分别定义字体、字号以及这个部分的颜色。
4. 孟坤真的超聪明,他使用data:image/png;base64的方式显示图片。这就意味着节省了一到两个http请求。而这意味着,能更快地打开相应页面。而在极端网络环境下,这里的优点尤为明显。比如在户外信号差的地方用流量扫码的时候。
5. 定义输出。支付宝的支付页面直接在支付宝内打开链接即可,可以通过重定向的方式打开支付页面,故此不需要额外的扫描二维码。而微信、QQ钱包都不能直接通过重定向打开,需要用户手动扫码。
6. 关于二维码的生成:如果换我来设计的话,我多半会在某个地方储存我的二维码,再在页面里面调用。而孟坤的方案是使用api生成二维码。这样服务器端仅仅需要传输一个网址出去,二维码由api自动生成返回,大大提高了速度。
7. 孟坤的代码里面到处是友好的注释,非常有爱,让我这个小白能够更好地看懂代码。
通过适当地修改源码(真的多亏了注释),我实现了QQ、微信、微博 二维码名片的三合一。
在这个过程里我又遇到了更多的麻烦:
- 在测试的过程中,需要用不同的UA测试。然而如果每一次修改都分别使用微博微信QQ扫码的话太慢了,而且我是在本地的环境下调试的,这意味着我无法直接在手机上打开相应文件。解决方案是在Google Chrome里面通过审查元素模拟不同的UA。网上微信、QQ的UA搜搜就有,但是唯独就是没有微博的。于是我自己通过微博访问 What’s my user agent? 得到我自己的UA,放进浏览器里面调试。
Mozilla/5.0 (iPhone; CPU iPhone OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Mobile/15C114 Weibo (iPhone8,4__weibo__7.12.0__iphone__os11.2)
- 但是有时候也确实需要在手机上试一试,比如页面放到服务器以后,或者当我需要用微博客户端访问What’s my user agent? 的时候。这里的解决方案是生成二维码,通过相应的客户端访问。目前国内做的比较好的是 草料二维码 。然而我很快就觉得草料二维码太慢了,于是我找到一个 国外的、界面比草料好看的、还是实时生成的(打字的时候每输入一个字母二维码都会立即变化)的二维码生成网站,同时还支持电脑摄像头扫码,亲测 480p摄像头、iPhone5 的屏幕大小,依然能够很快识别。和草料通过Flash调用摄像头相比,这个网站不知道高到哪里去了。反正我用草料是从来没有用电脑成功扫码过的。这个网站是 QR Code Generator。
- data:image的生成。Google了半天才找到一个貌似是台湾人做的网站,而且貌似用不了。于是我输入关键词:data:image generate 第一个结果就很棒!还支持远程url上传图片生成。data: URI Generator 。
废话说完了,看正文吧。
0. Demo