package com.iformall.sm; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.iformall.common.ErrorCode; import com.iformall.enums.EnumDigitalAvatarMouldType; import com.iformall.exception.MallinkException; import com.iformall.utils.Base64Util; import com.iformall.utils.HttpUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Slf4j @Component public class AiDigitalAvatarHelper { public static String digital_avatar; @Value("${suimang.digital_avatar}") public void setDigitalAvatar(String digital_avatar){ this.digital_avatar = digital_avatar; } public static String digital_avatar_hy; @Value("${suimang.digital_avatar_hy}") public void setDigitalAvatarHy(String digital_avatar_hy){ this.digital_avatar_hy = digital_avatar_hy; } public static String callbackUrl; @Value("${suimang.callbackUrl}") public void setCallbackUrl(String callbackUrl){ this.callbackUrl = callbackUrl; } //智象小程序人脸检测 public static AiCheckPhotoResult checkPhoto(AiCheckPhotoParam param) { // String response = HttpUtil.doAiVideoPost("http://nas.pucao.cn:2005/dec_face", JSONObject.toJSONString(param)); String response = HttpUtil.doAiVideoPost(digital_avatar + "/dec_face", JSONObject.toJSONString(param)); log.info("图片人脸检测 end response:" + response); AiCheckPhotoResult result = new AiCheckPhotoResult(); if (StringUtils.isBlank(response)) { result.setSuccess(false); result.setMsg("(MetaService)图片人脸检测失败,请稍后重试"); return result; } JSONObject jsonObject = JSON.parseObject(response); JSONObject status = jsonObject.getJSONObject("status"); Integer code = status.getInteger("code"); String msg = status.getString("msg"); if (code == null) { result.setSuccess(false); result.setMsg("(MetaService)图片人脸检测失败,请稍后重试"); return result; } if (code.intValue() == 1000) { result.setCode(code); result.setSuccess(true); result.setMsg(msg); } else { result.setCode(code); result.setSuccess(false); result.setMsg(msg); } return result; } //智象小程序生成 public static DigitalAvatarResult digitalAvatarPhoto(DigitalAvatarParam param,Long taskId) { param.setTask_id(taskId); // param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo"); param.setCallback_url(callbackUrl + "/callback/create/photo"); // log.info("生成照片start request:" + param.getBg_img()); // String response = HttpUtil.doAiVideoPost("http://http://111.198.0.15:22200/make_face", JSONObject.toJSONString(param)); String response = HttpUtil.doAiVideoPost(digital_avatar + "/make_face", JSONObject.toJSONString(param)); log.info("生成照片end response:"); DigitalAvatarResult result = new DigitalAvatarResult(); if(StringUtils.isBlank(response)){ result.setSuccess(false); result.setMsg("[metavatar]请求异常,请稍后重试"); return result; } JSONObject jsonObject = JSON.parseObject(response); JSONObject status = jsonObject.getJSONObject("status"); Integer code = status.getInteger("code"); if(code == null){ result.setSuccess(false); result.setMsg("[metavatar]请求异常,请稍后重试"); return result; } if(code.intValue() == 2000){ result.setSuccess(true); result.setMsg("success"); JSONObject data = jsonObject.getJSONObject("data"); List imgList = new ArrayList<>(); imgList.add(data.getString("fusion_img1")); imgList.add(data.getString("roop_img1")); imgList.add(data.getString("fusion_img2")); imgList.add(data.getString("roop_img2")); imgList.add(data.getString("fusion_img3")); imgList.add(data.getString("roop_img3")); imgList.add(data.getString("fusion_img4")); imgList.add(data.getString("roop_img4")); result.setImgList(imgList); }else{ result.setSuccess(false); result.setMsg("[metavatar]"+status.getString("msg")); } return result; } public static SuperImgResult superImg(SuperImgParam param,Long taskId) { param.setTask_id(taskId); // param.setCallback_url("https://phototest.metavatar.cc/C/callback/create/photo"); param.setCallback_url(callbackUrl + "/callback/super/photo"); // log.info("生成照片start request:" + param.getBg_img()); String response = HttpUtil.doAiVideoPost(digital_avatar_hy + "/sr_img", JSONObject.toJSONString(param)); log.info("照片超分end response:"); SuperImgResult result = new SuperImgResult(); if(StringUtils.isBlank(response)){ result.setSuccess(false); result.setMsg("[metavatar]请求异常,请稍后重试"); return result; } JSONObject jsonObject = JSON.parseObject(response); JSONObject status = jsonObject.getJSONObject("status"); Integer code = status.getInteger("code"); if(code == null){ result.setSuccess(false); result.setMsg("[metavatar]请求异常,请稍后重试"); return result; } if(code.intValue() == 3000){ result.setSuccess(true); result.setMsg("success"); JSONObject data = jsonObject.getJSONObject("data"); result.setImg(data.getString("img")); }else{ result.setSuccess(false); result.setMsg("[metavatar]"+status.getString("msg")); } return result; } //智象小程序生成logo public static ShareImgResult createShareImg(ShareImgParam param) { // log.info("生成照片start request:" + param.getBg_img()); String response = HttpUtil.doAiVideoPost(digital_avatar + "/logo_img", JSONObject.toJSONString(param)); log.info("生成照片end response:"+response); ShareImgResult result = new ShareImgResult(); if(StringUtils.isBlank(response)){ result.setSuccess(false); result.setMsg("[metavatar]请求异常,请稍后重试"); return result; } JSONObject jsonObject = JSON.parseObject(response); JSONObject status = jsonObject.getJSONObject("status"); Integer code = status.getInteger("code"); if(code == null){ result.setSuccess(false); result.setMsg("[metavatar]请求异常,请稍后重试"); return result; } if(code.intValue() == 4000){ result.setSuccess(true); result.setMsg("success"); JSONObject data = jsonObject.getJSONObject("data"); result.setImg(data.getString("img")); }else{ result.setSuccess(false); result.setMsg("[metavatar]"+status.getString("msg")); } return result; } public static void main(String[] args) { // AiCheckPhotoParam param = new AiCheckPhotoParam(); // String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/personmould/16760216806604820_cSHoijDX_grace_1080.jpg"); // param.setImg(img); // AiCheckPhotoResult result = AiDigitalAvatarHelper.checkPhoto(param); // System.out.println(result); // DigitalAvatarParam param = new DigitalAvatarParam(); // param.setBg_img("素白"); // 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"); // param.setImg_lift(img); // param.setImg_middle("None"); // param.setImg_right("None"); // DigitalAvatarResult result = AiDigitalAvatarHelper.digitalAvatarPhoto(param,100001l); // System.out.println(result); } }