提交修改
This commit is contained in:
parent
2d1a953206
commit
ece8503dd7
@ -4,12 +4,14 @@ package com.heyu.api.controller.face;
|
||||
import com.aliyun.facebody20191230.models.DeepfakeFaceResponse;
|
||||
import com.aliyun.facebody20191230.models.DeepfakeFaceResponseBody;
|
||||
import com.heyu.api.alibaba.handle.facebody.ADeepfakeFaceHandle;
|
||||
import com.heyu.api.alibaba.request.ACommonTextRequest;
|
||||
import com.heyu.api.alibaba.request.facebody.ADeepfakeFaceRequest;
|
||||
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.CommonReq;
|
||||
import com.heyu.api.request.face.DeepfakeFaceReq;
|
||||
import com.heyu.api.resp.face.DeepfakeFaceListResp;
|
||||
import com.heyu.api.resp.face.DeepfakeFaceResp;
|
||||
@ -66,8 +68,23 @@ public class DeepfakeFaceController extends BaseController {
|
||||
@RequestMapping("/deepfake")
|
||||
@CacheResult
|
||||
public R deepfake(DeepfakeFaceReq req) {
|
||||
|
||||
ADeepfakeFaceRequest aDeepfakeFaceRequest = new ADeepfakeFaceRequest();
|
||||
|
||||
List<ACommonTextRequest> urls = new ArrayList<>();
|
||||
|
||||
|
||||
for (CommonReq image : req.getImages()) {
|
||||
ACommonTextRequest textRequest = new ACommonTextRequest();
|
||||
textRequest.setImageBase64(image.getImageBase64());
|
||||
textRequest.setImageUrl(image.getImageUrl());
|
||||
urls.add(textRequest);
|
||||
|
||||
}
|
||||
aDeepfakeFaceRequest.setUrls(urls);
|
||||
|
||||
|
||||
|
||||
List<DeepfakeFaceResp> faces = new ArrayList<>();
|
||||
|
||||
ApiR<DeepfakeFaceResponse> aR = aDeepfakeFaceHandle.handle(aDeepfakeFaceRequest);
|
||||
|
||||
@ -50,10 +50,7 @@ public class FaceTidyupController extends BaseController {
|
||||
@RequestMapping("/tidyup")
|
||||
@CacheResult
|
||||
public R tidyup(FaceTidyupReq req) {
|
||||
|
||||
FaceTidyupResp faceTidyupResp = new FaceTidyupResp();
|
||||
|
||||
|
||||
AFaceTidyupRequest faceTidyupRequest = new AFaceTidyupRequest();
|
||||
faceTidyupRequest.setImageUrl(req.getImageUrl());
|
||||
faceTidyupRequest.setImageBase64(req.getImageBase64());
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
package com.heyu.api.controller.face;
|
||||
|
||||
|
||||
import com.aliyun.facebody20191230.models.GenerateHumanAnimeStyleResponse;
|
||||
import com.aliyun.facebody20191230.models.GenerateHumanAnimeStyleResponseBody;
|
||||
import com.heyu.api.alibaba.handle.facebody.AGenerateHumanAnimeStyleHandle;
|
||||
import com.heyu.api.alibaba.request.facebody.AGenerateHumanAnimeStyleRequest;
|
||||
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.resp.face.GenerateHumanAnimeStyleResp;
|
||||
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/GenerateHumanAnimeStyle?RegionId=cn-shanghai&tab=DOC&lang=JAVA
|
||||
*
|
||||
* 人物动漫化
|
||||
*
|
||||
* GenerateHumanAnimeStyle
|
||||
*
|
||||
* 人物动漫化能力可以将一张人物图像进行转换处理,生成卡通形象,并返回动漫化后的结果图像。
|
||||
*
|
||||
* 支持风格:国画(NEW)、港漫(NEW)、漫画风(NEW)、动画 3D(NEW)、日漫、3D、手绘、铅笔画和艺术特效 9 个风格。
|
||||
* 多人照片:可转换多人照片,一次可处理图片中最多 5 个人脸。
|
||||
*
|
||||
*
|
||||
*
|
||||
* 应用场景
|
||||
* 保护隐私:为保护图像中的人物隐私,将人物卡通化,可避免识别出原人物是谁。保留社交趣味度的同时避免过度娱乐化。
|
||||
* 社交娱乐:将自己的照片变成卡通人物,塑造可爱氛围,配上图文分享给朋友。
|
||||
* 特效应用:可用于打造个性头像以及趣味活动等场景。
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/human")
|
||||
@NotIntercept
|
||||
public class GenerateHumanAnimeStyleController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private AGenerateHumanAnimeStyleHandle aGenerateHumanAnimeStyleHandle;
|
||||
|
||||
|
||||
@RequestMapping("/animeStyle")
|
||||
@CacheResult
|
||||
public R animeStyle(AGenerateHumanAnimeStyleRequest req) {
|
||||
GenerateHumanAnimeStyleResp resp = new GenerateHumanAnimeStyleResp();
|
||||
ApiR<GenerateHumanAnimeStyleResponse> aR = aGenerateHumanAnimeStyleHandle.handle(req);
|
||||
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
|
||||
GenerateHumanAnimeStyleResponseBody.GenerateHumanAnimeStyleResponseBodyData responseBodyData = aR.getData().getBody().getData();
|
||||
resp.setImageURL(responseBodyData.getImageURL());
|
||||
return R.ok().setData(resp);
|
||||
}
|
||||
return R.error(aR.getErrorMsg());
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
package com.heyu.api.controller.face;
|
||||
|
||||
|
||||
import com.aliyun.facebody20191230.models.LiquifyFaceRequest;
|
||||
import com.aliyun.facebody20191230.models.LiquifyFaceResponse;
|
||||
import com.aliyun.facebody20191230.models.LiquifyFaceResponseBody;
|
||||
import com.heyu.api.alibaba.handle.facebody.ALiquifyFaceHandle;
|
||||
import com.heyu.api.alibaba.request.facebody.ALiquifyFaceRequest;
|
||||
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.LiquifyFaceReq;
|
||||
import com.heyu.api.resp.face.LiquifyFaceResp;
|
||||
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;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/face")
|
||||
@NotIntercept
|
||||
public class LiquifyFaceController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private ALiquifyFaceHandle aLiquifyFaceHandle;
|
||||
|
||||
|
||||
@RequestMapping("/liquify")
|
||||
@CacheResult
|
||||
public R liquify(LiquifyFaceReq req) {
|
||||
|
||||
LiquifyFaceResp resp = new LiquifyFaceResp();
|
||||
ALiquifyFaceRequest request = new ALiquifyFaceRequest();
|
||||
|
||||
request.setSlimDegree(req.getSlimDegree());
|
||||
request.setImageBase64(req.getImageBase64());
|
||||
request.setImageUrl(req.getImageUrl());
|
||||
|
||||
|
||||
ApiR<LiquifyFaceResponse> aR = aLiquifyFaceHandle.handle(request);
|
||||
|
||||
|
||||
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
|
||||
LiquifyFaceResponseBody.LiquifyFaceResponseBodyData responseBodyData = aR.getData().getBody().getData();
|
||||
|
||||
resp.setImageURL(responseBodyData.getImageURL());
|
||||
return R.ok().setData(resp);
|
||||
}
|
||||
return R.error(aR.getErrorMsg());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
package com.heyu.api.controller.face;
|
||||
|
||||
|
||||
import com.aliyun.facebody20191230.models.MonitorExaminationResponse;
|
||||
import com.aliyun.facebody20191230.models.MonitorExaminationResponseBody;
|
||||
import com.heyu.api.alibaba.handle.facebody.AMonitorExaminationHandle;
|
||||
import com.heyu.api.alibaba.request.facebody.AMonitorExaminationRequest;
|
||||
import com.heyu.api.controller.BaseController;
|
||||
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.MonitorExaminationScreenReq;
|
||||
import com.heyu.api.resp.face.MonitorExaminationScreenResp;
|
||||
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/MonitorExamination?tab=DOC¶ms={%22ImageURL%22:%22http%3A%2F%2Fworkbench-file-transfer.oss-cn-shanghai.aliyuncs.com%2Fuser-files%2F84753ea9-9809-4348-ac27-71437b89fee9-WechatIMG29.jpg%3FOSSAccessKeyId%3DLTAI5tRvL6vYdjKSfTFZ156m%26Expires%3D1742056256%26Signature%3Dl%252B1vglgYe%252BIN3wHE4Eror6e5tj4%253D%26response-content-disposition%3Dattachment%22,%22Type%22:1}&lang=JAVA
|
||||
*线上监考
|
||||
*
|
||||
* MonitorExamination
|
||||
*
|
||||
* 监控屏幕
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/monitor")
|
||||
@NotIntercept
|
||||
public class MonitorExaminationScreenController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private AMonitorExaminationHandle aMonitorExaminationHandle;
|
||||
|
||||
@RequestMapping("/screen")
|
||||
public R screen(MonitorExaminationScreenReq req) {
|
||||
|
||||
|
||||
MonitorExaminationScreenResp monitorExaminationScreenResp = new MonitorExaminationScreenResp();
|
||||
|
||||
AMonitorExaminationRequest aMonitorExaminationRequest = new AMonitorExaminationRequest();
|
||||
aMonitorExaminationRequest.setImageUrl(req.getImageUrl());
|
||||
aMonitorExaminationRequest.setImageBase64(req.getImageBase64());
|
||||
// 0:屏幕聊天工具检测
|
||||
aMonitorExaminationRequest.setType(0L);
|
||||
ApiR<MonitorExaminationResponse> aR = aMonitorExaminationHandle.handle(aMonitorExaminationRequest);
|
||||
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
|
||||
/***
|
||||
*
|
||||
{
|
||||
"RequestId": "A104C55A-BA6A-5FB6-B841-8DB5C11D2EA4",
|
||||
"Data": {
|
||||
"ChatScore": 1,
|
||||
"Threshold": 0.5
|
||||
}
|
||||
}
|
||||
*/
|
||||
MonitorExaminationResponseBody.MonitorExaminationResponseBodyData responseBodyData = aR.getData().getBody().getData();
|
||||
monitorExaminationScreenResp.setChatScore(responseBodyData.getChatScore());
|
||||
monitorExaminationScreenResp.setThreshold(responseBodyData.getThreshold());
|
||||
return R.error().setData(monitorExaminationScreenResp);
|
||||
}
|
||||
return R.error();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package com.heyu.api.request.face;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/***
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@Data
|
||||
public class GenerateHumanAnimeStyleReq {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package com.heyu.api.request.face;
|
||||
|
||||
import com.heyu.api.data.dto.BaseReq;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class HandPostureReq extends BaseReq {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
package com.heyu.api.request.face;
|
||||
|
||||
|
||||
import com.heyu.api.data.dto.BaseReq;
|
||||
import com.heyu.api.request.CommonReq;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LiquifyFaceReq extends CommonReq {
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 标准力度。取值范围为[0,2.0],默认为 1.0。数值越大,瘦脸效果越明显。
|
||||
*
|
||||
* 示例值:
|
||||
* 1.0
|
||||
* 取值 <= 2
|
||||
*/
|
||||
public Float slimDegree = 2.0f;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
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/MonitorExamination?tab=DOC¶ms={%22ImageURL%22:%22http%3A%2F%2Fworkbench-file-transfer.oss-cn-shanghai.aliyuncs.com%2Fuser-files%2F84753ea9-9809-4348-ac27-71437b89fee9-WechatIMG29.jpg%3FOSSAccessKeyId%3DLTAI5tRvL6vYdjKSfTFZ156m%26Expires%3D1742056256%26Signature%3Dl%252B1vglgYe%252BIN3wHE4Eror6e5tj4%253D%26response-content-disposition%3Dattachment%22,%22Type%22:1}&lang=JAVA
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Data
|
||||
public class MonitorExaminationScreenReq extends CommonReq {
|
||||
|
||||
|
||||
/***
|
||||
*
|
||||
ImageURL
|
||||
string
|
||||
图像 URL 地址。推荐使用上海地域的 OSS 链接,对于文件在本地或者非上海地域 OSS 链接的情况,请参见文件 URL 处理。
|
||||
|
||||
示例值:
|
||||
http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/MonitorExamination/1MonitorExamination1.jpg
|
||||
参考取值来源:
|
||||
MergeImageFace
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
package com.heyu.api.resp;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CommonImageUrlResp {
|
||||
|
||||
|
||||
/***
|
||||
* ImageURL
|
||||
* string
|
||||
* 瘦脸后图像的 URL 地址。展开详情
|
||||
*
|
||||
* 示例值:
|
||||
* http://vibktprfx-prod-prod-aic-gd-cn-shanghai.oss-cn-shanghai.aliyuncs.com/face-liquify/CA1C8937-B30C-15E6-B804-41C357BA413B_5eca_20210923-093411.jpg?Expires=1632391451&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRp****&Signature=46apJQVNBz%2FFzDLEYn2M1w9MKA****
|
||||
*/
|
||||
private String imageURL;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package com.heyu.api.resp.face;
|
||||
|
||||
|
||||
import com.heyu.api.data.dto.BaseResp;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class GenerateHumanAnimeStyleResp extends BaseResp {
|
||||
|
||||
/***
|
||||
* 人物卡通化结果图的 URL 地址。
|
||||
*
|
||||
* 说明 该 URL 地址为临时地址,有效期为 30 分钟,过期后将无法访问。若需要长时间或者永久保存文件,请在 30 分钟内访问 URL 地址,下载文件转存到自己的 OSS 或者其他存储空间。
|
||||
* 示例值:
|
||||
* https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/viapi-video/person_image_cartoonizer/2023-10-25/55798d04-0957-4ab1-accc-0e4d2d01a039/20231025092636774205_styleanime_n2vedxruht.jpg?Expires=1698283596&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSR****&Signature=ut2kn46Lz%2FRwqJ9jWJ0RBDut12****
|
||||
*/
|
||||
private String imageURL;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package com.heyu.api.resp.face;
|
||||
|
||||
|
||||
import com.heyu.api.data.dto.BaseResp;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class HandPostureResp extends BaseResp {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.heyu.api.resp.face;
|
||||
|
||||
|
||||
import com.heyu.api.data.dto.BaseResp;
|
||||
import com.heyu.api.resp.CommonImageUrlResp;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LiquifyFaceResp extends CommonImageUrlResp {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
package com.heyu.api.resp.face;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/***
|
||||
* https://next.api.aliyun.com/api/facebody/2019-12-30/MonitorExamination?tab=DOC¶ms={%22ImageURL%22:%22http%3A%2F%2Fworkbench-file-transfer.oss-cn-shanghai.aliyuncs.com%2Fuser-files%2F84753ea9-9809-4348-ac27-71437b89fee9-WechatIMG29.jpg%3FOSSAccessKeyId%3DLTAI5tRvL6vYdjKSfTFZ156m%26Expires%3D1742056256%26Signature%3Dl%252B1vglgYe%252BIN3wHE4Eror6e5tj4%253D%26response-content-disposition%3Dattachment%22,%22Type%22:1}&lang=JAVA
|
||||
*
|
||||
*线上监考
|
||||
*
|
||||
* MonitorExamination
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Data
|
||||
public class MonitorExaminationScreenResp {
|
||||
/***
|
||||
* 屏幕截图包含聊天工具的概率,取值范围(0,1)。 当请求参数 Type 取值为 0 时显示该参数。
|
||||
*
|
||||
* 示例值:
|
||||
* 0.28805577754974365
|
||||
*/
|
||||
private Float chatScore;
|
||||
|
||||
|
||||
/***
|
||||
* 建议阈值,取值范围(0,1)。当 ChatScore 大于阈值时,系统判定输入屏幕截图中包含聊天工具。 当请求参数 Type 取值为 0 时显示该参数。
|
||||
*
|
||||
* 示例值:
|
||||
* 0.5
|
||||
*/
|
||||
private Float threshold;
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user