html2canvas截图微信头像

方案一:html代码,利用img标签的crossorigin属性

<img v-if="''!=wxAvatar" class="avatar" :src="wxAvatar" crossorigin="anonymous">

微信头像,指向微信的头像地址,跨域请求资源,资源可以显示,但是html2canvas会有跨域的问题,主要利用是 crossorigin="anonymous",是html2canvas可以截取到该标签

方案二:js代码,下载图片,并读取为base64格式,然后设置为img的src

    createPosterImage:function(base64data){

      this.wxAvatar = base64data
      
      this.html2canvas(
        document.getElementById('postCanvas'), {
          useCORS:true
        }
      ).then(canvas => {
        this.posterUrl = canvas.toDataURL('image/png')
        this.loading = false
      });

    }, 
    downloadAvatar:function(url, callback){
      var httpRequest = null;
      if (window.XMLHttpRequest) // 除了IE外的其它浏览器
      {
          httpRequest = new XMLHttpRequest();
      }else{
          httpRequest = new ActiveXObject("MsXml2.XmlHttp");
      }
      httpRequest.responseType = "blob";
      httpRequest.onreadystatechange = function(){
          if ( httpRequest.readyState == 4 ){
              if ( httpRequest.status == 200){
                  var value = this.response;
                  // var blob = window.URL.createObjectURL(value);
                  var reader = new window.FileReader();
                  reader.readAsDataURL(value);
                  reader.onloadend = function() {
                      var base64data = reader.result;
                      if (callback){
                          callback(base64data);
                      }
                  };

              }
          }
      };
      httpRequest.open('GET', url, true); 
      httpRequest.send(null);
      
    }, 

调用就是this.downloadAvatar(this.wxAvatar, this.createPosterImage)

猜你喜欢

转载自blog.csdn.net/youyudexiaowangzi/article/details/87638858