ソースを参照

feat(takephoto): 将主图转换为 Base64 编码的 Data URL

- 添加 fs 模块以读取文件内容
- 将主图文件读取为 Buffer 并转换为 Base64 编码的字符串- 根据文件扩展名确定 MIME 类型
- 构建并返回 Data URL 形式的主图路径
panqiuyao 5 ヶ月 前
コミット
f3ca945597
1 ファイル変更40 行追加0 行削除
  1. 40 0
      electron/controller/takephoto.js

+ 40 - 0
electron/controller/takephoto.js

@@ -1,4 +1,5 @@
 'use strict';
+const fs = require('fs');
 const { Controller } = require('ee-core');
 const  { getPhotoRecords,delectGoodsArts,createMainImage,getLastPhotoRecord } =  require('../api/takephoto');
 const errData = {
@@ -65,6 +66,45 @@ class takePhotoController extends Controller {
       const result = await createMainImage(params);
       console.log('result')
       console.log(result)
+      if(result.code === 0 && result.data?.main_out_path){
+        const filePath =  result.data?.main_out_path
+        const fileBuffer = fs.readFileSync(filePath);
+        const base64Image = fileBuffer.toString('base64');
+
+
+        // 获取文件扩展名
+        const extension = path.extname(filePath).toLowerCase().replace('.', '');
+
+        // 根据扩展名确定 MIME 类型
+        let mimeType = '';
+        switch (extension) {
+          case 'jpg':
+          case 'jpeg':
+            mimeType = 'image/jpeg';
+            break;
+          case 'png':
+            mimeType = 'image/png';
+            break;
+          case 'gif':
+            mimeType = 'image/gif';
+            break;
+          case 'webp':
+            mimeType = 'image/webp';
+            break;
+          case 'avif':
+            mimeType = 'image/avif';
+            break;
+          default:
+            mimeType = 'application/octet-stream'; // 默认 MIME 类型
+            break;
+        }
+
+        // 构建 data URL
+        const dataUrl = `data:${mimeType};base64,${base64Image}`;
+
+        result.data.main_out_path = dataUrl
+
+      }
       if(result.data)  return result.data
       return errData;
     } catch (error) {