diff --git a/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java b/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java index f30c465..067dc85 100644 --- a/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java +++ b/src/main/java/com/aida/lanecarford/controller/TryOnEffectController.java @@ -1,10 +1,13 @@ package com.aida.lanecarford.controller; import com.aida.lanecarford.common.ApiResponse; +import com.aida.lanecarford.common.response.ResultEnum; import com.aida.lanecarford.entity.Suggestion; import com.aida.lanecarford.entity.TryOnEffect; +import com.aida.lanecarford.exception.BusinessException; import com.aida.lanecarford.service.TryOnEffectService; import com.aida.lanecarford.vo.TryOnResultVo; +import io.netty.util.internal.StringUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -12,6 +15,7 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.annotation.Nullable; import java.util.List; /** @@ -88,4 +92,29 @@ public class TryOnEffectController { tryOnEffectService.addComment(suggestion); return ApiResponse.success(); } + + /** + * 首页默认图换脸演示 + */ + @Operation(summary = "首页点击换脸", description = "传入上传顾客照片后得到的ID") + @PostMapping("/reFace") + public ApiResponse reFace(@Nullable @RequestParam Long customerPhotoId, + @Nullable @RequestParam String prompt, + @Nullable @RequestParam String tryonUrl) { + if (customerPhotoId == null&& StringUtil.isNullOrEmpty(prompt)&& StringUtil.isNullOrEmpty(tryonUrl)){ + return ApiResponse.error("system error:Parameter null"); + } + String result = ""; + if (StringUtil.isNullOrEmpty(prompt)){ + //换脸 + result = tryOnEffectService.reFace(customerPhotoId); + }else { + if (StringUtil.isNullOrEmpty(tryonUrl)){ + return ApiResponse.error("system error:Parameter null"); + } + //根据提示词修改图像 + result = tryOnEffectService.generateUrl(prompt,tryonUrl); + } + return ApiResponse.success(result); + } } \ No newline at end of file diff --git a/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java b/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java index 8f530dc..89ee2e4 100644 --- a/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java +++ b/src/main/java/com/aida/lanecarford/service/TryOnEffectService.java @@ -40,4 +40,8 @@ public interface TryOnEffectService extends IService { * @return 是否添加成功 */ boolean addComment(Suggestion suggestion); + + String reFace(Long customerPhotoId); + + String generateUrl(String prompt, String tryonUrl); } \ No newline at end of file diff --git a/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java b/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java index e0db2af..7b26884 100644 --- a/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java +++ b/src/main/java/com/aida/lanecarford/service/impl/TryOnEffectServiceImpl.java @@ -206,6 +206,43 @@ public class TryOnEffectServiceImpl extends ServiceImpl imageUrls = new ArrayList<>(); + //默认展示图片 + imageUrls.add("lanecarford/try_on_result/default.jpg"); + + if (customerPhotoId != null) { + //根据id查到对应customerurl + CustomerPhoto customerPhoto = customerPhotoService.getById(customerPhotoId); + String customerPhotoUrl = customerPhoto.getPhotoUrl(); + if (customerPhotoUrl != null && !customerPhotoUrl.trim().isEmpty()) { + imageUrls.add(customerPhotoUrl); + } + } + String aiRreultlogicalUrl = callFaceSwapAPI(imageUrls); + String presignedUrl = minioUtil.getPresignedUrl(aiRreultlogicalUrl, CommonConstants.MINIO_PATH_TIMEOUT); + return presignedUrl; + } + + @Override + public String generateUrl(String prompt, String tryonUrl) { + int startIndex = tryonUrl.indexOf("lanecarford"); + String aiRreultlogicalUrl = ""; + if (startIndex != -1) { + // 找到jpg的位置并加上jpg的长度 + int endIndex = tryonUrl.indexOf(".jpg") + ".jpg".length(); + if (endIndex != -1) { + String resultString = tryonUrl.substring(startIndex, endIndex); + aiRreultlogicalUrl = AITryOnEffect(prompt, Arrays.asList(resultString)); + } else { + log.error("不是换脸后的url或者换脸结果有误"); + } + } + return minioUtil.convertToPresignedUrl(aiRreultlogicalUrl, CommonConstants.MINIO_PATH_TIMEOUT); + } + //目前用于customize your look页面点击finish后的显示 @Override public List getTryOnEffectsByStyleId(Long styleId) {