首页换脸及后续页面接口

This commit is contained in:
litianxiang
2025-11-18 15:33:29 +08:00
parent e08517cdcc
commit 61faf40ca4
3 changed files with 70 additions and 0 deletions

View File

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

View File

@@ -40,4 +40,8 @@ public interface TryOnEffectService extends IService<TryOnEffect> {
* @return 是否添加成功
*/
boolean addComment(Suggestion suggestion);
String reFace(Long customerPhotoId);
String generateUrl(String prompt, String tryonUrl);
}

View File

@@ -206,6 +206,43 @@ public class TryOnEffectServiceImpl extends ServiceImpl<TryOnEffectMapper, TryOn
}
}
@Override
public String reFace(Long customerPhotoId) {
List<String> 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<TryOnResultVo> getTryOnEffectsByStyleId(Long styleId) {