如何基于原生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 相关文章推荐
js继承的实现代码
Aug 05 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 Javascript
10个基于浏览器的JavaScript调试工具分享
Feb 07 Javascript
javascript修改表格背景色实例代码分享
Dec 10 Javascript
javascript中打印当前的时间实现思路及代码
Dec 18 Javascript
bootstrap table小案例
Oct 21 Javascript
react系列从零开始_简单谈谈react
Jul 06 Javascript
AngularJS实现的锚点楼层跳转功能示例
Jan 02 Javascript
如何在JavaScript中优雅的提取循环内数据详解
Mar 04 Javascript
Vue 子组件与数据传递问题及注意事项
Jul 11 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
js实现微信聊天界面
Aug 09 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连接Oracle数据库
2006/10/09 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
JSONP跨域请求
2017/03/02 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
Python编程中的文件操作攻略
2015/10/16 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
儿科主治医生个人求职信
2013/09/23 职场文书
化工专业应届生求职信
2013/11/08 职场文书
大学开学计划书
2014/04/30 职场文书
捐书活动总结
2014/05/04 职场文书
生活小常识广播稿
2014/09/16 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
PL350与SW11的比较
2021/04/22 无线电
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python