截屏,并传递到后台

简化版

<div ref='box'></div>
cnpm i html2canvas --save

//引入html2canvas
import html2canvas from 'html2canvas'



screenshot(){
html2canvas(this.$refs.box,{
backgroundColor:null,//避免图片有白色边框
useCORS:true,
allowTaint:true
}).then(canvas=>{
let dataURL = canvas.toDataURL('image/png',1.0)
//默认截取的图片就是base64格式的,后台可以转化
this.$emit('search',dataURL)
})
}

详细版

async screenshot(){
let base64ImgStr = '';
try{
let htmlDOM = this.$refs.box;
const domWidth = htmlDOM.offsetWidth;
const domHeight = htmlDOM.offsetHeight;
const scale = widow.devicePixelRatio ? window.devicePixeRatio:2;
const canvas = document.createElement('canvas')
canvas.width = domWidth * scale;
canvas.height = domHeight * scale;
canvas.style.width = `{domWidth}px`;
canvas.style.height = `{domHeight}px`;

const ctx = canvas.getContext('2d')
ctx.scale(scale,scale);

window.pageYoffset = 0;
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;

const DOMCanvas = await html2canvas(htmlDOM,{
canvas,
backgroundColor:'rgba(0,0,0,0)';
width:domWidth,
height:domHeight,
useCORS:true,
allowTaint:false,
scrollX:0,
scrollY:0,
logging:true//日志打印
})
base64ImgStr = DOMCanvas.toDataURL('image/png')
//根据情况看,是否去掉base64的前缀
base64ImgStr = base64ImgStr.replace(/^data:image\/w+;base64,/,'')
if(base64ImgStr){
console.log('success')
//默认截取的图片就是base64格式的,后台可以转化
this.$emit('search',dataURL)
}else{
console.log('error')
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值