提交修改

This commit is contained in:
quyixiao 2025-03-20 12:48:46 +08:00
parent d57d910364
commit f06f1ef7fd
9 changed files with 294 additions and 0 deletions

View File

@ -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
* <p>
* <p>
* 天空高清分割 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<SegmentHDSkyResponse> 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());
}
}

View File

@ -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<SegmentHeadResp> respList = new ArrayList<>();
ASegmentHeadRequest aSegmentHeadRequest = new ASegmentHeadRequest();
aSegmentHeadRequest.setReturnType(request.getReturnType());
aSegmentHeadRequest.setImageBase64(request.getImageBase64());
aSegmentHeadRequest.setImageUrl(request.getImageUrl());
ApiR<SegmentHeadResponse> 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());
}
}

View File

@ -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
* <p>
* 皮肤分割
* <p>
* 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<SegmentSkinResponse> 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());
}
}

View File

@ -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 {
}

View File

@ -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 {
/**
* 指定返回的图像形式
* <p>
* 如果设置为mask则返回单通道 mask
* 如果不设置或者设置为任意非 mask 则返回四通道 PNG
* 示例值:
* mask
*/
private String returnType = "mask";
}

View File

@ -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 {
}

View File

@ -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 {
}

View File

@ -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;
}

View File

@ -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 {
}