html2canvas 0.5.0-beta4填坑

最新版本,问题比较少,但是,0.5.0版本,问题很多。
搞了2天,才完美解决。
//更改选中背景图
selInviteFun(para){
this.selIndex = para;
let bgImg = this.bannerList[para].poster + “?new”;//背景图

let that = this;

let headImg = this.headInfo.headImg;//头像
let coverImg = this.detailData.cover + “?new”;//封面
let codeImg = this.code;//二维码

let p1 = this.util.imageUrl2Base64(headImg).then((base64) => {
this.base64.headImg = base64;
});
let p2 = this.util.imageUrl2Base64(codeImg).then((base64) => {
this.base64.codeImg = base64;
});
let p3 = this.util.imageUrl2Base64(coverImg).then((base64) => {
this.base64.coverImg = base64;
});
let p4 = this.util.imageUrl2Base64(bgImg).then((base64) => {
this.base64.bgImg = base64;
});
//解决第一次加载的时候,背景图空白。必须等待所有图片加载完成
Promise.all([p1, p2, p3, p4]).then((data) => {
document.getElementById(‘outView’).style.display = ‘block’;
document.getElementById(‘outShow’).style.display = ‘none’;

//iPhone手机,devicePixelRatio的值,可能是2或者3
let scale = window.devicePixelRatio || 1;
let targetDom = document.getElementById("outView");
let width = targetDom.offsetWidth;
let height = targetDom.offsetHeight;

//解决图片模糊,先放大N倍,再缩小
let _canvas = document.createElement('canvas');
_canvas.width = width * scale;
_canvas.height = height * scale;
let _context = _canvas.getContext('2d');
_context.scale(scale, scale);

//解决图片偏移,位置还原
let left = targetDom.getBoundingClientRect().left;
let top = targetDom.getBoundingClientRect().top;
_context.translate(- left, - top);

let options = {
  dpi: window.devicePixelRatio,
  canvas: _canvas,
  scale: scale,
  width: width,
  height: height,
  logging: false,
  useCORS: true,  //跨域
  allowTaint: true,
  // timeout: 500
};

html2canvas(targetDom, options).then((canvas) =>{
  //解决图片模糊,关闭抗锯齿
  let context = canvas.getContext('2d');
  context.mozImageSmoothingEnabled = false;
  context.webkitImageSmoothingEnabled = false;
  context.msImageSmoothingEnabled = false;
  context.imageSmoothingEnabled = false;

  that.base64.outImg = canvas.toDataURL("image/png");
  document.getElementById('outView').style.display = 'none';
  document.getElementById('outShow').style.display = 'block';
});

});

},

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值