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

相关推荐
发现一只大呆瓜1 天前
深度解密 Rollup 插件开发:核心钩子函数全生命周期图鉴
前端·vite
java_nn1 天前
一文了解前端技术
前端
发现一只大呆瓜1 天前
深度解析 Rollup 配置与 Vite 生产构建流程
前端·vite
小码哥_常1 天前
安卓黑科技:让手机成为你的“跌倒保镖”
前端
小李子呢02111 天前
前端八股Vue---Vue2和Vue3的区别,set up的用法
前端·javascript·vue.js
m0_647057961 天前
Harness Engineering 实践指南
前端
JJay.1 天前
Android BLE 稳定连接的关键,不是扫描,而是 GATT 操作队列
android·服务器·前端
星空椰1 天前
JavaScript 进阶基础:函数、作用域与常用技巧总结
开发语言·前端·javascript
奔跑的呱呱牛1 天前
@giszhc/vue-page-motion:Vue3 路由动画怎么做才“丝滑”?(附在线示例)
前端·javascript·vue.js
ThridTianFuStreet小貂蝉1 天前
面试题4:讲一讲HTML5、CSS3新特性
前端·css3·html5