diff --git a/api-third/src/main/java/com/heyu/api/alibaba/handle/imagerecog/ARecognizeImageColorHandle.java b/api-third/src/main/java/com/heyu/api/alibaba/handle/imagerecog/ARecognizeImageColorHandle.java index 97cb07d..43c200e 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/handle/imagerecog/ARecognizeImageColorHandle.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/handle/imagerecog/ARecognizeImageColorHandle.java @@ -12,11 +12,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** - * https://next.api.aliyun.com/api/imagerecog/2019-09-30/ClassifyingRubbish?tab=DEMO&lang=JAVA + * https://next.api.aliyun.com/api/imagerecog/2019-09-30/RecognizeImageColor *

- * 垃圾分类识别 + * 颜色识别 *

- * ClassifyingRubbish + * RecognizelmageColor */ @Component @Slf4j diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/imagerecog/ARecognizeImageStyleRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/imagerecog/ARecognizeImageStyleRequest.java index 27c6b79..f85394e 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/imagerecog/ARecognizeImageStyleRequest.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/imagerecog/ARecognizeImageStyleRequest.java @@ -9,4 +9,7 @@ import lombok.Data; */ @Data public class ARecognizeImageStyleRequest extends ACommonTextRequest { + + + } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeImageColorController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeImageColorController.java new file mode 100644 index 0000000..66af80c --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeImageColorController.java @@ -0,0 +1,80 @@ +package com.heyu.api.controller.imagerecog; + + +import com.aliyun.imagerecog20190930.models.RecognizeImageColorResponse; +import com.aliyun.imagerecog20190930.models.RecognizeImageColorResponseBody; +import com.heyu.api.alibaba.handle.imagerecog.ARecognizeImageColorHandle; +import com.heyu.api.alibaba.request.imagerecog.ARecognizeImageColorRequest; +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.RecognizeImageColorReq; +import com.heyu.api.resp.imagerecog.RecognizeImageColorResp; +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/imagerecog/2019-09-30/RecognizeImageColor?tab=DOC + * 颜色识别 + * + * + * RecognizelmageColor + * + * 功能描述 + * 颜色识别能力可以对输入图片的颜色信息进行分析,输出颜色值(RGB 形式和 HEX 格式)与对应的占比信息。 + * + */ +@Slf4j +@RestController +@RequestMapping("/image/color") +@NotIntercept +public class RecognizeImageColorController extends BaseController { + + + @Autowired + private ARecognizeImageColorHandle arRecognizeImageColorHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(RecognizeImageColorReq req) { + + List respList = new ArrayList<>(); + ARecognizeImageColorRequest request = new ARecognizeImageColorRequest(); + + request.setImageUrl(req.getImageUrl()); + request.setColorCount(req.getColorCount()); + request.setImageBase64(req.getImageBase64()); + + + ApiR aR = arRecognizeImageColorHandle.handle(request); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + RecognizeImageColorResponseBody.RecognizeImageColorResponseBodyData responseBodyData = aR.getData().getBody().getData(); + if (CollectionUtils.isNotEmpty(responseBodyData.getColorTemplateList())) { + for (RecognizeImageColorResponseBody.RecognizeImageColorResponseBodyDataColorTemplateList templateList : responseBodyData.getColorTemplateList()) { + + RecognizeImageColorResp resp = new RecognizeImageColorResp(); + resp.setColor(templateList.getColor()); + resp.setPercentage(templateList.getPercentage()); + resp.setLabel(templateList.getLabel()); + respList.add(resp); + } + } + + return R.ok().setData(respList); + + } + + return R.error(aR.getErrorMsg()); + + + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeImageStyleController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeImageStyleController.java new file mode 100644 index 0000000..684d670 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeImageStyleController.java @@ -0,0 +1,52 @@ +package com.heyu.api.controller.imagerecog; + + +import com.aliyun.imagerecog20190930.models.RecognizeImageStyleResponse; +import com.aliyun.imagerecog20190930.models.RecognizeImageStyleResponseBody; +import com.heyu.api.alibaba.handle.imagerecog.ARecognizeImageStyleHandle; +import com.heyu.api.alibaba.request.imagerecog.ARecognizeImageStyleRequest; +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.RecognizeImageStyleReq; +import com.heyu.api.resp.imagerecog.RecognizeImageStyleResp; +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; + +@Slf4j +@RestController +@RequestMapping("/image/style") +@NotIntercept +public class RecognizeImageStyleController extends BaseController { + + + @Autowired + private ARecognizeImageStyleHandle arRecognizeImageStyleHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(RecognizeImageStyleReq req) { + RecognizeImageStyleResp resp = new RecognizeImageStyleResp(); + ARecognizeImageStyleRequest request = new ARecognizeImageStyleRequest(); + + request.setImageBase64(req.getImageBase64()); + request.setImageUrl(req.getImageUrl()); + + ApiR aR = arRecognizeImageStyleHandle.handle(request); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + RecognizeImageStyleResponseBody.RecognizeImageStyleResponseBodyData responseBodyData = aR.getData().getBody().getData(); + if (CollectionUtils.isNotEmpty(responseBodyData.getStyles())) { + resp.setStyleList(responseBodyData.getStyles()); + return R.ok().setData(resp); + } + + } + return R.error(aR.getErrorMsg()); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeSceneController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeSceneController.java new file mode 100644 index 0000000..50bf353 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imagerecog/RecognizeSceneController.java @@ -0,0 +1,80 @@ +package com.heyu.api.controller.imagerecog; + + +import com.aliyun.imagerecog20190930.models.RecognizeSceneResponse; +import com.aliyun.imagerecog20190930.models.RecognizeSceneResponseBody; +import com.heyu.api.alibaba.handle.imagerecog.ARecognizeSceneHandle; +import com.heyu.api.alibaba.request.imagerecog.ARecognizeSceneRequest; +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.RecognizeSceneReq; +import com.heyu.api.resp.imagerecog.RecognizeSceneResp; +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/imagerecog/2019-09-30/RecognizeScene + *场景识别 + * + * RecognizeScene + * + * 功能描述 + * 场景识别能力可以识别图像中的场景环境,支持数十种常见场景,包括: + * + * 人物、动物、狗、猫、鱼、鸟、花、草地、蔬菜、植物、水果、餐厅、美食、聚餐、烧烤 + * 物品、手机、显示器 + * 室外、广场、建筑、游乐场、户外、公路、小河、山峰、夜景、天空、旅行、日出、日落、树林、沙滩、沙漠、海滨、湖、露营、街景、街道、运动、运动场、婚礼、演出 + * 地铁、汽车、火车、自行车、船、飞机 + * 其他 + * + * + * + */ +@Slf4j +@RestController +@RequestMapping("/scene") +@NotIntercept +public class RecognizeSceneController extends BaseController { + + @Autowired + private ARecognizeSceneHandle arRecognizeSceneHandle; + + @RequestMapping("/recognize") + @CacheResult + public R recognize(RecognizeSceneReq req) { + List respList = new ArrayList<>(); + ARecognizeSceneRequest request = new ARecognizeSceneRequest(); + request.setImageBase64(req.getImageBase64()); + request.setImageUrl(req.getImageUrl()); + + ApiR aR = arRecognizeSceneHandle.handle(request); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + RecognizeSceneResponseBody.RecognizeSceneResponseBodyData responseBodyData = aR.getData().getBody().getData(); + if (CollectionUtils.isNotEmpty(responseBodyData.getTags())) { + for (RecognizeSceneResponseBody.RecognizeSceneResponseBodyDataTags tag : responseBodyData.getTags()) { + RecognizeSceneResp resp = new RecognizeSceneResp(); + resp.setConfidence(tag.getConfidence()); + resp.setValue(tag.getValue()); + respList.add(resp); + } + return R.ok().setData(respList); + } + + } + return R.error(aR.getErrorMsg()); + + + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeImageColorReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeImageColorReq.java new file mode 100644 index 0000000..98220f1 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeImageColorReq.java @@ -0,0 +1,22 @@ +package com.heyu.api.request.imagerecog; + + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class RecognizeImageColorReq extends CommonReq { + + + /** + * 期望的色板输出数量。取值范围 1~10,默认值为 3。 + * + * 示例值: + * 5 + * 正则: + * ^\d+$ + * 取值 <= 16 + */ + private Integer colorCount = 3; + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeImageStyleReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeImageStyleReq.java new file mode 100644 index 0000000..056e600 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeImageStyleReq.java @@ -0,0 +1,8 @@ +package com.heyu.api.request.imagerecog; + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class RecognizeImageStyleReq extends CommonReq { +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeSceneReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeSceneReq.java new file mode 100644 index 0000000..5bcc8e9 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imagerecog/RecognizeSceneReq.java @@ -0,0 +1,11 @@ +package com.heyu.api.request.imagerecog; + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class RecognizeSceneReq extends CommonReq { + + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeImageColorResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeImageColorResp.java new file mode 100644 index 0000000..e15693b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeImageColorResp.java @@ -0,0 +1,35 @@ +package com.heyu.api.resp.imagerecog; + + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class RecognizeImageColorResp extends BaseResp { + + + /*** + * RGB 颜色值(16 进制),例如:291A18。 + * + * 示例值: + * 270315 + */ + public String color; + + + /*** + * 颜色标签,共 11 种:black(黑色)、white(白色)、gray(灰色)、red(红色)、orange(橙色)、yellow(黄色)、green(绿色)、cyan(青色)、blue(蓝色)、purple(紫色)、magenta(紫红色)。 + * + * 示例值: + * red + */ + public String label; + + /*** + * 当前颜色标签所占比例,取值范围[0.0, 1.0]。 + * + * 示例值: + * 0.459527 + */ + public Float percentage; +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeImageStyleResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeImageStyleResp.java new file mode 100644 index 0000000..3e4c25d --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeImageStyleResp.java @@ -0,0 +1,21 @@ +package com.heyu.api.resp.imagerecog; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +import java.util.List; + +@Data +public class RecognizeImageStyleResp extends BaseResp { + + + /*** + * 功能描述 + * 风格识别能力可以对输入图像的风格类型进行分析,识别可能的风格与语意标签。可以识别的风格包括:chinese(中国风) + * 、watercolor(水彩)、cartoon(卡通)、real(实景)、standard(标准)、simple(简洁)、lively(活泼)、 + * colourful(多彩)、luxury(豪华)、technology(科技)、morbidezza(柔美)、strong(硬朗)、 + * simpleelegant(素雅)、coolcold(高冷)、promotion(促销)、protrude(突出)。 + * 关于该接口功能的示例图如下: 视觉风格为中国风,语义风格为促销 + */ + private List styleList; +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeSceneResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeSceneResp.java new file mode 100644 index 0000000..874bf7d --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imagerecog/RecognizeSceneResp.java @@ -0,0 +1,27 @@ +package com.heyu.api.resp.imagerecog; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class RecognizeSceneResp extends BaseResp { + + + /*** + * 标签名称的置信度。取值范围 0~100。 + * + * 示例值: + * 79 + * + */ + public Float confidence; + + + /*** + * 标签名称。 + * + * 示例值: + * 船 + */ + public String value; +}