开通服务
百度搜索:腾讯云
注册账号登录后
点击控制台
在左上角产品中选中人像变换
然后提交申请 开通服务
这里千万注意了 开通服务 前看清楚费用问题 人像变换的计费方式是 一旦开通以后每个月前1000次调用是免费的 超过1000次 就开始自动扣你钱了
开通以后 点击查看文档
查看人像动漫化部分 打开API Explorer
由于调用这个api需要 开通服务后得到的 密钥
所以点击上方的查看密钥 然后将SecretId SecretKey复制粘贴到API Explorer中去
直接叉掉这个
复制粘贴密钥以后 填写Region和RspImgType和Image
Regiont选择距离自己最近的地区就好
RspImgType填写base64(填url的话得到的是网络图片)
Image随便填就好 等会改为你需要人像动漫化图片的本地地址就好
代码改为 选中 .NET
填好以后你会发现右边代码会自动帮你生成
第二步(代码)
打开visual studio 2017
新建一个winform项目 添加一个button 和一个pictureBox
picturebox模式改为zoom 便于显示
打开form1的代码区
为button新建一个click事件 在事件中将API Explorer中main函数里面的代码全部复制粘贴到click事件函数中
同时还要将将API Explorer中的命名空间添加到该项目去
然后发现会报错 这是因为 还没有添加相关的引用
此时打开nuget控制台 粘贴 Install-Package TencentCloudSDK -Version 3.0.171 下去 然后回车等待安装
安装完成后
然后在代码部分将catch右边的
(Exception e)
和里面的
Console.WriteLine(e.ToString());
还有try下面的
Console.WriteLine(AbstractModel.ToJsonString(resp));
删除了
发现已经不会再报错了
然后添加命名空间using System.IO;
然后在click事件函数 后面定义下面两个函数
/// <summary>
/// 输入本地图片(包含路径)将图片转换为Base64编码
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static String getFileBase64(String fileName)
{
FileStream filestream = new FileStream(fileName, FileMode.Open);
byte[] arr = new byte[filestream.Length];
filestream.Read(arr, 0, (int)filestream.Length);
string baser64 = Convert.ToBase64String(arr);
filestream.Close();
return baser64;
}
/// <summary>
/// 将base64编码转换为图片
/// </summary>
/// <param name="base64String"></param>
/// <returns></returns>
public Image ConvertBase64ToImage(string base64String)
{
byte[] imageBytes = Convert.FromBase64String(base64String);
using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
ms.Write(imageBytes, 0, imageBytes.Length);
return Image.FromStream(ms, true);
}
}
然后将click函数中的 req.Image = “one.jpg”;修改为
req.Image = getFileBase64(@“C:\Users\小何程序员\Desktop\5b1e1e67ba478f9f0f1753ecdc0d24c.jpg”);
路径根据自己图片的实际情况填写
同时还要在try的最下面添加这句代码
pictureBox1.Image = ConvertBase64ToImage(resp.ResultImage);
然后点击运行 再点击按钮 等会结果如下
原图为
附上所有代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Ft.V20200304;
using TencentCloud.Ft.V20200304.Models;
using System.IO;
namespace tengxun_api_blog_showHow1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
Credential cred = new Credential
{
//此处根据实际情况填写
SecretId = "密钥id",
SecretKey = "密钥key"
};
ClientProfile clientProfile = new ClientProfile();
HttpProfile httpProfile = new HttpProfile();
httpProfile.Endpoint = ("ft.tencentcloudapi.com");
clientProfile.HttpProfile = httpProfile;
//此处根据实际情况填写
FtClient client = new FtClient(cred, "地域位置", clientProfile);
FaceCartoonPicRequest req = new FaceCartoonPicRequest();
req.RspImgType = "base64";
//此处根据实际情况填写
req.Image = getFileBase64(@"C:\Users\小何程序员\Desktop\a08970f488fcae00a90119117856096.jpg");
FaceCartoonPicResponse resp = client.FaceCartoonPicSync(req);
pictureBox1.Image = ConvertBase64ToImage(resp.ResultImage);
}
catch
{
}
Console.Read();
}
/// <summary>
/// 输入本地图片(包含路径)将图片转换为Base64编码
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static String getFileBase64(String fileName)
{
FileStream filestream = new FileStream(fileName, FileMode.Open);
byte[] arr = new byte[filestream.Length];
filestream.Read(arr, 0, (int)filestream.Length);
string baser64 = Convert.ToBase64String(arr);
filestream.Close();
return baser64;
}
/// <summary>
/// 将base64编码转换为图片
/// </summary>
/// <param name="base64String"></param>
/// <returns></returns>
public Image ConvertBase64ToImage(string base64String)
{
byte[] imageBytes = Convert.FromBase64String(base64String);
using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
ms.Write(imageBytes, 0, imageBytes.Length);
return Image.FromStream(ms, true);
}
}
}
}