生成二维码效果
前言
安装
npm install --save qrcode.vue # yarn add qrcode-vue
一、使用步骤
1.引入
//引用组件
<qrcode-vue
id="qrcodeBox"
:size="qrcodeVue.size"
:value="qrcodeVue.value"
:logo="qrcodeVue.logo"
:bgColor="qrcodeVue.bgColor"
:fgColor="qrcodeVue.fgColor"
></qrcode-vue>
2.功能
import qrcodeVue from "qrcode-vue";
components: {
qrcodeVue
},
data() {
return {
qrcodeVue: {
size: 250,
bgColor: "#fff",
fgColor: "#000",
value: "https://www.baidu.com/", //二维码地址
logo: require("@/assets/images/qrLogo.jpg") //logo图片
}
}
}
methods: {
//生成二维码
getQRcode() {
this.qrcodeVue.value = "www.baidu.com"; // 二维码内容
},
//下载图片
downsQRcode() {
//找到canvas标签
let myCanvas = document.getElementById("qrcodeBox").getElementsByTagName("canvas");
let img = document
.getElementById("qrcodeBox")
.getElementsByTagName("img");
// // //创建一个a标签节点
let a = document.createElement("a");
// //设置a标签的href属性(将canvas变成png图片)
let imgURL = myCanvas[0].toDataURL("image/jpg");
let ua = navigator.userAgent;
if (ua.indexOf("Trident") != -1 && ua.indexOf("Windows") != -1) {
// IE内核 并且 windows系统 情况下 才执行;
var bstr = atob(imgURL.split(",")[1]);
var n = bstr.length;
var u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
var blob = new Blob([u8arr]);
window.navigator.msSaveOrOpenBlob(blob, "商品二维码" + "." + "png");
} else if (ua.indexOf("Firefox") > -1) {
//火狐兼容下载
let blob = this.base64ToBlob(imgURL); //new Blob([content]);
let evt = document.createEvent("HTMLEvents");
evt.initEvent("click", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为
a.download = " "; //下载图片名称,如果填内容识别不到,下载为未知文件,所以我这里就不填为空
a.href = URL.createObjectURL(blob);
a.dispatchEvent(
new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window
})
); //兼容火狐
} else {
//谷歌兼容下载
img.src = myCanvas[0].toDataURL("image/jpg");
// a.href = myCanvas[0].toDataURL('image/png').replace('image/png', 'image/octet-stream')
a.href = img.src;
//设置下载文件的名字
a.download = "商品二维码";
//点击
a.click();
}
},
}
总结
最重要的就是不要去看远方模糊的,而要做手边清楚的事.多看点,多学点,总不会有错.