如何基于原生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 相关文章推荐
Extjs4中Form的使用之本地hiddenfield
Nov 26 Javascript
用jquery.sortElements实现table排序
May 04 Javascript
浅析在javascript中创建对象的各种模式
May 06 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
浅谈React中组件间抽象
Jan 27 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
Dec 24 Javascript
javascript中floor使用方法总结
Feb 02 Javascript
Node.js + express基本用法教程
Mar 14 Javascript
electron实现静默打印的示例代码
Aug 12 Javascript
微信小程序实现蓝牙打印
Sep 23 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
php实现简单洗牌算法
2013/06/18 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python实现的HTTP并发测试完整示例
2020/04/23 Python
Python常见数字运算操作实例小结
2019/03/22 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python实现人机猜拳小游戏
2020/02/03 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
工厂仓管员岗位职责
2014/01/01 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
社区庆八一活动方案
2014/02/02 职场文书
护士求职信范文
2014/05/24 职场文书
委托证明书
2014/09/17 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
签约仪式致辞
2015/07/30 职场文书
java版 联机五子棋游戏
2022/05/04 Java/Android