7 HTML中img标签的图片资源处理

html-css012

7 HTML中img标签的图片资源处理,第1张

url-loader处理了css中背景图片的引用的问题;html中直接使用img标签src加载图片的话,使用copy-webpack-plugin插件是将图片复制到dist目录下,因为没有被依赖,图片将不会被打包, html-withimg-loader 是另一种解决这个问题的方式,图片会被打包,而且路径也会处理妥当。

使用时,只需要在html中正常引用图片即可,webpack会找到对应的资源进行打包,并修改html中的引用路径

html-withimg-loader用来处理html中的img资源,并且其打包规则与url-loader一样;copy-webpack-plugin是从源拷贝到目标位置,如dist目录,变相实现img图片的引用,但并不是经过webpack的打包,更适用于音视频等媒体资源。

1.出现跨域的情况

这种情况只会出现在html2Canvas需生成的海报中的图片与当前环境不在同一个域下

2.解决方案

处理跨域,将接口返回的url处理为base64再进行处理或者后端直接返回base64

3.如何将url转换为base64?(利用canvas的toDataURL属性将url转为base64)

  function getImageBase64Data(imgSrc) {

    function getBase64(img) {

      let canvas = document.createElement("canvas")

      canvas.width = img.width

      canvas.height = img.height

      let ctx = canvas.getContext("2d")

      ctx.drawImage(img, 0, 0, canvas.width, canvas.height)

      let dataURL = canvas.toDataURL('image/jpeg')

      return dataURL

    }

    let baseUrl = new Promise(function (resolve, reject) {

      let image = new Image()

      image.crossOrigin = '*'// 图片处理跨域

      if (imgSrc.indexOf('data:image/jpegbase64') >-1) {

        image.src = imgSrc + '?v=' + Math.random()// 处理图片从缓存获取

      } else {

        image.src = imgSrc

      }

      image.onload = function () {

        let imageBase64Data = getBase64(image)

        resolve(imageBase64Data)

      }

    })

    return baseUrl

  }

4.使用html2Canvas生成海报

  const download = () => {

    let content = document.getElementById('promote-content')

    if (content) {

      html2canvas(content, { useCORS: true, allowTaint: true }).then(res => {

        const imgBase64 = res.toDataURL('image/jpeg')

        let link = document.createElement('a')

        link.style.display = 'none'

        link.href = imgBase64

        link.setAttribute('download', name + moment().format('YYYYMMDDHHmm'))

        document.body.appendChild(link)

        link.click()

        document.body.removeChild(link)

      })

    }

  }

1、点击打开html编辑器sublime_text,详细如下图

2、创建一个html文件,然后【创建一个img标签】,详细如下图

3、创建img标签以后,我们给img标签的属性【src添加一张图片的地址】,详细如下图

4、把html文件拖到浏览器中,然后就可以查看加入图片的效果了,详细如下图。