qrcode.js使用js生成二维码(并下载)的实践
来源:互联网 发布:apache官方下载32位 编辑:程序博客网 时间:2024/06/07 05:29
知识点
base64数据形式
Base64是一种用64个字符来表示任意二进制数据的方法。 – 廖雪峰官方网站
Base64编码有哪些情景需求? – 知乎
案例场景
- 后台生成邀请链接,前端拿到链接之后处理成二维码图片并下载到本地,用于转发。
qrcode.js及jquery-qrcode.js实现生成二维码
- qrcode.js github地址: qrcode
- jquery-qrcode.js github地址: jquery-qrcode
1.html 代码
<div id="qrcode"></div> <!-- 用于生成二维码的容器 -->
2.js 代码
// qrcode.js var qrcode = new QRCode(document.getElementById("qrcode"), { text: "i am the first qrcode", width: 128, //生成的二维码的宽度 height: 128, //生成的二维码的高度 colorDark : "#000000", // 生成的二维码的深色部分 colorLight : "#ffffff", //生成二维码的浅色部分 correctLevel : QRCode.CorrectLevel.H }); //jquery-qrcode.js var qrcode = $('#qrcode').qrcode({ width: 128, height: 128, text: "size doesn't matter" });
3.qrcode.js 与jquery-qrcode.js区别
- qrcode.js可以指定生成的二维码深色、浅色区域块的颜色,jquery-qrcode.js只能默认黑白两色
- qrcode.js支持clear()和makeCode()方法,用于便捷清空二维码、更换二维码,jquery-qrcode.js不支持
4.qrcode.js生成二维码原理
- qrcode.js在用于生成二维码的容器#qrcode内生成一个canvas标签和一个img标签,并且以base64的编码格式描述图片信息。
点击按钮,生成的二维码图片保存到本地
实现原理
- 将base64编码格式的图片转换成canvas画布
- 利用toDataUrl()方法将canvas画布信息转化为可供下载的url信息 toDataUrl()
- 构建下载链接并模拟点击,将图片下载到本机
基于qrcode.js案例demo实现将生成的二维码保存为本地图片
- 构建一个用于下载的空的a标签
<a id="downloadLink"></a> <button type="button" onclick="downloadClick()">下载</button>
- 将base64图片构建成画布并模拟点击a标签下载
//js function downloadClick () { // 获取base64的图片节点 var img = document.getElementById('qrcode').getElementsByTagName('img')[0]; // 构建画布 var canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; canvas.getContext('2d').drawImage(img, 0, 0); // 构造url url = canvas.toDataURL('image/png'); // 构造a标签并模拟点击 var downloadLink = document.getElementById('downloadLink'); downloadLink.setAttribute('href', url); downloadLink.setAttribute('download', '二维码.png'); downloadLink.click(); } //jquery function downloadClick () { // 获取base64的图片节点 var img = $('#qrcode img').[0]; // 构建画布 var canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; canvas.getContext('2d').drawImage(img, 0, 0); // 构造url url = canvas.toDataURL('image/png'); // 构造a标签并模拟点击 var downloadLink = $('#downloadLink').attr("href", url).attr("download", "二维码.png"); downloadLink[0].click(); }
阅读全文
0 0
- qrcode.js使用js生成二维码(并下载)的实践
- 使用qrcode.js生成二维码
- qrcode.js生成二维码
- QRCode.js 生成二维码
- js生成二维码(qrcode.js)
- js 生成二维码 qrcode.js
- 如何使用 jQuery.qrcode.js 生成二维码
- 使用 jquery.qrcode.js生成二维码
- 使用jquery.qrcode.js生成二维码
- 使用jquery.qrcode.js 生成二维码
- js使用qrcode插件生成二维码
- QRCode.js:使用 JavaScript 生成二维码
- 使用qrcode.js生成二维码图片
- 使用jquery.qrcode.js生成二维码
- 用QRCode.js制作二维码的生成器(qrcode.makeCode方法生成二维码)
- js生成二维码并下载
- QRCode与QRCode.js生成二维码
- 二维码篇【一】【JS】使用jquery.qrcode生成二维码
- C#基础-012 时间转化
- NYoj42 一笔画问题
- 调用WindowsMediaPlayer控件播放多个文件【VB .NET】
- Shell编程进阶
- Java对象与JSON对象相互转换
- qrcode.js使用js生成二维码(并下载)的实践
- C/C++中数字与字符串之间的转换
- 日志-php-error错误日志查看
- Qt+ffmpeg仿格式工厂:编程中遇到的问题(二)
- Mathematical Libraries
- map用法
- zzuli2183: 就是签到题XD(欧拉常数)
- Unity按固定路线自动寻路
- 几个位置空缺,感兴趣的请私信我