后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

221 line
7.3 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. public static String digital_avatar;
  19. @Value("${suimang.digital_avatar}")
  20. public void setDigitalAvatar(String digital_avatar){
  21. this.digital_avatar = digital_avatar;
  22. }
  23. public static String digital_avatar_hy;
  24. @Value("${suimang.digital_avatar_hy}")
  25. public void setDigitalAvatarHy(String digital_avatar_hy){
  26. this.digital_avatar_hy = digital_avatar_hy;
  27. }
  28. public static String callbackUrl;
  29. @Value("${suimang.callbackUrl}")
  30. public void setCallbackUrl(String callbackUrl){
  31. this.callbackUrl = callbackUrl;
  32. }
  33. //智象小程序人脸检测
  34. public static AiCheckPhotoResult checkPhoto(AiCheckPhotoParam param) {
  35. // String response = HttpUtil.doAiVideoPost("http://nas.pucao.cn:2005/dec_face", JSONObject.toJSONString(param));
  36. String response = HttpUtil.doAiVideoPost(digital_avatar + "/dec_face", JSONObject.toJSONString(param));
  37. log.info("图片人脸检测 end response:" + response);
  38. AiCheckPhotoResult result = new AiCheckPhotoResult();
  39. if (StringUtils.isBlank(response)) {
  40. result.setSuccess(false);
  41. result.setMsg("(MetaService)图片人脸检测失败,请稍后重试");
  42. return result;
  43. }
  44. JSONObject jsonObject = JSON.parseObject(response);
  45. JSONObject status = jsonObject.getJSONObject("status");
  46. Integer code = status.getInteger("code");
  47. String msg = status.getString("msg");
  48. if (code == null) {
  49. result.setSuccess(false);
  50. result.setMsg("(MetaService)图片人脸检测失败,请稍后重试");
  51. return result;
  52. }
  53. if (code.intValue() == 1000) {
  54. result.setCode(code);
  55. result.setSuccess(true);
  56. result.setMsg(msg);
  57. } else {
  58. result.setCode(code);
  59. result.setSuccess(false);
  60. result.setMsg(msg);
  61. }
  62. return result;
  63. }
  64. //智象小程序生成
  65. public static DigitalAvatarResult digitalAvatarPhoto(DigitalAvatarParam param,Long taskId) {
  66. param.setTask_id(taskId);
  67. // param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo");
  68. param.setCallback_url(callbackUrl + "/callback/create/photo");
  69. // log.info("生成照片start request:" + param.getBg_img());
  70. // String response = HttpUtil.doAiVideoPost("http://http://111.198.0.15:22200/make_face", JSONObject.toJSONString(param));
  71. String response = HttpUtil.doAiVideoPost(digital_avatar + "/make_face", JSONObject.toJSONString(param));
  72. log.info("生成照片end response:");
  73. DigitalAvatarResult result = new DigitalAvatarResult();
  74. if(StringUtils.isBlank(response)){
  75. result.setSuccess(false);
  76. result.setMsg("[metavatar]请求异常,请稍后重试");
  77. return result;
  78. }
  79. JSONObject jsonObject = JSON.parseObject(response);
  80. JSONObject status = jsonObject.getJSONObject("status");
  81. Integer code = status.getInteger("code");
  82. if(code == null){
  83. result.setSuccess(false);
  84. result.setMsg("[metavatar]请求异常,请稍后重试");
  85. return result;
  86. }
  87. if(code.intValue() == 2000){
  88. result.setSuccess(true);
  89. result.setMsg("success");
  90. JSONObject data = jsonObject.getJSONObject("data");
  91. List<String> imgList = new ArrayList<>();
  92. imgList.add(data.getString("fusion_img1"));
  93. imgList.add(data.getString("roop_img1"));
  94. imgList.add(data.getString("fusion_img2"));
  95. imgList.add(data.getString("roop_img2"));
  96. imgList.add(data.getString("fusion_img3"));
  97. imgList.add(data.getString("roop_img3"));
  98. imgList.add(data.getString("fusion_img4"));
  99. imgList.add(data.getString("roop_img4"));
  100. result.setImgList(imgList);
  101. }else{
  102. result.setSuccess(false);
  103. result.setMsg("[metavatar]"+status.getString("msg"));
  104. }
  105. return result;
  106. }
  107. public static SuperImgResult superImg(SuperImgParam param,Long taskId) {
  108. param.setTask_id(taskId);
  109. // param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo");
  110. param.setCallback_url(callbackUrl + "/callback/super/photo");
  111. // log.info("生成照片start request:" + param.getBg_img());
  112. String response = HttpUtil.doAiVideoPost(digital_avatar_hy + "/sr_img", JSONObject.toJSONString(param));
  113. log.info("照片超分end response:");
  114. SuperImgResult result = new SuperImgResult();
  115. if(StringUtils.isBlank(response)){
  116. result.setSuccess(false);
  117. result.setMsg("[metavatar]请求异常,请稍后重试");
  118. return result;
  119. }
  120. JSONObject jsonObject = JSON.parseObject(response);
  121. JSONObject status = jsonObject.getJSONObject("status");
  122. Integer code = status.getInteger("code");
  123. if(code == null){
  124. result.setSuccess(false);
  125. result.setMsg("[metavatar]请求异常,请稍后重试");
  126. return result;
  127. }
  128. if(code.intValue() == 3000){
  129. result.setSuccess(true);
  130. result.setMsg("success");
  131. JSONObject data = jsonObject.getJSONObject("data");
  132. result.setImg(data.getString("img"));
  133. }else{
  134. result.setSuccess(false);
  135. result.setMsg("[metavatar]"+status.getString("msg"));
  136. }
  137. return result;
  138. }
  139. //智象小程序生成logo
  140. public static ShareImgResult createShareImg(ShareImgParam param) {
  141. // log.info("生成照片start request:" + param.getBg_img());
  142. String response = HttpUtil.doAiVideoPost(digital_avatar + "/logo_img", JSONObject.toJSONString(param));
  143. log.info("生成照片end response:"+response);
  144. ShareImgResult result = new ShareImgResult();
  145. if(StringUtils.isBlank(response)){
  146. result.setSuccess(false);
  147. result.setMsg("[metavatar]请求异常,请稍后重试");
  148. return result;
  149. }
  150. JSONObject jsonObject = JSON.parseObject(response);
  151. JSONObject status = jsonObject.getJSONObject("status");
  152. Integer code = status.getInteger("code");
  153. if(code == null){
  154. result.setSuccess(false);
  155. result.setMsg("[metavatar]请求异常,请稍后重试");
  156. return result;
  157. }
  158. if(code.intValue() == 4000){
  159. result.setSuccess(true);
  160. result.setMsg("success");
  161. JSONObject data = jsonObject.getJSONObject("data");
  162. result.setImg(data.getString("img"));
  163. }else{
  164. result.setSuccess(false);
  165. result.setMsg("[metavatar]"+status.getString("msg"));
  166. }
  167. return result;
  168. }
  169. public static void main(String[] args) {
  170. // AiCheckPhotoParam param = new AiCheckPhotoParam();
  171. // String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/personmould/16760216806604820_cSHoijDX_grace_1080.jpg");
  172. // param.setImg(img);
  173. // AiCheckPhotoResult result = AiDigitalAvatarHelper.checkPhoto(param);
  174. // System.out.println(result);
  175. // DigitalAvatarParam param = new DigitalAvatarParam();
  176. // param.setBg_img("素白");
  177. // 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");
  178. // param.setImg_lift(img);
  179. // param.setImg_middle("None");
  180. // param.setImg_right("None");
  181. // DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,100001l);
  182. // System.out.println(result);
  183. }
  184. }