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