在二维码上画LOGO图案
在二维码上画LOGO图案
阅读:70

<template>

 <div :id="id" :ref="id" style="width: 100%;height: 100%;text-align: center;"/>

</template>

<script>

import QRCode from 'qrcodejs2'


export default {

 props: {

  id: {

   type: String,

   required: true

  },

  text: { // 后端返回的二维码地址

   type: String,

   default: 'http://jindo.dev.naver.com/collie'

  },

  width: {

   type: String,

   default: '128'

  },

  height: {

   type: String,

   default: '128'

  },

  colorDark: {

   type: String,

   default: '#000000'

  },

  colorLight: {

   type: String,

   default: '#ffffff'

  },

  logoImage: {

   type: String,

   default: ''

  }

 },

 data () {

  return {

   qrcode: ''

  }

 },

 watch: {

  text (newText) {

   this.createQrcode()

  }

 },

 mounted () {

  this.createQrcode()

 },

 methods: {

  createQrcode () {

   if (this.qrcode) { // 有新的二维码地址了,先把之前的清除掉

    this.$refs[this.id].innerHTML = ''

   }

   this.qrcode = new QRCode(this.$refs[this.id], {

    text: this.text, // 页面地址 ,如果页面需要参数传递请注意哈希模式#

    width: this.width, // 二维码宽度 (不支持100%)

    height: this.height, // 二维码高度 (不支持100%)

    colorDark: this.colorDark,

    colorLight: this.colorLight,

    correctLevel: QRCode.CorrectLevel.H

   })

   // 添加二维码中间的图片

   if (this.logoImage) {

    let logo = new Image()

    logo.setAttribute('crossOrigin', 'Anonymous')

    logo.src = this.logoImage

    logo.onload = () => {

     let qrImg = this.qrcode._el.getElementsByTagName('img')[0]

     let canvas = this.qrcode._el.getElementsByTagName('canvas')[0]

     this.qrcode._el.title = ''

     canvas.style.display = 'inline-block'

     let ctx = canvas.getContext('2d')

     // 设置logo的大小为二维码图片缩小的3.7倍,第二与第三参数代表logo在二维码的位置

     ctx.drawImage(logo, (128 - 128 / 3.7) / 2, (128 - 128 / 3.7) / 2, 128 / 3.7, 128 / 3.7)

     qrImg.src = canvas.toDataURL()

     qrImg.style.display = 'none'

     this.$refs.id.appendChild(this.qrcode._el)

    }

   }

   console.log(this.qrcode, 'qrcode')

  },

  // 制作另一个二维码

  updateCode () {

   this.qrcode.makeCode('http://naver.com')

  }

 }

}

</script>



相关文章
阿里收费终于跑在了腾讯前面:阿里云https证书免费期缩短到3个月,腾讯云坚挺1年不变!数字证书免费1年还能白嫖多久?
阿里收费终于跑在了腾讯前面:阿里云https证书免费期缩短到3个月,腾讯云坚挺1年不变!数字证书免费1年还能白嫖多久?
阅读:69
[SOLVED] windows 无法通过\\+IP地址 访问 linux samba 共享问题
win10 samba 网络共享互相访问 win10策略管理器
阅读:68
别再花300元认证小程序了,小程序免费认证的方法都在这里了
微信小程序认证费
阅读:64
微信H5支付一定需要开通微信公众号吗
微信支付 微信公众号
阅读:67
支付宝变更为无实际控制人意味着什么?
多家媒体在2023年12月30日报道,央行官网的非银行支付机构重大事项变更许可信息公示显示,央行同意支付宝变更为无实际控制人。
阅读:57
浙江省2023年普通高校招生成绩分数段表(总分).pdf 浙江省2023年普通高校招生普通类第二段平行投档分数线.xls
浙江省2023年普通高校招生成绩分数段表(总分).pdf 浙江省2023年普通高校招生普通类第二段平行投档分数线.xls
阅读:50
史上最全AI科普:终于有人一次性把AI讲明白了!
AI的爆火,以上信息,你一定没少见,甚至还会因为这些信息而感到焦虑不安。对于刚刚接触人工智能领域的朋友来说,人工智能领域知识庞大且复杂,各种专业名词层出不穷,常常让人看得摸不着头脑。
阅读:50
中国跨境电商独立站市场规模现状与2024年预测
SHEIN、Insta360、Florasis、YesWelder
阅读:48
硅光、光模块供应链一手信息(万字长文)
半导体 光模块2024年头部CSP订单量以及供应商格局
阅读:31
全国证券公司电话号码列表(持续更新中)
全国证券公司电话号码列表(持续更新中)
阅读:30