From 56c344545557f3f388351a15ea17e3399fdd8b92 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Mon, 12 May 2025 19:01:15 +0800 Subject: [PATCH] 'commit' --- .../dsideal/aiSupport/Test/JiMengImage.java | 4 +- .../dsideal/aiSupport/Test/JiMengVideo.java | 10 ++- .../{JiMengUtil.java => JiMeng/JmCommon.java} | 70 +++---------------- .../aiSupport/Util/JiMeng/JmImageUtil.java | 37 ++++++++++ .../Util/JiMeng/JmText2VideoUtil.java | 23 ++++++ 5 files changed, 81 insertions(+), 63 deletions(-) rename dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/{JiMengUtil.java => JiMeng/JmCommon.java} (72%) create mode 100644 dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmImageUtil.java create mode 100644 dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2VideoUtil.java diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengImage.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengImage.java index d29367cc..dd0e75a3 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengImage.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengImage.java @@ -1,9 +1,9 @@ package com.dsideal.aiSupport.Test; -import com.dsideal.aiSupport.Util.JiMengUtil; +import com.dsideal.aiSupport.Util.JiMeng.JmImageUtil; public class JiMengImage { public static void main(String[] args) throws Exception { String prompt="制作一张vlog视频封面。马卡龙配色,美女旅游照片+色块的拼贴画风格,主文案是“威海旅游vlog”,副文案是“特种兵一日游 被低估的旅游城市”,海报主体是一个穿着短裙、梳双马尾的少女,人物白色描边"; - JiMengUtil.generateImage(prompt,"d:/Temp/1.jpg"); + JmImageUtil.generateImage(prompt,"d:/Temp/1.jpg"); } } diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengVideo.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengVideo.java index 48a224c6..2de3263b 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengVideo.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/JiMengVideo.java @@ -1,10 +1,16 @@ package com.dsideal.aiSupport.Test; -import com.dsideal.aiSupport.Util.JiMengUtil; +import com.alibaba.fastjson.JSONObject; +import com.dsideal.aiSupport.Util.JiMeng.JmText2VideoUtil; public class JiMengVideo { + public static void getProgres(JSONObject jo){ + //{"code":10000,"data":{"task_id":"9346984050829536199"},"time_elapsed":"49.494514ms","message":"Success","request_id":"20250512185250C35CA218D7AD2B8B5B66","status":10000} + + } public static void main(String[] args) throws Exception { String prompt = "蓝色毛绒玩具在超市里拖地,结果拖把洒出好多五颜六色的粉末,接着把粉末洒向镜头前,镜头随之穿过粉末"; - //JiMengUtil.generateVideo(prompt); + JSONObject jo = JmText2VideoUtil.generateVideo(prompt); + System.out.println(jo); } } diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMengUtil.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmCommon.java similarity index 72% rename from dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMengUtil.java rename to dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmCommon.java index ebb10de5..80972f4e 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMengUtil.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmCommon.java @@ -1,7 +1,5 @@ -package com.dsideal.aiSupport.Util; +package com.dsideal.aiSupport.Util.JiMeng; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.dsideal.aiSupport.Plugin.YamlProp; import com.google.common.io.ByteStreams; import com.jfinal.kit.Prop; @@ -9,7 +7,6 @@ import org.apache.commons.codec.binary.Hex; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; -import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; @@ -21,21 +18,19 @@ import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.*; -public class JiMengUtil { - +public class JmCommon { // 请求域名 public static String host = "visual.volcengineapi.com"; public static String path = "/"; // 路径,不包含 Query// 请求接口信息 public static String service = "cv"; public static String region = "cn-north-1"; public static String schema = "https"; - public static String action = "CVProcess"; public static String version = "2022-08-31"; private static final BitSet URLENCODER = new BitSet(256); private static final String CONST_ENCODE = "0123456789ABCDEF"; public static final Charset UTF_8 = StandardCharsets.UTF_8; - private static final String ak; - private static final String sk; + protected static final String ak; + protected static final String sk; public static Prop PropKit; static { @@ -61,7 +56,6 @@ public class JiMengUtil { return myEnvVar; } - static { int i; for (i = 97; i <= 122; ++i) { @@ -79,9 +73,7 @@ public class JiMengUtil { URLENCODER.set('~'); } - - private static String doRequest(String method, Map queryList, byte[] body) throws Exception { - + protected static String doRequest(String method, Map queryList, byte[] body, String action) throws Exception { Date date = new Date(); if (body == null) { body = new byte[0]; @@ -152,7 +144,7 @@ public class JiMengUtil { return responseBody; } - private static String signStringEncoder(String source) { + protected static String signStringEncoder(String source) { if (source == null) { return null; } @@ -176,7 +168,7 @@ public class JiMengUtil { return buf.toString(); } - private static String hashSHA256(byte[] content) throws Exception { + protected static String hashSHA256(byte[] content) throws Exception { try { MessageDigest md = MessageDigest.getInstance("SHA-256"); return Hex.encodeHexString(md.digest(content)); @@ -185,7 +177,7 @@ public class JiMengUtil { } } - private static byte[] hmacSHA256(byte[] key, String content) throws Exception { + protected static byte[] hmacSHA256(byte[] key, String content) throws Exception { try { Mac mac = Mac.getInstance("HmacSHA256"); mac.init(new SecretKeySpec(key, "HmacSHA256")); @@ -195,50 +187,10 @@ public class JiMengUtil { } } - private static byte[] genSigningSecretKeyV4(String date, String region, String service) throws Exception { - byte[] kDate = hmacSHA256((JiMengUtil.sk).getBytes(), date); + protected static byte[] genSigningSecretKeyV4(String date, String region, String service) throws Exception { + byte[] kDate = hmacSHA256((JmCommon.sk).getBytes(), date); byte[] kRegion = hmacSHA256(kDate, region); byte[] kService = hmacSHA256(kRegion, service); return hmacSHA256(kService, "request"); } - - /** - * 生成图片 - * - * @param prompt 提示词 - * @throws Exception - */ - public static void generateImage(String prompt, String saveImgPath) throws Exception { - JSONObject req = new JSONObject(); - req.put("req_key", "jimeng_high_aes_general_v21_L"); - req.put("prompt", prompt); - String responseBody = doRequest("POST", new HashMap<>(), req.toString().getBytes()); - JSONObject jo = JSON.parseObject(responseBody); - String imgBase64 = jo.getJSONObject("data").getJSONArray("binary_data_base64").getFirst().toString(); - // 对 Base64 字符串进行解码 - Base64.Decoder decoder = Base64.getDecoder(); - byte[] bytes = decoder.decode(imgBase64); - - try (OutputStream os = new FileOutputStream(saveImgPath)) { // 使用-with try-resources 自动关闭资源 - os.write(bytes); - os.flush(); // 刷新缓冲区,确保数据写入文件 - System.out.println("文件保存成功!"); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - /** - * 生成视频 - * - * @param prompt 提示词 - * @throws Exception - */ - public static void generateVideo(String prompt) throws Exception { - JSONObject req = new JSONObject(); - req.put("req_key", "jimeng_vgfm_t2v_l20"); - req.put("prompt", prompt); - doRequest("POST", new HashMap<>(), req.toString().getBytes()); - } -} +} \ No newline at end of file diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmImageUtil.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmImageUtil.java new file mode 100644 index 00000000..3586f499 --- /dev/null +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmImageUtil.java @@ -0,0 +1,37 @@ +package com.dsideal.aiSupport.Util.JiMeng; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.util.*; + +public class JmImageUtil extends JmCommon { + + /** + * 生成图片 + * + * @param prompt 提示词 + * @throws Exception + */ + public static void generateImage(String prompt, String saveImgPath) throws Exception { + JSONObject req = new JSONObject(); + req.put("req_key", "jimeng_high_aes_general_v21_L"); + req.put("prompt", prompt); + String responseBody = doRequest("POST", new HashMap<>(), req.toString().getBytes(), "CVProcess"); + JSONObject jo = JSON.parseObject(responseBody); + String imgBase64 = jo.getJSONObject("data").getJSONArray("binary_data_base64").getFirst().toString(); + // 对 Base64 字符串进行解码 + Base64.Decoder decoder = Base64.getDecoder(); + byte[] bytes = decoder.decode(imgBase64); + + try (OutputStream os = new FileOutputStream(saveImgPath)) { // 使用-with try-resources 自动关闭资源 + os.write(bytes); + os.flush(); // 刷新缓冲区,确保数据写入文件 + System.out.println("文件保存成功!"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2VideoUtil.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2VideoUtil.java new file mode 100644 index 00000000..07b273d2 --- /dev/null +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2VideoUtil.java @@ -0,0 +1,23 @@ +package com.dsideal.aiSupport.Util.JiMeng; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.util.*; + +public class JmText2VideoUtil extends JmCommon { + + /** + * 生成视频 + * + * @param prompt 提示词 + * @throws Exception + */ + public static JSONObject generateVideo(String prompt) throws Exception { + JSONObject req = new JSONObject(); + req.put("req_key", "jimeng_vgfm_t2v_l20"); + req.put("prompt", prompt); + String responseBody = doRequest("POST", new HashMap<>(), req.toString().getBytes(), "CVSync2AsyncSubmitTask"); + return JSON.parseObject(responseBody); + } +}