生成二维码 npm install qrcodejs2 --save
生成图片链接供下载 npm install --save html2canvas
<button @click="qrcode">点击生成二维码</button>
<button @click="getPic">点击下载图片</button>
<div
id="qrcode"
ref="qrcode"></div>
<img
:src="imgUrl"
style="width: 400px;height: 400px;display:none;"
ref="qrcodeImg"
class="qrcodeImg"
id="qrcodeImg" />
import QRCode from 'qrcodejs2'
import html2canvas from 'html2canvas'
qrcode() {
let qrcode = new QRCode('qrcode', {
width: 200,
height: 200,
text: 'https://www.baidu.com'
})
},
downloadIamge() {
let iconUrl = document.getElementById('qrcodeImg').src
let image = new Image();
image.setAttribute('crossOrigin', 'anonymous');
image.onload = function() {
let canvas = document.createElement('canvas');
canvas.width = '400';
canvas.height = '400';
let context = canvas.getContext('2d');
context.drawImage(image, 0, 0, image.width, image.height);
let url = canvas.toDataURL('image/png');
let a = document.createElement('a');
let event = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
});
a.download = 'photo';
a.href = url;
a.dispatchEvent(event);
};
image.src = iconUrl;
},
getPic() {
html2canvas(document.getElementById('qrcode'), {
scale: 2,
allowTaint: false,
useCORS: true,
width: '500',
height: '500',
backgroundColor: '#fff',
}).then((canvas) => {
this.imgUrl = canvas.toDataURL('image/png');
setTimeout(()=> {
this.downloadIamge();
}, 300)
})
},