如何基于原生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 相关文章推荐
jQuery之浮动窗口实现代码(两种方法)
Sep 08 Javascript
面向对象的Javascript之二(接口实现介绍)
Jan 27 Javascript
jQuery中对节点进行操作的相关介绍
Apr 16 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
浅析BootStrap模态框的使用(经典)
Apr 29 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
Jan 11 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
Sep 19 Javascript
解决低版本的浏览器不支持es6的import问题
Mar 09 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
Mar 22 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采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
JSON 学习之完全手册 图文
2007/05/29 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
python实现百度语音识别api
2018/04/10 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
python安装requests库的实例代码
2019/06/25 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
pytorch进行上采样的种类实例
2020/02/18 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
python如何代码集体右移
2020/07/20 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
彩妆大赛策划方案
2014/05/13 职场文书
教师考核材料
2014/05/21 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2014年班主任工作总结
2014/11/08 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
致运动员的广播稿
2015/08/19 职场文书
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL