基于腾讯云深度学习等人工智能技术,消除图片因有损压缩导致的噪声,改善因使用滤镜、拍摄失焦等导致的图像模糊问题,让图片的边缘和细节更加清晰自然。
二、开发流程首先登录腾讯云平台开通图片处理服务 官网:https://cloud.tencent.com/product/imageprocess
申请开发密钥
下载编程语言对应的SDK
开发工具创建项目
引用腾讯图像处理库
根据业务编写代码
三、请求参数说明● Region:资源地域,必填,表示操作的资源所属的地域,比如 ap-shanghai ap-beijing ap-shenzhen 等。
● ImageUrl:图片URL地址参数。图片格式:PNG、JPG、JPEG。 图片大小:所下载图片经Base64编码后不超过4M。图片下载时间不超过3秒。
● ImageBase64:支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。图片经过Base64编码的内容。最大不超过4M。与ImageUrl同时存在时优先使用ImageUrl字段。注意:图片需要Base64编码,并且要去掉编码头部。
四、输出参数说明● EnhancedImage:增强后图片的base64编码。示例值:/9j/4AAQSkZJRgABAQAAAQABA…
● RequestId:唯一请求 ID,每次请求都会返回。排查异常问题时需要提供该次请求的 RequestId。
五、开发实践这里采用SDK+C#语言的方式写一个WinForm程序。具体操作如下:
首先新建一个WinForm控制台程序EnhanceImageDemo,框架选择NetFramework4.5.2。
5.1 安装依赖库TencentCloudSDK.Tiia通过命令行
dotnet add package TencentCloudSDK.Tiia通过Nuget 包管理器方式安装
打开nuget包管理器,搜索 TencentCloudSDK.Tiia,安装最新稳定版本 3.0.957。
5.2 增加腾讯API调用配置项直接在app.config 文件添加,完整的内容如下:
<?xml version="1.0" encoding="utf-8" ?><configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <appSettings> <!--SecretId--> <add key="SecretId" value="xxxxxx"/> <!--SecretKey--> <add key="SecretKey" value="xxxxxx"/> <!--地区选择ap-shanghai ap-beijing ap-shenzhen 等--> <add key="Region" value="ap-shanghai"/> <!--图片输出目录--> <add key="OutPath" value="D:\Image\"/></appSettings></configuration>注意:开发密钥需要开发者自己申请填入配置文件。
5.3 代码主要实现了网络图片URL调用图像增强处理方法生成Base64字符串,然后转换为png图片,并直接调用操作系统默认的打开图片工具直接打开图片。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using TencentCloud.Common;using TencentCloud.Common.Profile;using TencentCloud.Tiia.V20190529;using TencentCloud.Tiia.V20190529.Models;using System.Configuration;namespace EnhanceImageDemo{ public partial Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// 图片增强方法 /// </summary> private void EnhanceImage() { string url = textBox1.Text.Trim(); if (!Uri.IsWellFormedUriString(url, UriKind.Absolute)) { MessageBox.Show("请输入正确的图片URL"); } else { // 调用腾讯云接口的参数说明 string secretId = ConfigurationManager.AppSettings["SecretId"]; string secretKey = ConfigurationManager.AppSettings["SecretKey"]; string region = ConfigurationManager.AppSettings["Region"]; try { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,需注意密钥对的保密 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 Credential cred = new Credential { SecretId = secretId, SecretKey = secretKey }; // 实例化一个client选项,可选的,没有特殊需求可以跳过 ClientProfile clientProfile = new ClientProfile(); // 实例化一个http选项,可选的,没有特殊需求可以跳过 HttpProfile httpProfile = new HttpProfile(); httpProfile.Endpoint = ("tiia.tencentcloudapi.com"); clientProfile.HttpProfile = httpProfile; // 实例化要请求产品的client对象,clientProfile是可选的 TiiaClient client = new TiiaClient(cred, region, clientProfile); // 实例化一个请求对象,每个接口都会对应一个request对象 传递参数,支持网络图片和图片经过Base64编码的内容 EnhanceImageRequest req = new EnhanceImageRequest(); //图片URL地址参数。图片格式:PNG、JPG、JPEG。 图片大小:所下载图片经Base64编码后不超过4M。图片下载时间不超过3秒。 req.ImageUrl = url; //ImageBase64 参数 支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。图片经过Base64编码的内容。最大不超过4M。与ImageUrl同时存在时优先使用ImageUrl字段。注意:图片需要Base64编码,并且要去掉编码头部。 req.ImageBase64 = "无"; // 返回的resp是一个EnhanceImageResponse的实例,与请求对象对应 EnhanceImageResponse resp = client.EnhanceImageSync(req); convertToImage(resp.EnhancedImage); } catch (Exception e) { MessageBox.Show(e.ToString()); } } } /// <summary> /// base64字符串转换为png /// </summary> /// <param name="base64String"></param> private void convertToImage(string base64String) { // 把Base64 字符串解码为字节数组 byte[] imageBytes = Convert.FromBase64String(base64String); // 配置文件图片图片输出目录 string path = ConfigurationManager.AppSettings["OutPath"]; string fileName = path + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"; // 将字节数组保存为图片文件 using (MemoryStream ms = new MemoryStream(imageBytes)) { Image image = Image.FromStream(ms); // 保存图片 image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png); // 调用系统默认程序打开图片文件 Process.Start(fileName); } } /// <summary> /// 按钮点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOk_Click(object sender, EventArgs e) { EnhanceImage(); } }}5.4 运行效果查看调用接口成功的调试数据
页面运行窗体,主要是图片网络地址输入和转换按钮
转换之后成功的效果如下图: