API Path
/aipaas/lm/v1/jibuli/imgToImg
请求协议
HTTPS
请求方法
POST
请求头部 :
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | application/json | [string] | application/json | application/json | ||
| X-APP-ID | 是 | 买家中心-已购能力-【X-APP-ID】 | [string] | ||||
| Device-Uuid | 否 | 设备管理-设备uuid | [string] | ||||
| Authorization | 是 | 鉴权信息 | [string] |
请求参数 Json
Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| seq_id | 用户请求的唯一标识。str类型,不能重复。 | 是 | [string] | |||
| task_id | 任务类型。int类型,必须等于20027。 | 是 | [int] | |||
| image | 用户图片输入。List[str]类型,长度必须为1。内容需 要和image_type保持一致。 |
是 | [array] | |||
| image_type | 输入图像类别。枚举类型,0-url,1-base64编码 | 是 | [int] | 0:冬日暖阳,1:薰衣草,2:宇航员,3:梅花汉服,4:圣诞(室外),5:圣诞(室内),6:烟花盛典,7:街景机甲,8:喜迎新春,9:龙年大吉,10:新春闪耀,11:东北往事,12:时代风华 | ||
| callback_url | 接收回调结果的url地址,return_mode为0是必传 | 否 | [string] | |||
| return_mode | 结果返回模式,0:push,1:pull,默认为0。push模式即提供callback_url接收最终结果回调;pull模型即通过大模型异步调用结果回查接口查询最终调用结果,接口文档详见开发指南下的大模型异步调用结果回查。 | 否 | [int] |
响应内容 :
返回结果
> 成功 (200)
> Json
> Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| code | 状态响应码。参考错误编码规范 | 是 | [string] | |||
| msg | 调用结果描述。参考错误编码规范 | 是 | [string] | |||
| requestId | 请求ID,用于调用查询大模型生成结果信息接口 | 否 | [string] |
成功示例[Mock API] :
{
"code": "10000",
"msg": "调用成功",
"requestId": "test001"
}
失败示例[Mock API] :
{
"code": "10903",
"msg": "失败原因"
}
将用户上传的图片转换为吉卜力风格,支持任意图片。
| 日期 | 版本 | 修订内容 |
|---|---|---|
| 2025-05-22 | v1.6.5 | 无 |
服务接口调用时需要严格遵循服务鉴权规则,服务调用鉴权规则请参见:开发指南 - 签名认证方式。
通用状态码请参见【状态码】中的【网关认证】,其余状态码如下:
| 返回编码 | 返回信息 | 说明 |
|---|---|---|
| 10000 | 服务执行成功 | 服务执行成功 |
| 10100 | 算法模型异常 | 算法模型调用失败(超时) |
| 10101 | 结果图片不合规 | 算法生成图片存在不合规元素,不进行输出 |
| 10200 | 图片下载异常 | 图片 url 访问失败,下载异常 |
| 10201 | 图片格式错误 | 下载后的图片格式不对,非图片(除 jpeg, png, jpg) |
| 10202 | 算法推理异常 | 算法推理失败,生成图片失败 |
| 10203 | 图片上传异常 | 结果图片上传 ceph/minIO 失败 |
| 10204 | 图片分辨率过小 | 图片分辨率过小,无法正常生成结果 |
| 10205 | 图片检测到多个人脸 | 图片检测到多个人脸 |
| 10206 | 图片面部较小 | 图片检测到脸部过小 |
| 10207 | 人脸仅检测到侧脸 | 人脸只检测到侧脸 |
| 10208 | 图片不存在人脸 | 图片不存在人脸 |
| 10209 | 图片姿态不符合要求 | 人脸朝向不符合要求 |
| 10210 | 图片面部存在遮挡 | 人脸存在遮挡情况 |
| 10211 | 图片面部模糊 | 图片人脸过于模糊 |
| 10212 | 图片非全身照 | 图片中的人物非全身照,可能存在人体部分被遮挡情况 |
| 10213 | 图片脸部不完整 | 图片脸部不完整 |
| 10214 | 图片宽高比不符 | 图生视频任务中图片宽高比不符 |
| 10215 | 输入提示词违禁 | 10005对输入提示词有限制 |
| 10216 | 实例数量与位置框数量不一致 | 10008实例数量与位置框数量不一致 |
| 10217 | 位置框坐标未归一化 | 10008位置框坐标未归一化 |
| 10218 | 位置框中存在坐标列表不为4个的 | 10008位置框中存在坐标列表不为4个的 |
| 10219 | 图片不符合算法要求 | 20017输入图像不是方图 |
| 10220 | 自定义图片不符合算法要求 | 20017输入自定义背景图不是方图 |
| 10221 | 图片分辨率过大 | 20016-号百三节:图片分辨率过大,图片面积超出10000px*10000px |
| 10301 | 服务必填参数缺失 | 服务必填参数缺失或未填写 |
| 10304 | 服务入参错误 | 部分参数存在限制说明,会针对入参做校验返回;例如传入的 style 风格不在范围内,prompt 入参不合规等情况 |
| 10400 | 视频下载异常 | 视频url访问失败,下载异常 |
| 10401 | 任务繁忙 | 30001生成视频任务排队超出限制数量 |
| 10402 | 视频格式错误 | 算法不支持的视频,视频文件损坏无法读取等 |
| 10403 | 视频分辨率不符 | 视频分辨率不符合算法要求 |
| 10404 | 视频时长不符 | 视频时长不在算法处理范围内 |
| 10405 | 视频人物未检测 | 视频未检测到人物 |
| 10406 | 视频首图获取错误 | 视频截取首帧图异常 |
| 10500 | 设备未授权 | |
| 10600 | 音频下载异常 | 音频url访问失败 |
| 10601 | 音频格式错误 | 非音频文件,音频文件损坏无法正常保存等情况 |
| 10903 | 服务执行失败 | 服务执行失败(可能存在组件连接异常、算法模型程序运行异常等情况,导致服务无法正常运行) |
{
"seq_id": "test_20026",
"task_id": 20027,
"image": [
"http://0.0.0.0:11111/a.jpg"
],
"image_type": 0,
"callback_url": "http://localhost:7777/callback"
}
接口回告结果信息详见同级目录下的【回告数据结构】。
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/** 主类,用于发起HTTP请求并处理响应 */
public class Example {
public static void main(String[] args) {
example();
}
/**
* 方法中使用到的 JSONUtil、HttpRequest、HttpResponse均来自Hutool工具类。
* 具体maven依赖为:
*
* cn.hutool
* hutool-all
* 5.8.29
*
*/
public static void example() {
try {
String url = "算法调用地址";
// 设置请求头
Map headers = new HashMap();
//调用鉴权
headers.put("Content-Type", "application/json");
headers.put("X-APP-ID", "yourAppId");
headers.put("Authorization", "yourAuthorization");
// 创建请求对象
Map request = new HashMap();
request.put("seq_id", "test001");
request.put("task_id", "20027");
request.put("image", Arrays.asList("yourImageUrl"));
request.put("image_type", 0);
request.put("callback_url", "yourCallbackUrl");
// 将请求对象转换为JsonNode
String requestString = JSONUtil.toJsonStr(request);
// 发起HTTP请求
HttpResponse response =
HttpRequest.post(url)
.headerMap(headers, true)
.body(requestString)
.execute();
// 输出响应结果
System.out.println(response.body());
} catch (Exception e) {
e.printStackTrace();
}
}
}
import json
import hashlib
import hmac
import time
import re
import urllib.parse
import requests
import warnings
from datetime import datetime
import logging
# 配置日志,设置日志级别为INFO,并指定日志格式
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 配置环境变量
X_APP_ID = "yourAppId"
AUTHORIZATION = "yourAuthorization"
# URL 和请求数据
url = "算法调用地址" # 请求的URL
request_data = {
"seq_id": "test001",
"task_id": 20027,
"image": ["http://xxx"],
"image_type": 0,
"callback_url": "http://callbackUrl"
}
# 构建请求头
headers = {
"Content-Type": "application/json",
"X-APP-ID": X_APP_ID,
"Authorization": AUTHORIZATION
}
# 忽略未验证的HTTPS请求警告
warnings.filterwarnings("ignore", message="Unverified HTTPS request")
def timeSimple(timestamp):
# 将时间戳转换为HH:MM:SS格式的时间字符串
dt_object = datetime.fromtimestamp(timestamp)
formatted_time = dt_object.strftime("%H:%M:%S")
return formatted_time
def send_request(url):
try:
start_time = time.time()
logging.info(f"请求路径: {url}")
logging.info(f"开始发送: {timeSimple(start_time)}")
with requests.post(
url, json=request_data, headers=headers, stream=True, verify=False
) as response:
first_packet_time = None
if response.status_code == 200:
logging.info(f"接受到返回: {timeSimple(time.time())}")
for chunk in response.iter_content(chunk_size=1024):
if chunk:
if first_packet_time is None:
first_packet_time = time.time()
logging.info(
f"Received chunk: {timeSimple(time.time())} {chunk.decode('utf-8')}"
)
end_time = time.time()
logging.info(f"Time to first byte (TTFB): {first_packet_time - start_time:.3f} seconds")
logging.info(f"Request completed in {end_time - start_time:.3f} seconds")
else:
logging.error(f"Request failed with status code {response.status_code}")
except Exception as e:
logging.error(f"An error occurred: {e}")
# 发送请求
send_request(url)
logging.info(f"headers = {headers}")