提交修改

This commit is contained in:
quyixiao 2025-03-16 15:43:32 +08:00
parent db5a25228e
commit 5f35645a0c
6 changed files with 282 additions and 0 deletions

View File

@ -0,0 +1,73 @@
package com.heyu.api.controller.face;
import com.aliyun.facebody20191230.models.RetouchSkinResponse;
import com.aliyun.facebody20191230.models.RetouchSkinResponseBody;
import com.heyu.api.alibaba.handle.facebody.ARetouchSkinHandle;
import com.heyu.api.alibaba.request.facebody.ARetouchSkinRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.face.RetouchSkinReq;
import com.heyu.api.resp.face.RetouchSkinResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/RetouchSkin?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*
* 智能美肤
*
* RetouchSkin
*
*
* 功能描述
* 智能美肤功能可实现输入一张人物图像自动对脸部以及全身皮肤进行美肤同时尽可能的保留皮肤质感功能支持情况如下
*
* 脸部美肤脸部区域匀肤去瑕疵比如痘印雀斑等
* 全身皮肤全身皮肤区域美白
* 多人照片支持不超过 10 人的多人图片处理
*
* 应用场景
* 专业修图可用于影楼电商图片直播等专业摄影场景利用智能美肤算法快速进行美肤修图提高工作效率
* 美颜拍摄用于娱乐生活等场景提高人物美观度
*
*/
@Slf4j
@RestController
@RequestMapping("/face")
@NotIntercept
public class RetouchSkinController extends BaseController {
@Autowired
private ARetouchSkinHandle aRetouchSkinHandle;
@RequestMapping("/skin")
@CacheResult
public R skin(RetouchSkinReq req) {
RetouchSkinResp resp = new RetouchSkinResp();
ARetouchSkinRequest request = new ARetouchSkinRequest();
request.setImageBase64(req.getImageBase64());
request.setImageUrl(req.getImageUrl());
request.setRetouchDegree(req.getRetouchDegree());
request.setWhiteningDegree(req.getWhiteningDegree());
ApiR<RetouchSkinResponse> aR = aRetouchSkinHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
RetouchSkinResponseBody.RetouchSkinResponseBodyData responseBodyData = aR.getData().getBody().getData();
resp.setImageURL(responseBodyData.getImageURL());
return R.ok().setData(resp);
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,93 @@
package com.heyu.api.controller.good;
import com.aliyun.goodstech20191230.models.ClassifyCommodityResponse;
import com.aliyun.goodstech20191230.models.ClassifyCommodityResponseBody;
import com.heyu.api.alibaba.handle.goodstech.AClassifyCommodityHandle;
import com.heyu.api.alibaba.request.goodstech.AClassifyCommodityRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.good.ClassifyCommodityReq;
import com.heyu.api.resp.good.ClassifyCommodityResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
*https://next.api.aliyun.com/api/goodstech/2019-12-30/ClassifyCommodity?lang=JAVA&RegionId=cn-shanghai&tab=DOC
*
*'
*
*
商品分类
ClassifyCommodity
*
* 接口说明
* 功能描述
* 商品分类能力可以识别图像中的商品分类返回商品类目置信度等信息目前已经支持服饰鞋包3C 数码家居用品等超过六千种类目分类
*
* 所属于的类目
*
*
* https://viapi-demo.oss-cn-shanghai.aliyuncs.com/doc/category.txt?spm=api-workbench.api_explorer.0.0.e67a1634kpvqtJ&file=category.txt
*
*
*/
@Slf4j
@RestController
@RequestMapping("/good")
@NotIntercept
public class ClassifyCommodityController extends BaseController {
@Autowired
private AClassifyCommodityHandle aClassifyCommodityHandle;
@RequestMapping("/classify")
@CacheResult
public R recognize(ClassifyCommodityReq req) {
List<ClassifyCommodityResp> resp = new ArrayList<>();
AClassifyCommodityRequest request = new AClassifyCommodityRequest();
request.setImageBase64(req.getImageBase64());
request.setImageUrl(req.getImageUrl());
ApiR<ClassifyCommodityResponse> aR = aClassifyCommodityHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
ClassifyCommodityResponseBody.ClassifyCommodityResponseBodyData responseBodyData = aR.getData().getBody().getData();
List<ClassifyCommodityResponseBody.ClassifyCommodityResponseBodyDataCategories> categories = responseBodyData.getCategories();
if (CollectionUtils.isNotEmpty(categories)) {
for (ClassifyCommodityResponseBody.ClassifyCommodityResponseBodyDataCategories category : categories) {
ClassifyCommodityResp classifyCommodityResp = new ClassifyCommodityResp();
classifyCommodityResp.setScore(category.getScore());
classifyCommodityResp.setCategoryName(category.getCategoryName());
classifyCommodityResp.setCategoryId(category.getCategoryId());
resp.add(classifyCommodityResp);
}
}
return R.ok().setData(resp);
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,36 @@
package com.heyu.api.request.face;
import com.heyu.api.request.CommonReq;
import lombok.Data;
/***
*
* https://next.api.aliyun.com/api/facebody/2019-12-30/RetouchSkin?tab=DOC&lang=JAVA&RegionId=cn-shanghai
* 智能美肤 RetouchSkin
*/
@Data
public class RetouchSkinReq extends CommonReq {
/**
* 磨皮力度取值范围为[0,1.5]默认为 1.0数值越大皮肤纹理越不明显
*
* 示例值:
* 1.0
*/
public Float retouchDegree = 1f;
/**
* 美白力度取值范围为[0,1.5]默认为 1.0数值越大皮肤越白
*
* 示例值:
* 1.0
*/
public Float whiteningDegree = 1f ;
}

View File

@ -0,0 +1,13 @@
package com.heyu.api.request.good;
import com.heyu.api.request.CommonReq;
import lombok.Data;
@Data
public class ClassifyCommodityReq extends CommonReq {
}

View File

@ -0,0 +1,18 @@
package com.heyu.api.resp.face;
import com.heyu.api.resp.CommonImageUrlResp;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/RetouchSkin?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*
*智能美肤 RetouchSkin
*/
@Data
public class RetouchSkinResp extends CommonImageUrlResp {
}

View File

@ -0,0 +1,49 @@
package com.heyu.api.resp.good;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/goodstech/2019-12-30/ClassifyCommodity?lang=JAVA&RegionId=cn-shanghai&tab=DOC
*
* 商品分类
*
* ClassifyCommodity
*
*
*/
@Data
public class ClassifyCommodityResp extends BaseResp {
/***
*
* Score
* number<float>
* 分类 ID 的匹配度大于 0 小于等于 1
*
* 示例值:
* 0.417248
*
*/
private Float score;
/***
* 类目 ID
*
* 说明 您可以在 category.txt 文件中查看该接口支持的类目 ID 和类目名称
* 示例值:
* 584
*/
private String categoryId;
/***
* 类目名称
*
* 说明 您可以在 category.txt 文件中查看该接口支持的类目 ID 和类目名称
* 示例值:
* 旁轴相机
*/
private String categoryName;
}