main
HuangHai 2 months ago
parent 4f4701f153
commit 56c3445455

@ -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");
}
}

@ -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);
}
}

@ -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<String, String> queryList, byte[] body) throws Exception {
protected static String doRequest(String method, Map<String, String> 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());
}
}
}

@ -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();
}
}
}

@ -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);
}
}
Loading…
Cancel
Save