html2canvas转图片问题

在同一页面生成的时候,首先js执行的数据到DOM后生成页面,然后canvas才能生成,如果是纯前端,就要知道图片什么时候才能完全加载出来,否则执行canvas生成的时候是少图片的。canvas用的html2Canvas生成,用到img.onload判断。还有canvas生成的时候会有一条线,可能是背景图的原因,把背景图片换成img标签就OK了。深入的清晰度转化还有待研究,这里只是做了一个简单的生成图片的处理。

 

判断图片onload的封装函数,我这里是分开的两组图片判断,获取图片的总长度,和定义一个count,当count数组==length的时候执行canvas生成

var maxImg = 7, count = 0;
图片数组.forEach(function(item, index) {
    var src = item,
        img = new Image();
    img.index = index;
    img.onload = function() {//onload里面加载
        $('.peopleImg:eq(' + this.index + ')').attr('src', this.src);
        count ++;
        if(count >= maxImg) {
            generateCanvas();
        }
    }
    img.src = src;
})

 

function generateCanvas() {//canvas生成图片
    html2canvas(document.body).then(function(canvas) {
       //useCORS: true // 如果截图的内容里有图片,可能会有跨域的情况,加上这个参数,解决文件跨域问题
       document.body.appendChild(canvas);//直接生成,但是页面和生成的图片会同时存在,有两种办法,一种把页面隐藏,一种给生成的图片定位到最高层级,把页面给覆盖掉,我这里用的第二种。
      //  var newimg =  convertCanvasToImage(canvas);
      //  newimg.setAttribute('width','100%');
      //  newimg.style.position = 'fixed';
      //  newimg.style.top = 0;
      //  newimg.style.left = 0;
      //  newimg.style.zIndex = 999;
      //  document.body.appendChild(newimg);
        
    });
}

//转图片

function convertCanvasToImage(canvas) {
    var image = new Image();
    image.src = canvas.toDataURL("image/png");
    return image;
}

 

//这个是单独的数组判断,我这里没用到

function loadImage(imgList) {
   var len = imgList.length;
   var count = 0;
   imgList.forEach(function(item) {
      var img = new Image(item);
      $(..).attr('src', item);
      img.onload = function() {
         count++
        if(count === len) {
            return true
        }
     }
   })
}

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值