如何基于原生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客户端脚本的设计和应用
Aug 21 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
JavaScript更改字符串的大小写
May 07 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 Javascript
深入理解jQuery.data() 的实现方式
Nov 30 Javascript
微信小程序 数组中的push与concat的区别
Jan 05 Javascript
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
js按条件生成随机json:randomjson实现方法
Apr 07 Javascript
基于vue.js路由参数的实例讲解——简单易懂
Sep 07 Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 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的安全
2006/10/09 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
幼儿园招生广告
2014/03/19 职场文书
电视购物广告词
2014/03/19 职场文书
植树节活动总结
2014/04/30 职场文书
国庆庆典邀请函
2015/02/02 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
Python基础之变量的相关知识总结
2021/06/23 Python
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL