场景:用canvas画图时,文字能画,图片就不行

解决方法:通过js画图,canvas.DrawImage()绘制网络图片无效

思路:网上有好多是利用image的onload解决的,这个方法是没有问题的,但好多时候,要drawImage的并不是一张网络图片,而是多张,所以采用【对网络图片地址的数组进行new Image循环,然后利用promise.all方法进行成功回调】

代码:

   function loadAllImages(imgUrls) {
      var _load = function (imgUrl) {
        //创建img标签
        var img = new Image()
        img.src = imgUrl
        //跨域选项
        img.setAttribute('crossOrigin', 'Anonymous')
        return new Promise((resolve, reject) => {
          //文件加载完毕
          img.onload = function () {
            resolve(img)
          }
        })
      }
      var _loadAll = function (imgUrls) {
        var loadedImageUrls = []
        for (var i = 0, len = imgUrls.length; i < len; i++) {
          loadedImageUrls.push(_load(imgUrls[i]))
        }
        return loadedImageUrls
      }
      return Promise.all(_loadAll(imgUrls))
   }
   // 使用
   loadAllImages(imgArr).then(res => {
      console.log(res[0],res[1],...)
    })
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐