node把本地图片转base64

javascript 复制代码
function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString('base64'),
      mimeType,
    },
  }
}

     let imageParts = []
      if (Array.isArray(visionImgList) && visionImgList.length > 0) {
        visionImgList = visionImgList
          .filter((item) => item.url)
          .map((item) => item.url)
        let list = visionImgList
        let promiseListForDownload = list.map((item) => {
          return new Promise((resolve) => {
            let sdUrl = item
            let urlObj = new URL(sdUrl)
            const client = urlObj.protocol == 'https:' ? https : http
            client.get(sdUrl, async (httpRes) => {
              let fileName = Date.now()
              let endIndex =
                sdUrl.indexOf('?') > 0 ? sdUrl.indexOf('?') : sdUrl.length
              sdUrl = sdUrl.slice(0, endIndex)
              let pointIndex = sdUrl.lastIndexOf('.')
              let mimeType = sdUrl.slice(pointIndex + 1) //PNG - 图片/png JPEG - image/jpeg WEBP - image/webp HEIC - 图片/heic HEIF - image/heif
              let urlCdnArr = sdUrl.split('/')

              let filePath = `/temp/ai/geminiImages/${fileName}-${
                urlCdnArr[urlCdnArr.length - 1]
              }`
              let stream = fs.createWriteStream(filePath)
              httpRes.pipe(stream)
              stream.on('finish', async () => {
                resolve({ filePath, mimeType: `image/${mimeType}` })
              })
            })
          })
        })

        let localFileList = await Promise.all(promiseListForDownload)
        imageParts = localFileList.map((item) => {
          return fileToGenerativePart(item.filePath, item.mimeType)
        })

我开发的chatgpt网站:

https://chat.xutongbao.top

相关推荐
lyc2333333 分钟前
鸿蒙多子类型输入法:3步实现输入模式自由切换🔤
前端
Danta3 分钟前
从 0 开始学习 Three.js(2)😁
前端·javascript·three.js
凌辰揽月4 分钟前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
Dignity_呱5 分钟前
vue3对组件通信做了哪些升级?
前端·vue.js·面试
植物系青年7 分钟前
基于 Lowcode Engine 的低码平台“编码效率”提升实践
前端·低代码
就是我8 分钟前
开发“业务组件库”,该从哪里入手?
前端·javascript·面试
Mintopia10 分钟前
在数字画布上雕刻曲线:NURBS 的奇幻冒险之旅
前端·javascript·计算机图形学
Hacker_seagull14 分钟前
Chrome安装代理插件ZeroOmega(保姆级别)
前端·chrome
石小石Orz18 分钟前
因为没有使用路由懒加载,产生了一个难以寻找的bug
前端
Mintopia18 分钟前
Three.js 力导向图:让数据跳起优雅的华尔兹
前端·javascript·three.js