这里使用的是html2canvas插件,大概就是获取DOM元素,通过html2canvas插件转换为canvas,最后转换为图片保存至本地
npm install --save html2canvas
直接上代码
<template>
<div class="app-container canvasImgObj">
<el-button @click="GenerateImg">保存为图片</el-button>
</div>
</template>
<script>
//引入
import html2canvas from "html2canvas"
export default {
name: "Index",
data() {
return {
};
},
methods: {
//转换成图片
GenerateImg() {
let canvas = document.querySelector('.canvasImgObj');//先获取要截取页面的DOM
let that = this;
html2canvas(canvas,{scale:2,logging:false,useCORS:true}).then(function(canvas) {
let type = 'png';
let imgData = canvas.toDataURL(type);
// 照片格式处理
let _fixType = function(type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
let r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
};
imgData = imgData.replace(_fixType(type),'image/octet-stream');
let filename = "设备地图" + '.' + type;
that.saveFile(imgData,filename);
});
},
//下载至本地
saveFile(data, filename){
let save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
let event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
},
},
};
</script>