From f06f1ef7fd7a1ec57ce20afdf29419685dfa2c2c Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Thu, 20 Mar 2025 12:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../imageseg/SegmentHDSkyController.java | 64 +++++++++++++++++ .../imageseg/SegmentHeadController.java | 69 +++++++++++++++++++ .../imageseg/SegmentSkinController.java | 56 +++++++++++++++ .../request/imagerecog/SegmentHDSkyReq.java | 8 +++ .../request/imagerecog/SegmentHeadReq.java | 20 ++++++ .../request/imagerecog/SegmentSkinReq.java | 8 +++ .../api/resp/imageseg/SegmentHDSkyResp.java | 10 +++ .../api/resp/imageseg/SegmentHeadResp.java | 49 +++++++++++++ .../api/resp/imageseg/SegmentSkinResp.java | 10 +++ 9 files changed, 294 insertions(+) create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHDSkyController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHeadController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentSkinController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHDSkyReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHeadReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentSkinReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHDSkyResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHeadResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentSkinResp.java diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHDSkyController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHDSkyController.java new file mode 100644 index 0000000..06b8d40 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHDSkyController.java @@ -0,0 +1,64 @@ +package com.heyu.api.controller.imageseg; + + +import com.aliyun.imageseg20191230.models.SegmentHDSkyResponse; +import com.aliyun.imageseg20191230.models.SegmentHDSkyResponseBody; +import com.heyu.api.alibaba.handle.imageseg.ASegmentHDSkyHandle; +import com.heyu.api.alibaba.request.imageseg.ASegmentHDSkyRequest; +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.imagerecog.SegmentHDSkyReq; +import com.heyu.api.resp.imageseg.SegmentHDSkyResp; +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/imageseg/2019-12-30/SegmentHDSky?tab=DOC + *

+ *

+ * 天空高清分割 SegmentHDSky + * + * 应用场景 + * 户外美照:当您在户外所拍摄的照片天空不够蔚蓝通透时,无论多复杂的场景,天空高清分割都可以将天空部分抠出,您可以换上美美的天空,让照片达到理想的视觉效果。 + * + * 特色优势 + * 支持更大分辨率:天空高清分割最大可以识别分辨率 5000×5000 像素的图片,更适合商业摄影的高水准后期处理。 + * 支持更多细节:天空高清分割可以得到更精细的图片,展现更多的细节。 + * + * + */ +@Slf4j +@RestController +@RequestMapping("/sky") +@NotIntercept +public class SegmentHDSkyController extends BaseController { + + + @Autowired + private ASegmentHDSkyHandle segmentHDSkyHandle; + + + @RequestMapping("/hd/segment") + @CacheResult + public R segment(SegmentHDSkyReq request) { + SegmentHDSkyResp resp = new SegmentHDSkyResp(); + ASegmentHDSkyRequest aSegmentHDSkyRequest = new ASegmentHDSkyRequest(); + aSegmentHDSkyRequest.setImageBase64(request.getImageBase64()); + aSegmentHDSkyRequest.setImageUrl(request.getImageUrl()); + + ApiR aR = segmentHDSkyHandle.handle(aSegmentHDSkyRequest); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + SegmentHDSkyResponseBody.SegmentHDSkyResponseBodyData responseBodyData = aR.getData().getBody().getData(); + resp.setImageURL(responseBodyData.getImageURL()); + return R.ok().setData(resp); + } + return R.error(aR.getErrorMsg()); + } + + +} \ No newline at end of file diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHeadController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHeadController.java new file mode 100644 index 0000000..cb434ae --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentHeadController.java @@ -0,0 +1,69 @@ +package com.heyu.api.controller.imageseg; + +import com.aliyun.imageseg20191230.models.SegmentHeadResponse; +import com.aliyun.imageseg20191230.models.SegmentHeadResponseBody; +import com.heyu.api.alibaba.handle.imageseg.ASegmentHeadHandle; +import com.heyu.api.alibaba.request.imageseg.ASegmentHeadRequest; +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.imagerecog.SegmentHeadReq; +import com.heyu.api.resp.imageseg.SegmentHeadResp; +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; + +@Slf4j +@RestController +@RequestMapping("/head") +@NotIntercept +public class SegmentHeadController extends BaseController { + + + @Autowired + private ASegmentHeadHandle segmentHeadHandle; + + + @RequestMapping("/segment") + @CacheResult + public R segment(SegmentHeadReq request) { + List respList = new ArrayList<>(); + ASegmentHeadRequest aSegmentHeadRequest = new ASegmentHeadRequest(); + + + aSegmentHeadRequest.setReturnType(request.getReturnType()); + aSegmentHeadRequest.setImageBase64(request.getImageBase64()); + aSegmentHeadRequest.setImageUrl(request.getImageUrl()); + + + ApiR aR = segmentHeadHandle.handle(aSegmentHeadRequest); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + SegmentHeadResponseBody.SegmentHeadResponseBodyData responseBodyData = aR.getData().getBody().getData(); + if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) { + for (SegmentHeadResponseBody.SegmentHeadResponseBodyDataElements element : responseBodyData.getElements()) { + SegmentHeadResp segmentHeadResp = new SegmentHeadResp(); + segmentHeadResp.setImageURL(element.getImageURL()); + segmentHeadResp.setY(element.getY()); + segmentHeadResp.setX(element.getX()); + segmentHeadResp.setWidth(element.getWidth()); + segmentHeadResp.setHeight(element.getHeight()); + respList.add(segmentHeadResp); + } + return R.ok().setData(respList); + } + + + } + + return R.error(aR.getErrorMsg()); + + + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentSkinController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentSkinController.java new file mode 100644 index 0000000..c43980e --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageseg/SegmentSkinController.java @@ -0,0 +1,56 @@ +package com.heyu.api.controller.imageseg; + + +import com.aliyun.imageseg20191230.models.SegmentSkinResponse; +import com.aliyun.imageseg20191230.models.SegmentSkinResponseBody; +import com.heyu.api.alibaba.handle.imageseg.ASegmentSkinHandle; +import com.heyu.api.alibaba.request.imageseg.ASegmentSkinRequest; +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.imagerecog.SegmentSkinReq; +import com.heyu.api.resp.imageseg.SegmentSkinResp; +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/imageseg/2019-12-30/SegmentSkin?tab=DEMO&lang=JAVA + *

+ * 皮肤分割 + *

+ * SegmentSkin + */ +@Slf4j +@RestController +@RequestMapping("/skin") +@NotIntercept +public class SegmentSkinController extends BaseController { + + + @Autowired + private ASegmentSkinHandle segmentSkinHandle; + + + @RequestMapping("/segment") + @CacheResult + public R segment(SegmentSkinReq request) { + SegmentSkinResp resp = new SegmentSkinResp(); + + ASegmentSkinRequest segmentSkinRequest = new ASegmentSkinRequest(); + segmentSkinRequest.setImageBase64(request.getImageBase64()); + segmentSkinRequest.setImageUrl(request.getImageUrl()); + + ApiR aR = segmentSkinHandle.handle(segmentSkinRequest); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + SegmentSkinResponseBody.SegmentSkinResponseBodyData responseBodyData = aR.getData().getBody().getData(); + resp.setImageURL(responseBodyData.getURL()); + return R.ok().setData(resp); + } + return R.error(aR.getErrorMsg()); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHDSkyReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHDSkyReq.java new file mode 100644 index 0000000..4d6386c --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHDSkyReq.java @@ -0,0 +1,8 @@ +package com.heyu.api.request.imagerecog; + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class SegmentHDSkyReq extends CommonReq { +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHeadReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHeadReq.java new file mode 100644 index 0000000..361d6a7 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentHeadReq.java @@ -0,0 +1,20 @@ +package com.heyu.api.request.imagerecog; + + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class SegmentHeadReq extends CommonReq { + + /** + * 指定返回的图像形式。 + *

+ * 如果设置为mask,则返回单通道 mask。 + * 如果不设置或者设置为任意非 mask 值,则返回四通道 PNG 图。 + * 示例值: + * mask + */ + private String returnType = "mask"; + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentSkinReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentSkinReq.java new file mode 100644 index 0000000..a25dd93 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/SegmentSkinReq.java @@ -0,0 +1,8 @@ +package com.heyu.api.request.imagerecog; + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class SegmentSkinReq extends CommonReq { +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHDSkyResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHDSkyResp.java new file mode 100644 index 0000000..0ea196d --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHDSkyResp.java @@ -0,0 +1,10 @@ +package com.heyu.api.resp.imageseg; + +import com.heyu.api.resp.CommonImageUrlResp; +import lombok.Data; + +@Data +public class SegmentHDSkyResp extends CommonImageUrlResp { + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHeadResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHeadResp.java new file mode 100644 index 0000000..be54cd7 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentHeadResp.java @@ -0,0 +1,49 @@ +package com.heyu.api.resp.imageseg; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class SegmentHeadResp extends BaseResp { + + /** + * 结果图的高度。 + * + * 示例值: + * 180 + */ + public Integer height; + + /** + * 结果图像 URL 地址。 抠图之后返回四通道 PNG 图,无压缩,图像体积会变大。 + * + * 说明 该 URL 地址为临时地址,有效期为 30 分钟,过期后将无法访问。若需要长时间或者永久保存文件,请在 30 分钟内访问 URL 地址,下载文件转存到自己的 OSS 或者其他存储空间。 + * 示例值: + * http://viapi-cn-shanghai-dha-segmenter.oss-cn-shanghai.aliyuncs.com/upload/result_headsegmenter/2020-6-2/invi_headsegmenter_015910809094981099086_TAamhR.png?Expires=1591082709&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRp****&Signature=xuUE%2FbYeB9LpR18VXawOVeutQU**** + */ + public String imageURL; + + /** + * 结果图的宽度。 + * + * 示例值: + * 116 + */ + public Integer width; + + /*** + * 左上角 x 坐标。 + * + * 示例值: + * 445 + */ + public Integer x; + + /** + * 左上角 y 坐标。 + * + * 示例值: + * 102 + */ + public Integer y; +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentSkinResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentSkinResp.java new file mode 100644 index 0000000..1571363 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageseg/SegmentSkinResp.java @@ -0,0 +1,10 @@ +package com.heyu.api.resp.imageseg; + + +import com.heyu.api.resp.CommonImageUrlResp; +import lombok.Data; + +@Data +public class SegmentSkinResp extends CommonImageUrlResp { + +}