浏览代码

fix 混图增加上传图片

zwhui 2 年之前
父节点
当前提交
c8bf92ff9d

+ 23 - 1
netflix-service/src/main/java/com/cyksj/service/midjourney/impl/MidjourneyServiceImpl.java

@@ -30,6 +30,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * @author zwhui
@@ -95,7 +96,12 @@ public class MidjourneyServiceImpl implements MidjourneyService {
             param.put("dimensions", dimensions);
         }
         SubmitResult result = submit(user.getMode(),"blend", param);
-        return saveConversation(user.getId(), user.getMode(), Long.parseLong(result.getResult()),result.getProperties(),"BLEND", StringUtils.EMPTY);
+        String finalPrompt = "%s --ar %s --style raw --s 250";
+        List<String> picList = uploadBase64Pic(base64Array);
+        String pics = picList.stream().map(pic -> "<" + pic + ">").collect(Collectors.joining(" "));
+        Map<String, Object> properties = result.getProperties();
+        properties.put("finalPrompt", String.format(finalPrompt, pics,dimensions.getValue()));
+        return saveConversation(user.getId(), user.getMode(), Long.parseLong(result.getResult()),properties,"BLEND", StringUtils.EMPTY);
     }
 
     @Override
@@ -266,6 +272,22 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         JSONObject result = JSONUtil.parseObj(HttpUtil.post("https://files.liuliangbang.vip/pic/ups", paramMap));
         return result.getJSONObject("value").getJSONArray("saved").getJSONObject(0).getJSONObject("info").getStr("cdnUrl");
     }
+
+    private static List<String> uploadBase64Pic(List<String> base64Array) throws IOException {
+        List<String> list = new ArrayList<>();
+        for (String base64 : base64Array) {
+            byte[] body = Base64.getDecoder().decode(base64);
+            Path tempFile = Files.createTempFile(UUID.randomUUID().toString(), ".jpg");
+            try (FileImageOutputStream imageOutput = new FileImageOutputStream(tempFile.toFile())) {
+                imageOutput.write(body, 0, body.length);
+            }
+            Map<String, Object> paramMap = new HashMap<>();
+            paramMap.put("file", tempFile.toFile());
+            JSONObject result = JSONUtil.parseObj(HttpUtil.post("https://files.liuliangbang.vip/pic/ups", paramMap));
+            list.add(result.getJSONObject("value").getJSONArray("saved").getJSONObject(0).getJSONObject("info").getStr("cdnUrl"));
+        }
+        return list;
+    }
     public JSONArray listByIds(Integer mode,List<Long> ids) throws Exception {
         Map<String, Object> param = MapUtil.builder(new HashMap<String, Object>()).put("ids", ids).build();
         String body = HttpRequest.post((mode == 1 ? FAST_HOST : RELAX_HOST) + "/mj/task/list-by-condition").header("Authorization", FAST_TOKEN).body(Jsons.toJson(param)).execute().body();