From e98ed815987a78cef97a4874d731aacb8ecd4e13 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Tue, 18 Mar 2025 22:22:03 +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 --- api-third/pom.xml | 7 ++ .../imageenhan/AGetAsyncJobResultHandle.java | 46 ++++++++++ .../AGenerateSuperResolutionImageRequest.java | 2 +- .../imageenhan/AGetAsyncJobResultRequest.java | 21 +++++ .../heyu/api/config/AlibabaClientConfig.java | 26 ++++++ .../GenerateImageWithTextController.java | 43 +++++++++ ...enerateSuperResolutionImageController.java | 49 ++++++++++ ...mageBlindCharacterWatermarkController.java | 90 +++++++++++++++++++ .../imageenhan/GenerateDynamicImageReq.java | 1 + .../GenerateSuperResolutionImageReq.java | 33 +++++++ .../ImageBlindCharacterWatermarkReq.java | 39 ++++++++ .../GenerateSuperResolutionImageResp.java | 11 +++ .../ImageBlindCharacterWatermarkResp.java | 12 +++ 13 files changed, 379 insertions(+), 1 deletion(-) create mode 100644 api-third/src/main/java/com/heyu/api/alibaba/handle/imageenhan/AGetAsyncJobResultHandle.java create mode 100644 api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGetAsyncJobResultRequest.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateImageWithTextController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateSuperResolutionImageController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/ImageBlindCharacterWatermarkController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateSuperResolutionImageReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/ImageBlindCharacterWatermarkReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/GenerateSuperResolutionImageResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/ImageBlindCharacterWatermarkResp.java diff --git a/api-third/pom.xml b/api-third/pom.xml index 3cea997..2ae427a 100644 --- a/api-third/pom.xml +++ b/api-third/pom.xml @@ -86,6 +86,13 @@ 1.0.2 + + + com.aliyun + viapi20230117 + 2.0.1 + + com.aliyun tea-openapi diff --git a/api-third/src/main/java/com/heyu/api/alibaba/handle/imageenhan/AGetAsyncJobResultHandle.java b/api-third/src/main/java/com/heyu/api/alibaba/handle/imageenhan/AGetAsyncJobResultHandle.java new file mode 100644 index 0000000..0d87ecf --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/handle/imageenhan/AGetAsyncJobResultHandle.java @@ -0,0 +1,46 @@ +package com.heyu.api.alibaba.handle.imageenhan; + + +import com.aliyun.teautil.models.RuntimeOptions; +import com.aliyun.viapi20230117.models.GetAsyncJobResultRequest; +import com.aliyun.viapi20230117.models.GetAsyncJobResultResponse; +import com.heyu.api.alibaba.AlibabaBaseHandle; +import com.heyu.api.alibaba.request.imageenhan.AGetAsyncJobResultRequest; +import com.heyu.api.data.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * https://next.api.aliyun.com/api/viapi/2023-01-17/GetAsyncJobResult?RegionId=cn-shanghai&tab=DOC¶ms={%22JobId%22:%22309CC798-49B8-500E-9F73-28C55478464F%22}&lang=JAVA + * + * + * 查询异步任务结果 GetAsyncJobResult + * + */ +@Component +@Slf4j +public class AGetAsyncJobResultHandle extends AlibabaBaseHandle { + + + @Autowired + private com.aliyun.viapi20230117.Client client; + + @Override + public String check(AGetAsyncJobResultRequest p) { + if(StringUtils.isEmpty(p.getJobId())){ + + return "任务id不能为空"; + } + return null; + } + + @Override + public GetAsyncJobResultResponse run(AGetAsyncJobResultRequest ap, RuntimeOptions runtime) throws Exception { + GetAsyncJobResultRequest request = new GetAsyncJobResultRequest(); + request.setJobId(ap.getJobId()); + // 复制代码运行请自行打印 API 的返回值 + return client.getAsyncJobResultWithOptions(request, runtime); + + } +} diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGenerateSuperResolutionImageRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGenerateSuperResolutionImageRequest.java index a9d8ddf..b50f33b 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGenerateSuperResolutionImageRequest.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGenerateSuperResolutionImageRequest.java @@ -26,7 +26,7 @@ public class AGenerateSuperResolutionImageRequest extends ACommonTextRequest { * 示例值: * jpg */ - private String outputFormat; + private String outputFormat = "jpg"; /** diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGetAsyncJobResultRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGetAsyncJobResultRequest.java new file mode 100644 index 0000000..2b2f15a --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/imageenhan/AGetAsyncJobResultRequest.java @@ -0,0 +1,21 @@ +package com.heyu.api.alibaba.request.imageenhan; + + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class AGetAsyncJobResultRequest implements Serializable { + + /*** + *输入异步接口返回的 RequestId,输入后可以查询异步接口的真实请求结果。 + * + * 示例值: + * B6590005-5E7C-4A25-8F97-4479888D8271 + */ + private String jobId; + + + +} diff --git a/api-third/src/main/java/com/heyu/api/config/AlibabaClientConfig.java b/api-third/src/main/java/com/heyu/api/config/AlibabaClientConfig.java index b8f1805..932cdc0 100644 --- a/api-third/src/main/java/com/heyu/api/config/AlibabaClientConfig.java +++ b/api-third/src/main/java/com/heyu/api/config/AlibabaClientConfig.java @@ -105,6 +105,32 @@ public class AlibabaClientConfig { } + + + + /** + * description : + *

使用AK&SK初始化账号Client

+ * @return Client + * + * @throws Exception + */ + @Bean + public com.aliyun.viapi20230117.Client createViapi20230117Client(@Value("${aliyun.alibaba_cloud_access_key_id}") String alibaba_cloud_access_key_id, + @Value("${aliyun.alibaba_cloud_access_key_secret}") String alibaba_cloud_access_key_secret) throws Exception { + // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 + // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。 + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId(alibaba_cloud_access_key_id) + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret(alibaba_cloud_access_key_secret); + // Endpoint 请参考 https://api.aliyun.com/product/viapi + config.endpoint = "viapi.cn-shanghai.aliyuncs.com"; + return new com.aliyun.viapi20230117.Client(config); + } + + /** * description : *

使用AK&SK初始化账号Client

diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateImageWithTextController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateImageWithTextController.java new file mode 100644 index 0000000..36d2c7a --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateImageWithTextController.java @@ -0,0 +1,43 @@ +package com.heyu.api.controller.imageenhan; + + +import com.heyu.api.alibaba.handle.imageenhan.AGenerateImageWithTextHandle; +import com.heyu.api.alibaba.request.imageenhan.AGenerateImageWithTextRequest; +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.R; +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/imageenhan/2019-09-30/GenerateImageWithText?tab=DOC + * + * + * + */ +@Slf4j +@RestController +@RequestMapping("/image") +@NotIntercept +public class GenerateImageWithTextController extends BaseController { + + + @Autowired + private AGenerateImageWithTextHandle generateImageWithTextHandle; + + + + @RequestMapping("/xxx") + @CacheResult + public R extendStyle(AGenerateImageWithTextRequest req) { + + + + return R.ok(); + + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateSuperResolutionImageController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateSuperResolutionImageController.java new file mode 100644 index 0000000..f33bee0 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/GenerateSuperResolutionImageController.java @@ -0,0 +1,49 @@ +package com.heyu.api.controller.imageenhan; + +import com.aliyun.imageenhan20190930.models.GenerateSuperResolutionImageResponse; +import com.aliyun.imageenhan20190930.models.GenerateSuperResolutionImageResponseBody; +import com.heyu.api.alibaba.handle.imageenhan.AGenerateSuperResolutionImageHandle; +import com.heyu.api.alibaba.request.imageenhan.AGenerateSuperResolutionImageRequest; +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.imageenhan.GenerateSuperResolutionImageReq; +import com.heyu.api.resp.imageenhan.GenerateSuperResolutionImageResp; +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("/image") +@NotIntercept +public class GenerateSuperResolutionImageController extends BaseController { + + @Autowired + private AGenerateSuperResolutionImageHandle generateSuperResolutionImageHandle; + + @RequestMapping("/superScore") + @CacheResult + public R superScore(GenerateSuperResolutionImageReq req) { + + GenerateSuperResolutionImageResp resp = new GenerateSuperResolutionImageResp(); + + AGenerateSuperResolutionImageRequest request = new AGenerateSuperResolutionImageRequest(); + request.setImageUrl(req.getImageUrl()); + request.setImageBase64(req.getImageBase64()); + request.setScale(req.getScale()); + request.setOutputQuality(req.getOutputQuality()); + + ApiR aR = generateSuperResolutionImageHandle.handle(request); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + GenerateSuperResolutionImageResponseBody.GenerateSuperResolutionImageResponseBodyData responseBodyData = aR.getData().getBody().getData(); + resp.setImageURL(responseBodyData.getResultUrl()); + return R.ok().setData(resp); + } + return R.error(aR.getErrorMsg()); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/ImageBlindCharacterWatermarkController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/ImageBlindCharacterWatermarkController.java new file mode 100644 index 0000000..fb3ac6c --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/imageenhan/ImageBlindCharacterWatermarkController.java @@ -0,0 +1,90 @@ +package com.heyu.api.controller.imageenhan; + + +import com.aliyun.imageenhan20190930.models.ImageBlindCharacterWatermarkResponse; +import com.aliyun.imageenhan20190930.models.ImageBlindCharacterWatermarkResponseBody; +import com.aliyun.imageenhan20190930.models.ImageBlindPicWatermarkResponse; +import com.aliyun.imageenhan20190930.models.ImageBlindPicWatermarkResponseBody; +import com.heyu.api.alibaba.handle.imageenhan.AImageDecodeBlindCharacterWatermarkHandle; +import com.heyu.api.alibaba.handle.imageenhan.AImageEncodeBlindPicWatermarkHandle; +import com.heyu.api.alibaba.request.imageenhan.AImageDecodeBlindCharacterWatermarkRequest; +import com.heyu.api.alibaba.request.imageenhan.AImageEncodeBlindPicWatermarkRequest; +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.imageenhan.ImageBlindCharacterWatermarkReq; +import com.heyu.api.resp.imageenhan.ImageBlindCharacterWatermarkResp; +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("/image") +@NotIntercept +public class ImageBlindCharacterWatermarkController extends BaseController { + + @Autowired + private AImageEncodeBlindPicWatermarkHandle aImageEncodeBlindPicWatermarkHandle; + + @Autowired + private AImageDecodeBlindCharacterWatermarkHandle aImageDecodeBlindCharacterWatermarkHandle; + + @RequestMapping("/characterWatermark") + @CacheResult + public R characterWatermark(ImageBlindCharacterWatermarkReq req) { + ImageBlindCharacterWatermarkResp resp = new ImageBlindCharacterWatermarkResp(); + // 图片加密 + if ("encode".equals(req.getType())) { + AImageEncodeBlindPicWatermarkRequest aImageEncodeBlindPicWatermarkRequest = new AImageEncodeBlindPicWatermarkRequest(); + aImageEncodeBlindPicWatermarkRequest.setFunctionType("encode_pic_plus"); + aImageEncodeBlindPicWatermarkRequest.setWatermarkUrl(req.getImageUrl()); + aImageEncodeBlindPicWatermarkRequest.setWatermarkBase64(req.getImageBase64()); + aImageEncodeBlindPicWatermarkRequest.setQualityFactor(req.getQualityFactor()); + ApiR aR = aImageEncodeBlindPicWatermarkHandle.handle(aImageEncodeBlindPicWatermarkRequest); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + ImageBlindPicWatermarkResponseBody.ImageBlindPicWatermarkResponseBodyData responseBodyData = aR.getData().getBody().getData(); + resp.setImageURL(responseBodyData.getWatermarkImageURL()); + return R.ok().setData(resp); + } + return R.error(aR.getErrorMsg()); + + // 图片解密 + } else if ("decode".equals(req.getType())) { + AImageDecodeBlindCharacterWatermarkRequest aImageDecodeBlindCharacterWatermarkRequest = new AImageDecodeBlindCharacterWatermarkRequest(); + aImageDecodeBlindCharacterWatermarkRequest.setImageBase64(req.getImageBase64()); + aImageDecodeBlindCharacterWatermarkRequest.setImageUrl(req.getImageUrl()); + ApiR ar = aImageDecodeBlindCharacterWatermarkHandle.handle(aImageDecodeBlindCharacterWatermarkRequest); + if (ar.isSuccess() && isSuccessStatusCode(ar.getData().getStatusCode())) { + ImageBlindCharacterWatermarkResponseBody.ImageBlindCharacterWatermarkResponseBodyData responseBodyData = ar.getData().getBody().getData(); + resp.setImageURL(responseBodyData.getTextImageURL()); + return R.ok().setData(resp); + } + } + return R.error(); + } +} + + + + + + + + + + + + + + + + + + + + + diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateDynamicImageReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateDynamicImageReq.java index 4b96b2e..7376af6 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateDynamicImageReq.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateDynamicImageReq.java @@ -6,6 +6,7 @@ import lombok.Data; + @Data public class GenerateDynamicImageReq extends CommonReq { diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateSuperResolutionImageReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateSuperResolutionImageReq.java new file mode 100644 index 0000000..b436499 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/GenerateSuperResolutionImageReq.java @@ -0,0 +1,33 @@ +package com.heyu.api.request.imageenhan; + + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +/*** + * + */ +@Data +public class GenerateSuperResolutionImageReq extends CommonReq { + + + + /** + * 图像放大倍数。支持 1,2,3,4,默认为 2。 + * + * 示例值: + * 2 + */ + private Integer scale = 4 ; + + + + /** + * 输出图像的质量因子,值越大质量越高。取值范围[30,100],默认 95,仅当outputFormat为jpg时有效。 + * + * 示例值: + * 95 + */ + private Integer outputQuality = 95; + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/ImageBlindCharacterWatermarkReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/ImageBlindCharacterWatermarkReq.java new file mode 100644 index 0000000..d78e9f0 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/imageenhan/ImageBlindCharacterWatermarkReq.java @@ -0,0 +1,39 @@ +package com.heyu.api.request.imageenhan; + + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class ImageBlindCharacterWatermarkReq extends CommonReq { + + /** + * 指定调用功能。包括: + * + * encode 加水印 + * + * decode 解水印 + * + */ + private String type = "encode"; + + + /** + * 输出图像的质量大小。图像越大质量越高,取值范围 1~100,默认 100。 + * + * 说明 仅当 OutputFileType 为jpg时有效。 + * 示例值: + * 100 + */ + private Integer qualityFactor = 50; + + + /** + * 待加入的水印文字,字数不超过 16 个,超过会影响加水印效果。展开详情 + * + * 示例值: + * 阿里云版权所有一二三四五六七八九 + */ + private String text ; + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/GenerateSuperResolutionImageResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/GenerateSuperResolutionImageResp.java new file mode 100644 index 0000000..19cdef7 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/GenerateSuperResolutionImageResp.java @@ -0,0 +1,11 @@ +package com.heyu.api.resp.imageenhan; + +import com.heyu.api.resp.CommonImageUrlResp; +import lombok.Data; + +@Data +public class GenerateSuperResolutionImageResp extends CommonImageUrlResp { + + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/ImageBlindCharacterWatermarkResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/ImageBlindCharacterWatermarkResp.java new file mode 100644 index 0000000..fd9dfdb --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/imageenhan/ImageBlindCharacterWatermarkResp.java @@ -0,0 +1,12 @@ +package com.heyu.api.resp.imageenhan; + + +import com.heyu.api.resp.CommonImageUrlResp; +import lombok.Data; + +@Data +public class ImageBlindCharacterWatermarkResp extends CommonImageUrlResp { + + + +}