后台服务
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

213 рядки
7.0 KiB

  1. package com.iformall.sm;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.iformall.common.ErrorCode;
  5. import com.iformall.enums.EnumDigitalAvatarMouldType;
  6. import com.iformall.exception.MallinkException;
  7. import com.iformall.utils.Base64Util;
  8. import com.iformall.utils.HttpUtil;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.beans.factory.annotation.Value;
  12. import org.springframework.stereotype.Component;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. @Slf4j
  16. @Component
  17. public class AiDigitalAvatarHelper {
  18. private static String digital_avatar;
  19. @Value("${photo.digital_avatar}")
  20. public void setDigitalAvatar(String digital_avatar){
  21. this.digital_avatar = digital_avatar;
  22. }
  23. private static String digital_avatar_hy;
  24. @Value("${photo.digital_avatar_hy}")
  25. public void setDigitalAvatarHy(String digital_avatar_hy){
  26. this.digital_avatar_hy = digital_avatar_hy;
  27. }
  28. private static String callbackUrl;
  29. @Value("${photo.callbackUrl}")
  30. public void setCallbackUrl(String callbackUrl){
  31. this.callbackUrl = callbackUrl;
  32. }
  33. public static AiCheckPhotoResult checkPhoto(AiCheckPhotoParam param) {
  34. // String response = HttpUtil.doAiVideoPost("http://nas.pucao.cn:2005/dec_face", JSONObject.toJSONString(param));
  35. String response = HttpUtil.doAiVideoPost(digital_avatar + "/dec_face", JSONObject.toJSONString(param));
  36. log.info("图片人脸检测 end response:" + response);
  37. AiCheckPhotoResult result = new AiCheckPhotoResult();
  38. if (StringUtils.isBlank(response)) {
  39. result.setSuccess(false);
  40. result.setMsg("(MetaService)图片人脸检测失败,请稍后重试");
  41. return result;
  42. }
  43. JSONObject jsonObject = JSON.parseObject(response);
  44. JSONObject status = jsonObject.getJSONObject("status");
  45. Integer code = status.getInteger("code");
  46. String msg = status.getString("msg");
  47. if (code == null) {
  48. result.setSuccess(false);
  49. result.setMsg("(MetaService)图片人脸检测失败,请稍后重试");
  50. return result;
  51. }
  52. if (code.intValue() == 1000) {
  53. result.setCode(code);
  54. result.setSuccess(true);
  55. result.setMsg(msg);
  56. } else {
  57. result.setCode(code);
  58. result.setSuccess(false);
  59. result.setMsg(msg);
  60. }
  61. return result;
  62. }
  63. public static DigitalAvatarResult digitalAvatarPhoto(DigitalAvatarParam param,Long taskId) {
  64. param.setTask_id(taskId);
  65. // param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo");
  66. param.setCallback_url(callbackUrl + "/callback/create/photo");
  67. // log.info("生成照片start request:" + param.getBg_img());
  68. // String response = HttpUtil.doAiVideoPost("http://http://111.198.0.15:22200/make_face", JSONObject.toJSONString(param));
  69. String response = HttpUtil.doAiVideoPost(digital_avatar + "/make_face", JSONObject.toJSONString(param));
  70. log.info("生成照片end response:");
  71. DigitalAvatarResult result = new DigitalAvatarResult();
  72. if(StringUtils.isBlank(response)){
  73. result.setSuccess(false);
  74. result.setMsg("[metavatar]请求异常,请稍后重试");
  75. return result;
  76. }
  77. JSONObject jsonObject = JSON.parseObject(response);
  78. JSONObject status = jsonObject.getJSONObject("status");
  79. Integer code = status.getInteger("code");
  80. if(code == null){
  81. result.setSuccess(false);
  82. result.setMsg("[metavatar]请求异常,请稍后重试");
  83. return result;
  84. }
  85. if(code.intValue() == 2000){
  86. result.setSuccess(true);
  87. result.setMsg("success");
  88. JSONObject data = jsonObject.getJSONObject("data");
  89. List<String> imgList = new ArrayList<>();
  90. imgList.add(data.getString("img_0"));
  91. imgList.add(data.getString("img_1"));
  92. imgList.add(data.getString("img_2"));
  93. imgList.add(data.getString("img_3"));
  94. result.setImgList(imgList);
  95. }else{
  96. result.setSuccess(false);
  97. result.setMsg("[metavatar]"+status.getString("msg"));
  98. }
  99. return result;
  100. }
  101. public static SuperImgResult superImg(SuperImgParam param,Long taskId) {
  102. param.setTask_id(taskId);
  103. // param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo");
  104. param.setCallback_url(callbackUrl + "/callback/super/photo");
  105. // log.info("生成照片start request:" + param.getBg_img());
  106. String response = HttpUtil.doAiVideoPost(digital_avatar_hy + "/sr_img", JSONObject.toJSONString(param));
  107. log.info("照片超分end response:"+response);
  108. SuperImgResult result = new SuperImgResult();
  109. if(StringUtils.isBlank(response)){
  110. result.setSuccess(false);
  111. result.setMsg("[metavatar]请求异常,请稍后重试");
  112. return result;
  113. }
  114. JSONObject jsonObject = JSON.parseObject(response);
  115. JSONObject status = jsonObject.getJSONObject("status");
  116. Integer code = status.getInteger("code");
  117. if(code == null){
  118. result.setSuccess(false);
  119. result.setMsg("[metavatar]请求异常,请稍后重试");
  120. return result;
  121. }
  122. if(code.intValue() == 3000){
  123. result.setSuccess(true);
  124. result.setMsg("success");
  125. JSONObject data = jsonObject.getJSONObject("data");
  126. result.setImg(data.getString("img"));
  127. }else{
  128. result.setSuccess(false);
  129. result.setMsg("[metavatar]"+status.getString("msg"));
  130. }
  131. return result;
  132. }
  133. public static ShareImgResult createShareImg(ShareImgParam param) {
  134. // log.info("生成照片start request:" + param.getBg_img());
  135. String response = HttpUtil.doAiVideoPost(digital_avatar + "/logo_img", JSONObject.toJSONString(param));
  136. log.info("照片超分end response:"+response);
  137. ShareImgResult result = new ShareImgResult();
  138. if(StringUtils.isBlank(response)){
  139. result.setSuccess(false);
  140. result.setMsg("[metavatar]请求异常,请稍后重试");
  141. return result;
  142. }
  143. JSONObject jsonObject = JSON.parseObject(response);
  144. JSONObject status = jsonObject.getJSONObject("status");
  145. Integer code = status.getInteger("code");
  146. if(code == null){
  147. result.setSuccess(false);
  148. result.setMsg("[metavatar]请求异常,请稍后重试");
  149. return result;
  150. }
  151. if(code.intValue() == 4000){
  152. result.setSuccess(true);
  153. result.setMsg("success");
  154. JSONObject data = jsonObject.getJSONObject("data");
  155. result.setImg(data.getString("img"));
  156. }else{
  157. result.setSuccess(false);
  158. result.setMsg("[metavatar]"+status.getString("msg"));
  159. }
  160. return result;
  161. }
  162. public static void main(String[] args) {
  163. // AiCheckPhotoParam param = new AiCheckPhotoParam();
  164. // String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/personmould/16760216806604820_cSHoijDX_grace_1080.jpg");
  165. // param.setImg(img);
  166. // AiCheckPhotoResult result = AiDigitalAvatarHelper.checkPhoto(param);
  167. // System.out.println(result);
  168. DigitalAvatarParam param = new DigitalAvatarParam();
  169. param.setBg_img("素白");
  170. String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/capi/2023-08-31/91f69a7fdac146159d2408baaad26619.jpg?x-oss-process=image/resize,w_10000/quality,q_60");
  171. param.setImg_lift(img);
  172. param.setImg_middle("None");
  173. param.setImg_right("None");
  174. DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,100001l);
  175. System.out.println(result);
  176. }
  177. }