如何基于原生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网页中的(运行代码)功能实现思路
Feb 04 Javascript
JQUERY dialog的用法详细解析
Dec 19 Javascript
jQuery filter函数使用方法
May 19 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
PHP+mysql+Highcharts生成饼状图
May 04 Javascript
js实现卡片式项目管理界面UI设计效果
Dec 08 Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 Javascript
JS正则替换去空格的方法
Mar 24 Javascript
微信小程序滚动Tab实现左右可滑动切换
Aug 17 Javascript
微信小程序模版渲染详解
Jan 26 Javascript
js实现一个简易计算器
Mar 30 Javascript
JavaScript 中的六种循环方法
Jan 06 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学习笔记之 函数声明
2011/06/09 PHP
php 获取本地IP代码
2013/06/23 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
咖啡蛋糕店创业计划书
2014/01/28 职场文书
员工入职担保书范文
2014/04/01 职场文书
员工保密协议书
2014/09/27 职场文书
民政工作个人总结
2015/02/28 职场文书
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS