简介
使用阿里云人物动漫化制作自己的专属头像-
- 支持风格:日漫、3D、手绘、铅笔画、艺术特效等风格。
官方文档- 收费标准 :
效果展示:
- 原图:
- 日漫风效果图:
- 3D特效效果图:
- 手绘风效果图:
- 铅笔画效果图:
- 艺术特效效果图:
操作步骤 :
官网 : 阿里云-计算,为了无法计算的价值
1. 注册阿里云账号
2. 登录阿里云页面搜索 : 人物动漫化
1.开通人脸人体服务:
1.1. 点击人物动漫化文档 --> 接入指引 --> 开通人脸人体服务
1.2. 开通成功 --> 控制台
1.3. 购买人物动漫化
2. 实名认证(已实名可忽略)
3.RAM授权
3.1 创建AccessKey
3.2 RAM授权
3.3 创建RAM用户 --> 新增授权
授权 --> 新增授权 --> 授权主体 --> 权限名称 --> 确定
权限名称 : AliyunVIAPIFullAccess
授权主体 : 创建好的RAM用户
4.安装SDK(导入依赖)
4.1 打开人物动漫化示例代码 ---> 点击SDK总览
4.2 选择 java
4.3 选择人脸人体 --> SDK链接
4.4 选择最新版本Maven依赖
Maven依赖 :
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>facebody20191230</artifactId>
<version>5.0.0</version>
</dependency>
5. 代码-工具类
阿里云AccessKey ID 和 Accesskey Secret 自行查看
import com.alibaba.fastjson2.JSON;
import com.aliyun.facebody20191230.Client;
import com.aliyun.facebody20191230.models.GenerateHumanAnimeStyleAdvanceRequest;
import com.aliyun.facebody20191230.models.GenerateHumanAnimeStyleResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Map;
/**
* 阿里云 - 人物动漫化工具
*/
public class AliYunUtils {
// AccessKey ID
private static final String accessKeyId = "阿里云AccessKey ID";
// AccessKey Secret
private static final String accessKeySecret = "阿里云AccessKey Secret";
/**
* 日漫风
*/
public static final String anime = "anime";
/**
* 3D特效
*/
public static final String threeD = "3d";
/**
* 手绘风
*/
public static final String handdrawn = "handdrawn";
/**
* 铅笔画
*/
public static final String sketch = "sketch";
/**
* 艺术特效
*/
public static final String artstyle = "artstyle";
/**
* 本地文件上传生成头像
* @param style 图片风格
* @param filePath 本地图片路径
* @return 下载图片Url
*/
public static String localByFile(String style, String filePath) throws Exception {
// 本地图片路径
InputStream inputStream = new FileInputStream(new File(filePath));
return GeneratePicture(style,inputStream);
}
/**
* 根据图片Url生成
* @param style 图片风格
* @param webUrl 网络图片 Url
* @return 下载图片Url
*/
public static String webByUrl(String style, String webUrl) throws Exception {
// 网络图片Url
URL url = new URL(webUrl);
InputStream inputStream = url.openConnection().getInputStream();
return GeneratePicture(style,inputStream);
}
/**
* 公共调用方法
* @param style
* @param inputStream
* @return
*/
private static String GeneratePicture(String style, InputStream inputStream) throws Exception {
//初始化
Client client = createClient();
//人物动漫化的API
GenerateHumanAnimeStyleAdvanceRequest generateHumanAnimeStyleAdvanceRequest = new GenerateHumanAnimeStyleAdvanceRequest()
.setImageURLObject(inputStream)
//3. 指定生成的效果,分为5种模式 日漫风(anime) / 3D特效(3d) / 手绘风(handdrawn) / 铅笔画(sketch) / 艺术特效(artstyle)
.setAlgoType(style);
RuntimeOptions runtime = new RuntimeOptions();
// 复制代码运行请自行打印 API 的返回值
GenerateHumanAnimeStyleResponse response = client.generateHumanAnimeStyleAdvance(generateHumanAnimeStyleAdvanceRequest, runtime);
//返回生成照片的路径Url
return getImageUrl(response);
}
/**
* 初始化方法
* @return Client
*/
public static Client createClient() throws Exception {
Config config = new Config()
// 必填,您的 AccessKey ID
.setAccessKeyId(accessKeyId)
// 必填,您的 AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名 默认:
config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
return new com.aliyun.facebody20191230.Client(config);
}
/**
* 获取返回结果中的imageUrl
* @param response 结果
* @return Url
*/
private static String getImageUrl(Object response) {
String responseJson = JSON.toJSONString(response);
Map<String, Object> responseMap = JSON.parseObject(responseJson);
String bodyJson = JSON.toJSONString(responseMap.get("body"));
Map<String, Object> bodyMap = JSON.parseObject(bodyJson);
String dataJson = JSON.toJSONString(bodyMap.get("data"));
Map<String, Object> imageUrlMap = JSON.parseObject(dataJson);
return String.valueOf(imageUrlMap.get("imageURL"));
}
}