使用 axios 下载图片,然后转成 base64 格式

使用 axios 下载图片,然后转成 base64 格式

import axios from 'axios'

async function getImageBase64FromUrl(url : string) : Promise<string> {

    const res = await axios({
      method: 'GET',
      url: url,
      responseType: 'arraybuffer',   // 注意这里的返回值类型为:arraybuffer
    })

    return new Promise((resolve) => {
      // Buffer 只能在 nodejs 端使用。
      const imgBase64 = Buffer.from(res.data, 'binary').toString('base64')
      const imageUrl = `data:image/png;base64,${imgBase64}`
      resolve(imageUrl )
    })


}

浏览器端可以使用: FileReader

/*
 * 浏览器端可以使用: FileReader 
**/

axios
  .get(imageUrl, { responseType:"blob" })
  .then(function (response) {
        var reader = new window.FileReader();
        reader.readAsDataURL(response.data); 
        reader.onload = function() {
            var imageDataUrl = reader.result;
            imageElement.setAttribute("src", imageDataUrl);
        }
    });

// ----------

 var reader = new FileReader()
 reader.onloadend = function () {
    resolve(reader.result)
 }
 reader.readAsDataURL(xmlHttpReq.response as Blob)




posted @ 2022-10-26 16:31  炎黄子孙,龙的传人  阅读(477)  评论(0编辑  收藏  举报