如何基于原生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对象的函数
Dec 22 Javascript
在JavaScript中使用inline函数的问题
Mar 08 Javascript
javascript中节点的最近的相关节点访问方法
Mar 20 Javascript
如何获取select下拉框的值(option没有及有value属性)
Nov 08 Javascript
javascript 通用loading动画效果实例代码
Jan 14 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 Javascript
JavaScript判断是否是微信浏览器
Jun 13 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
深入理解angular2启动项目步骤
Jul 15 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
Node.js 多线程完全指南总结
Mar 27 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
May 29 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
js实现简单页面全屏
2019/09/17 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python实现excel转sqlite的方法
2017/07/17 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
化学专业自荐信
2014/05/28 职场文书
食品安全标语
2014/06/07 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
基层党支部承诺书
2015/04/30 职场文书
PHP新手指南
2021/04/01 PHP
go语言map与string的相互转换的实现
2021/04/07 Golang