前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#实战:基于腾讯云的图像服务实现图片清晰度增强介绍和案例实践

C#实战:基于腾讯云的图像服务实现图片清晰度增强介绍和案例实践

原创
作者头像
IT技术分享社区
发布2024-04-24 08:32:27
2620
发布2024-04-24 08:32:27
举报
文章被收录于专栏:C#实战C#实战

一、图像清晰度增强介绍

基于腾讯云深度学习等人工智能技术,消除图片因有损压缩导致的噪声,改善因使用滤镜、拍摄失焦等导致的图像模糊问题,让图片的边缘和细节更加清晰自然。

二、开发流程

首先登录腾讯云平台开通图片处理服务 官网:/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

通过命令行

代码语言:javascript
复制
dotnet add package TencentCloudSDK.Tiia

通过Nuget 包管理器方式安装

打开nuget包管理器,搜索 TencentCloudSDK.Tiia,安装最新稳定版本 3.0.957。

5.2 增加腾讯API调用配置项

直接在app.config 文件添加,完整的内容如下:

代码语言:javascript
复制
<?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图片,并直接调用操作系统默认的打开图片工具直接打开图片。

代码语言:javascript
复制
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 class 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 运行效果

查看调用接口成功的调试数据

页面运行窗体,主要是图片网络地址输入和转换按钮

转换之后成功的效果如下图:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、图像清晰度增强介绍
  • 二、开发流程
  • 三、请求参数说明
  • 四、输出参数说明
  • 五、开发实践
    • 5.1 安装依赖库TencentCloudSDK.Tiia
      • 5.2 增加腾讯API调用配置项
        • 5.3 代码
          • 5.4 运行效果
          相关产品与服务
          图像处理
          图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com