本例使用了:
上传照片
利用<input type="file">
的change
事件
html部分:
1 2
| <input type="file" @change="fileChange"> <img :src="originImg" alt="origin" >
|
js部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import QArt from 'qartjs'; export default { methods:{ fileChange(event){ let files = event.target.files; let file = files[0]; if(!file.type.match('image.*')){ alert('请选择照片'); return; } let reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { this.generateQRcode(reader.result); } }, generateQRcode(base64Img){ this.originImg = base64Img; new QArt({ value: 'www.baidu.com', imagePath: base64Img, filter: 'color', size: 195 }).make(this.$refs.result); } } }
|
下载二维码
利用canvas
生成图片,让现代浏览器直接输出image/octet-stream
实现图片自动弹出下载功能
html部分:
1 2 3 4
| <div class="resultImg" ref="result"></div> <div> <el-button type="primary" @click="download">下载二维码</el-button> </div>
|
js部分:
1 2 3 4 5 6 7 8 9 10
| export default { methods:{ download(){ let resultCanvas = this.$refs.result.children[0]; let type = "image/png"; let image = resultCanvas.toDataURL(type).replace(type, "image/octet-stream"); window.location.href = image; } } }
|
最后附上demo和源代码:
demo
源代码