如何基于原生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 相关文章推荐
为数据添加append,remove功能
Oct 03 Javascript
javascript中用星号表示预录入内容的实现代码
Jan 08 Javascript
extjs 04_grid 单击事件新发现
Nov 27 Javascript
Javascript中3种实现继承的方法和代码实例
Aug 12 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
May 06 Javascript
JavaScript:Date类型全面解析
May 19 Javascript
AngularJS中的promise用法分析
May 19 Javascript
Vue编写多地区选择组件
Aug 21 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
May 13 Javascript
Javascript实现异步编程的过程
Jun 18 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 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+mysql大量用户登录解决方案分析
2014/12/29 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
Three.js学习之网格
2016/08/10 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Python实现常见的回文字符串算法
2018/11/14 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
企业安全生产责任书
2014/04/14 职场文书
妇女工作先进事迹
2014/08/17 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫