### 接口描述 - 自动识别过度拉伸的图像,将图像内容恢复成正常比例 ### 请求地址 `https://api.jumdata.com/image/stretched/fix` ### 请求方式 - POST ### 请求格式 - x-www-form-urlencoded ### 请求参数 | 名称 | 类型 | 是否必填 | <div style="width:350px;">说明</div> | | --- | --- | --- | --- | | appId| String | 是 | 聚美智数分配的唯一标识 | | timestamp | Long | 是 | 当前时间戳(毫秒数) | | sign | String | 是 | 签名,见签名算法说明 | | productCode | String | 是 | 产品编号,固定值:image_stretched_fix_defogging | | base64 | String | 否 | 图像base64,base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M | | file | file | 否 | 图像文件,base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M | | url | String | 否 | 图像url,url链接长度不超过1024字节,请注意关闭URL防盗链.base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M | ### 签名算法 ``` java sign = sha256(appId + appSecret + timestamp) ``` 用聚美智数分配的 **appId**、聚美智数分配的 **appSecret**,当前时间戳 **timestamp**,按上述顺序拼接成字符串,再进行 **sha256** 哈希得到。如下: ``` java String appId = "xyzxy2121zxyz"; String timestamp = "1555378976238"; String appSecret = "efcefcef1121cefcefc1212121"; String str = appId + appSecret + timestamp; String sign = sha256(str); ``` ### 正确返回 ``` json { "code": 200,// 返回码,详见返回码说明 "msg": "成功",// 返回码对应描述 "taskNo": "466186169184611593557371",// 本次请求号 "charge": true, // 计费标志 "data": { "base64": "" ,// 生成后图像的base64字符串,不带图片头。 "url": ""// 生成后的图像的url,长期有效。建议用户自行下载保存,避免丢失。 } } ``` ### 错误返回 ``` json { "msg": "图像不能为空", "code": 400 } ``` ### 公共返回字段 | 字段名 | <div style="width:350px;">说明 </div> | | --- | --- | | code | 返回码,详见:返回码说明 | | msg | code对应的说明,详见:返回码说明| | taskNo | 本次请求号 | | charge | 计费标志 | | data | 详见正确返回体 | ### code 返回码说明 | code | <div style="width:350px;">说明</div> | | --- | --- | | 200 | 成功 (计费) | | 400 | 参数错误 | | 404 | 接口地址不正确 | | 500 | 服务商维护,请稍候再试 | | 601 | 接口未开通,请联系聚美智数服务商 | | 602 | 账号已停用 | | 603 | 余额不足,请充值 | | 604 | 接口已停用 | | 605 | 次数不足,请购买套餐 | | 606 | 调用超限,请稍候再试 | | 607 | ip不在白名单 | | 609 | 请求过于频繁,请稍候再试 | | 610 | 请求超时 | | 999 | 其他,以实际返回为准 |
https://api.jumdata.com/image/stretched/fix
名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appId | String | 是 | 聚美智数分配的唯一标识 |
timestamp | Long | 是 | 当前时间戳(毫秒数) |
sign | String | 是 | 签名,见签名算法说明 |
productCode | String | 是 | 产品编号,固定值:image_stretched_fix_defogging |
base64 | String | 否 | 图像base64,base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M |
file | file | 否 | 图像文件,base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M |
url | String | 否 | 图像url,url链接长度不超过1024字节,请注意关闭URL防盗链.base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M |
sign = sha256(appId + appSecret + timestamp)
用聚美智数分配的 appId、聚美智数分配的 appSecret,当前时间戳 timestamp,按上述顺序拼接成字符串,再进行 sha256 哈希得到。如下:
String appId = "xyzxy2121zxyz";
String timestamp = "1555378976238";
String appSecret = "efcefcef1121cefcefc1212121";
String str = appId + appSecret + timestamp;
String sign = sha256(str);
{
"code": 200,// 返回码,详见返回码说明
"msg": "成功",// 返回码对应描述
"taskNo": "466186169184611593557371",// 本次请求号
"charge": true, // 计费标志
"data": {
"base64": "" ,// 生成后图像的base64字符串,不带图片头。
"url": ""// 生成后的图像的url,长期有效。建议用户自行下载保存,避免丢失。
}
}
{
"msg": "图像不能为空",
"code": 400
}
字段名 | 说明 |
---|---|
code | 返回码,详见:返回码说明 |
msg | code对应的说明,详见:返回码说明 |
taskNo | 本次请求号 |
charge | 计费标志 |
data | 详见正确返回体 |
code | 说明 |
---|---|
200 | 成功 (计费) |
400 | 参数错误 |
404 | 接口地址不正确 |
500 | 服务商维护,请稍候再试 |
601 | 接口未开通,请联系聚美智数服务商 |
602 | 账号已停用 |
603 | 余额不足,请充值 |
604 | 接口已停用 |
605 | 次数不足,请购买套餐 |
606 | 调用超限,请稍候再试 |
607 | ip不在白名单 |
609 | 请求过于频繁,请稍候再试 |
610 | 请求超时 |
999 | 其他,以实际返回为准 |
https://api.jumdata.com/image/stretched/fix
名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appId | String | 是 | 聚美智数分配的唯一标识 |
timestamp | Long | 是 | 当前时间戳(毫秒数) |
sign | String | 是 | 签名,见签名算法说明 |
productCode | String | 是 | 产品编号,固定值:image_stretched_fix_defogging |
base64 | String | 否 | 图像base64,base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M |
file | file | 否 | 图像文件,base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M |
url | String | 否 | 图像url,url链接长度不超过1024字节,请注意关闭URL防盗链.base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M |
sign = sha256(appId + appSecret + timestamp)
用聚美智数分配的 appId、聚美智数分配的 appSecret,当前时间戳 timestamp,按上述顺序拼接成字符串,再进行 sha256 哈希得到。如下:
String appId = "xyzxy2121zxyz";
String timestamp = "1555378976238";
String appSecret = "efcefcef1121cefcefc1212121";
String str = appId + appSecret + timestamp;
String sign = sha256(str);
{
"code": 200,// 返回码,详见返回码说明
"msg": "成功",// 返回码对应描述
"taskNo": "466186169184611593557371",// 本次请求号
"charge": true, // 计费标志
"data": {
"base64": "" ,// 生成后图像的base64字符串,不带图片头。
"url": ""// 生成后的图像的url,长期有效。建议用户自行下载保存,避免丢失。
}
}
{
"msg": "图像不能为空",
"code": 400
}
字段名 | 说明 |
---|---|
code | 返回码,详见:返回码说明 |
msg | code对应的说明,详见:返回码说明 |
taskNo | 本次请求号 |
charge | 计费标志 |
data | 详见正确返回体 |
code | 说明 |
---|---|
200 | 成功 (计费) |
400 | 参数错误 |
404 | 接口地址不正确 |
500 | 服务商维护,请稍候再试 |
601 | 接口未开通,请联系聚美智数服务商 |
602 | 账号已停用 |
603 | 余额不足,请充值 |
604 | 接口已停用 |
605 | 次数不足,请购买套餐 |
606 | 调用超限,请稍候再试 |
607 | ip不在白名单 |
609 | 请求过于频繁,请稍候再试 |
610 | 请求超时 |
999 | 其他,以实际返回为准 |
``` Java import com.anq.core.utils.HttpUtil; import com.anq.core.utils.JsonUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.junit.Test; import java.util.HashMap; import java.util.Map; @Slf4j public class Examples { String appId = "聚美智数分配的appId"; String appSecret = "聚美智数分配的appSecret"; String url = "https://api.jumdata.com/image/stretched/fix"; @Test public void examples() { long timestamp = System.currentTimeMillis(); String sign = DigestUtils.sha256Hex(appId + appSecret + timestamp); // 生成sign Map<String, Object> params = new HashMap<String, Object>(); params.put("appId", appId); // 聚美智数分配的appId params.put("timestamp", timestamp); params.put("sign", sign); params.put("productCode", "image_stretched_fix_defogging");// 固定值 params.put("base64", ""); // 图像base64 base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M params.put("url", ""); // 图像url url链接长度不超过1024字节,请注意关闭URL防盗链.base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M // HttpUtil可从这里下载 https://file.jumdata.com/support/HttpUtil.java String resultJson = HttpUtil.postForm(url, null, params); log.info(resultJson); // JumeiOpenApiResponse 可从这里下载 https://file.jumdata.com/support/JumeiOpenApiResponse.java // JsonUtil可从这里下载 https://file.jumdata.com/support/JsonUtil.java JumeiOpenApiResponse jumeiOpenApiResponse = JsonUtil.toObject(resultJson, JumeiOpenApiResponse.class) if(jumeiOpenApiResponse.getCode() == 200){ //TODO }else{ //TODO } } } ```
import com.anq.core.utils.HttpUtil;
import com.anq.core.utils.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class Examples {
String appId = "聚美智数分配的appId";
String appSecret = "聚美智数分配的appSecret";
String url = "https://api.jumdata.com/image/stretched/fix";
@Test
public void examples() {
long timestamp = System.currentTimeMillis();
String sign = DigestUtils.sha256Hex(appId + appSecret + timestamp); // 生成sign
Map<String, Object> params = new HashMap<String, Object>();
params.put("appId", appId); // 聚美智数分配的appId
params.put("timestamp", timestamp);
params.put("sign", sign);
params.put("productCode", "image_stretched_fix_defogging");// 固定值
params.put("base64", ""); // 图像base64 base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M
params.put("url", ""); // 图像url url链接长度不超过1024字节,请注意关闭URL防盗链.base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M
// HttpUtil可从这里下载 https://file.jumdata.com/support/HttpUtil.java
String resultJson = HttpUtil.postForm(url, null, params);
log.info(resultJson);
// JumeiOpenApiResponse 可从这里下载 https://file.jumdata.com/support/JumeiOpenApiResponse.java
// JsonUtil可从这里下载 https://file.jumdata.com/support/JsonUtil.java
JumeiOpenApiResponse jumeiOpenApiResponse = JsonUtil.toObject(resultJson, JumeiOpenApiResponse.class)
if(jumeiOpenApiResponse.getCode() == 200){
//TODO
}else{
//TODO
}
}
}
import com.anq.core.utils.HttpUtil;
import com.anq.core.utils.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class Examples {
String appId = "聚美智数分配的appId";
String appSecret = "聚美智数分配的appSecret";
String url = "https://api.jumdata.com/image/stretched/fix";
@Test
public void examples() {
long timestamp = System.currentTimeMillis();
String sign = DigestUtils.sha256Hex(appId + appSecret + timestamp); // 生成sign
Map<String, Object> params = new HashMap<String, Object>();
params.put("appId", appId); // 聚美智数分配的appId
params.put("timestamp", timestamp);
params.put("sign", sign);
params.put("productCode", "image_stretched_fix_defogging");// 固定值
params.put("base64", ""); // 图像base64 base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M
params.put("url", ""); // 图像url url链接长度不超过1024字节,请注意关闭URL防盗链.base64、file、url 必须提供一个,优先级:base64 > file > url.最短边至少10px,最长边最大5000px,长宽比4:1以内,支持jpg/jpeg/png/bmp格式,base64编码后大小不超过10M
// HttpUtil可从这里下载 https://file.jumdata.com/support/HttpUtil.java
String resultJson = HttpUtil.postForm(url, null, params);
log.info(resultJson);
// JumeiOpenApiResponse 可从这里下载 https://file.jumdata.com/support/JumeiOpenApiResponse.java
// JsonUtil可从这里下载 https://file.jumdata.com/support/JsonUtil.java
JumeiOpenApiResponse jumeiOpenApiResponse = JsonUtil.toObject(resultJson, JumeiOpenApiResponse.class)
if(jumeiOpenApiResponse.getCode() == 200){
//TODO
}else{
//TODO
}
}
}