JS 通过 URL 获取图片并转成Base64格式

需求

输入一个图片的URL, 获取到图片的 Base64 格式数据

前提

npm install axios

代码

import axios from 'axios'

/**
 * 通过 url 获取图片并转成base64
 * @param {string} url
 * @returns {Promise<string>} - base64
 */
export async function imageToBase64(url) {
  // 获取图片的二进制数据
  const { data } = await axios.get(url, { responseType: 'blob' })
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.onloadend = (event) => {
      /// 转换结束回调
      try {
        // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD…9UoI0d6BOexAMoAdfWgzKBJQDTtQJPFAECCgB8UAzoUH/2Q==
        const fullImgBase64 = event.target.result ?? ''
        const imgBase64 = fullImgBase64?.split('base64,')[1] ?? ''
        resolve(imgBase64)
      } catch (e) {
        reject(e)
      }
    }
    // 读取 图片 二进制数据 转成 base64
    reader.readAsDataURL(data)
  })
}
posted @ 2022-12-23 18:41  暗恋桃埖源  阅读(3598)  评论(0编辑  收藏  举报