<qrcode :code-options="{ code: resident.sfzh, w: 200, h: 200 }" :logoImage="require('@/assets/commonImgs/logoImg.png')"/>
<template>
<div class='qrcode' ref='qrCode' />
</template>
<script>
import QRcode from 'qrcodejs2'
export default {
name: 'index',
props: {
codeOptions: {
type: Object
},
logoImage: {
type: String,
default: ''
}
},
data() {
return {
}
},
created() {
this.$nextTick(function() {
this.createQrcode()
})
},
methods: {
// 生成二维码
createQrcode() {
this.$nextTick(()=>{
let container=this.$refs.qrCode
if (container.innerHTML!='') { // 有新的二维码地址了,先把之前的清除掉
container.innerHTML = ''
}
let { code = '', w, h } = this.codeOptions
let qrcode=new QRcode(container, {
text: code,
width: w || 100,
height: h || 100,
colorLight: '#FFFFFF',//二维码背景颜色
colorDark: '#000',//二维码颜色
correctLevel: QRcode.CorrectLevel.H//容错率,L/M/H
})
// 添加二维码中间的图片
if (this.logoImage) {
let logo = new Image()
logo.crossOrigin='Anonymous'
logo.src = this.logoImage
logo.onload = () => {
let qrImg = qrcode._el.getElementsByTagName('img')[0]
let canvas = qrcode._el.getElementsByTagName('canvas')[0]
canvas.style.display = 'inline-block'
let ctx = canvas.getContext('2d')
// 设置logo的大小为二维码图片缩小的3.7倍,第二与第三参数代表logo在二维码的位置
ctx.drawImage(logo, (w - w / 3.7) / 2, (w - w / 3.7) / 2, w / 3.7, w / 3.7)
qrImg.src = canvas.toDataURL()
qrImg.style.display = 'none'
container.appendChild(qrcode._el)
}
}
})
}
}
}
</script>
<style scoped>
.qrcode {
display: inline-block;
background-color: #ffffff;
padding: 32px;
box-sizing: border-box;
}
</style>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。