C# winform项目使用腾讯云人像变换api对选定图片进行人像动漫化

开通服务

百度搜索:腾讯云
注册账号登录后
点击控制台
在这里插入图片描述
在左上角产品中选中人像变换
在这里插入图片描述
然后提交申请 开通服务
这里千万注意了 开通服务 前看清楚费用问题 人像变换的计费方式是 一旦开通以后每个月前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);
            }
        }

    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值