如何基于原生javaScript生成带图片的二维码


Posted in Javascript onNovember 21, 2019

这篇文章主要介绍了如何基于原生javaScript生成带图片的二维码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

使用链接生成二维码主要是使用qr.js或者其他,把链接转化为二维码的形式,在使用canvas时需要设置画布的尺寸,生成的颜色。

<div class="qr_code">
  <img src="" id="imgcode" />
  <canvas ref="canvas" hidden></canvas>
<div>

js

  function createQr () { // 生成带图片二维码
   const qrcode = qr('http://baidu.com') // 转化链接
   const canvas = this.$refs.canvas
   const ctx = canvas.getContext('2d')
   const size = 128 / qrcode.moduleCount //128设置的二维码尺寸
   const scale = window.devicePixelRatio / getPixelRatio(ctx)
   canvas.height = canvas.width = 128e * scale
   ctx.scale(scale, scale)
   qrcode.modules.forEach((row, rdx) => {
    row.forEach((cell, cdx) => {
     ctx.fillStyle = cell ? '#000' : '#fff' // 设置二维码颜色和背景颜色
     var w = (Math.ceil((cdx + 1) * size) - Math.floor(cdx * size))
     ctx.fillRect(Math.round(cdx * size), Math.round(rdx * size), w, w)
    })
   })
   var image = document.createElement('img')
   var imgcode =  document.getElementById('imgcode')
   image.src = 'http://baidu/logo.png' //二维码中间图标
   image.onload = () => {
    var dwidth = 128 * 0.2 // 设置图片大小
    var dx = (128 - dwidth) / 2
    var dheight = image.height / image.width * dwidth
    var dy = (this.size - dheight) / 2
    image.width = dwidth
    image.height = dheight
    ctx.drawImage(image, dx, dy, dwidth, dheight)
    imgcode.src = canvas.toDataURL()
   }
 },
 getPixelRatio (ctx) {
   return ctx.webkitBackingStorePixelRatio || ctx.backingStorePixelRatio || 1
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript parseInt() 函数的进制转换注意细节
Jan 08 Javascript
js/jquery判断浏览器类型的方法小结
May 12 Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
js实现鼠标移动到图片产生遮罩效果
Oct 21 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
修改npm全局安装模式的路径方法
May 15 Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
JQuery中queue方法用法示例
Jan 31 jQuery
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 Javascript
原生JS实现留言板功能
Feb 08 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 #Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 #Javascript
浅谈Vue SSR中的Bundle的具有使用
Nov 21 #Javascript
webpack常用构建优化策略小结
Nov 21 #Javascript
Vue 中 filter 与 computed 的区别与用法解析
Nov 21 #Javascript
js实现课堂随机点名系统
Nov 21 #Javascript
JavaScript实现简单随机点名器
Nov 21 #Javascript
You might like
PHP 正则表达式小结
2015/02/12 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
js获取内联样式的方法
2015/01/27 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
网上商城创业计划书范文
2014/01/31 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
依法行政工作汇报
2014/10/28 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP