如何基于原生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 相关文章推荐
如何判断元素是否为HTMLElement元素
Dec 06 Javascript
页面刷新时记住滚动条的位置jquery代码
Jun 17 Javascript
javasript实现密码的隐藏与显示
May 08 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
javascript实现列表切换效果
May 02 Javascript
JavaScript实现两个select下拉框选项左移右移
Mar 09 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
Nov 22 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
VueJS 取得 URL 参数值的方法
Jul 19 Javascript
vue 实现图片懒加载功能
Dec 31 Vue.js
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+SQLite存储方案
2010/09/04 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
python实现浪漫的烟花秀
2019/01/30 Python
pytorch构建多模型实例
2020/01/15 Python
python统计字符的个数代码实例
2020/02/07 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
python实现计算器简易版
2020/12/17 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
SQL Server笔试题
2012/01/10 面试题
新学期班主任寄语
2014/01/18 职场文书
提拔干部考察材料
2014/05/26 职场文书
社团活动总结怎么写
2014/06/30 职场文书
金融管理专业求职信
2014/07/10 职场文书
迁户口计划生育证明
2014/10/19 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
Web应用开发TypeScript使用详解
2022/05/25 Javascript