提交修改

This commit is contained in:
quyixiao 2025-03-18 22:22:03 +08:00
parent a12b1e5486
commit e98ed81598
13 changed files with 379 additions and 1 deletions

View File

@ -86,6 +86,13 @@
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>viapi20230117</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-openapi</artifactId>

View File

@ -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&params={%22JobId%22:%22309CC798-49B8-500E-9F73-28C55478464F%22}&lang=JAVA
*
*
* 查询异步任务结果 GetAsyncJobResult
*
*/
@Component
@Slf4j
public class AGetAsyncJobResultHandle extends AlibabaBaseHandle<AGetAsyncJobResultRequest, GetAsyncJobResultResponse> {
@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);
}
}

View File

@ -26,7 +26,7 @@ public class AGenerateSuperResolutionImageRequest extends ACommonTextRequest {
* 示例值:
* jpg
*/
private String outputFormat;
private String outputFormat = "jpg";
/**

View File

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

View File

@ -105,6 +105,32 @@ public class AlibabaClientConfig {
}
/**
* <b>description</b> :
* <p>使用AK&amp;SK初始化账号Client</p>
* @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);
}
/**
* <b>description</b> :
* <p>使用AK&amp;SK初始化账号Client</p>

View File

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

View File

@ -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<GenerateSuperResolutionImageResponse> 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());
}
}

View File

@ -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<ImageBlindPicWatermarkResponse> 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<ImageBlindCharacterWatermarkResponse> 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();
}
}

View File

@ -6,6 +6,7 @@ import lombok.Data;
@Data
public class GenerateDynamicImageReq extends CommonReq {

View File

@ -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 {
/**
* 图像放大倍数支持 1234默认为 2
*
* 示例值:
* 2
*/
private Integer scale = 4 ;
/**
* 输出图像的质量因子值越大质量越高取值范围[30,100]默认 95仅当outputFormat为jpg时有效
*
* 示例值:
* 95
*/
private Integer outputQuality = 95;
}

View File

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

View File

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

View File

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