继上一篇文章利用Google QR Codes API生成二维码名片(一)之后,现在终于有时间来继续钻研一下Google API在制作二维码名片中的使用。最原始的需求是这样的,要批量生成二维码名片,故不能用草料二维码等在线二维码生成工具(一个个点,一个个保存太慢了,生成的名片还不好看,爱美之心,人皆有之,要不然别人一扫,就尴尬了)。在上篇文章中我们说了,Google API生成二维码,实质上就是发送一系列参数的请求,返回结果是一个二维码。这时,就有小伙伴发现了,你这还不是一个个发请求,一个个手动保存,而且名片也丑的不忍直视(没有任何的修饰)。接下来,我们来解决这两个关键问题,一、自动下载保存(即可以批量生成), 二、名片太丑啦。
接口回忆
我们调用Google生成二维码的接口为https://chart.googleapis.com/chart,参数及其含义如下:
实质上发送一个请求就得到了一个二维码,其中chl参数表示我们在扫码之后的数据(这个二维码扫描后显示”hello世界”):
https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=hello世界&choe=UTF-8&chld=L|4

自动下载
仔细想想,我们做下载文件功能时,有时候会用window.open([url]);浏览器会自动帮你下载它。但是但是但是…,当你运行如下的js时:
你会发现在新窗口打开了一个页面,页面的内容,不是其他的,正是url返回的二维码图片。至于为什么会这样呢?这和浏览器的渲染引擎有关,默认情况下渲染引擎可以显示HTML,XML以及图片,所以图片直接显示在页面了,在此不深究了(有兴趣的同学可以在网上搜索“浏览器是怎样工作的”去研究研究)。还有一种方法是使用html5的download属性(例:http://www.w3school.com.cn/tiy/t.asp?f=html_a_download),但是这种方式还是需要手动触发点击,那怎么办呢,于是想到我们能不能用代码触发下载呢,答案是当然可以。
我们运行如下js:
在chrome中运行,可以自动下载二维码图片(名为chart.png, 而不是我们定义的download属性名)太他娘的不科学了。经过查阅:在Chrome和Opear中,如果说下载文件不是在子集的服务器或域名中,这些浏览器会忽视download属性,换句话来说,文件名不变。于是加上了createObjectURL方法,来生成一个url,不明白此方法的自行到https://developer.mozilla.org/zh-CN/docs/Web/API/URL/createObjectURL中查看,此处不再啰嗦,我在这里将图片保存为jpg。利用fetch API的写法如下:
|
|
相应的,我们亦可以用ajax来实现:
美化名片
这里介绍两种名片格式VCARD和MECARD。VCARD是*联盟提出的电子名片的格式标准,一般用于商业名片,各个属性之间用’\r\n’分割,MECARD由日本某公司指定的数据格式。下面给出了两种数据格式:
于是乎我们的代码变成了下面这个样子(这里用MECARD演示):
生成二维码以及用微信扫描的结果如下,保存按钮可以将名片信息保存到通讯录:
批量生成
接下来我们来构建一组数据,生成这组数据的二维码并自动保存到我们的本地磁盘,上code。
|
|
你可能以为这样就万事大吉了,其实你错了,与此相关的是js中闭包的概念,此处不赘述,感兴趣错的同学,去网上查看,正确的代码应该是如下这样:
到此截止,大功告成,快来制作自己的名片吧。如果您觉得有用,可以点击下方的赏打赏支持我哦。