C# 图片格式转换的实例代码
作者:Alan.hsiang 时间:2023-03-11 13:32:46
在日常工作中,经常需要不同格式的图片,有时还需要进行图片格式的相互转换,本文以一个简单的小例子,简述图片格式转换的常见方法,仅供学习分享使用,如有不足之处,还请指正。
涉及知识点
OpenFileDialog 打开文件对话框,用于选择文件,可以设置过滤后缀。
FolderBrowserDialog 文件夹选择对话框,用于选择一个文件夹,可以新增。
ImageFormat 图片类型枚举。
Bitmap 位图对象,包含对应的属性和内容。
Stream 流对象的基类。
FlowLayoutPanel 流式布局容器,所添加的元素,以横向或纵向依次排列。
示例效果图
图片转换器的示例效果图如下:
核心代码
打开图片
/// <summary>
/// 打开图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOpen_Click(object sender, EventArgs e)
{
this.fileDialog.Filter = fileFilter;
this.fileDialog.Multiselect = true;
this.fileDialog.CheckFileExists = true;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
string[] fileNames = this.fileDialog.FileNames;
foreach(string fileName in fileNames)
{
Bitmap bmp = new Bitmap(fileName);
//保存图片名称
bmp.Tag = Path.GetFileNameWithoutExtension(fileName);
PictureBox box = new PictureBox();
box.Image = bmp;
box.Width = 105;
box.Height = 150;
box.BorderStyle = BorderStyle.FixedSingle;
box.Padding = new Padding(2);
this.flowPnl.Controls.Add(box);
}
this.txtFile.Text = Path.GetDirectoryName(fileNames[0]);
}
}
转换图片格式
/// <summary>
/// 转换图片
/// </summary>
private void convertImage(string dir, string filter,Bitmap bmp)
{
string filePath = Path.Combine(dir, string.Format("{0}.{1}", bmp.Tag.ToString(), filter.ToLower()));
switch (filter)
{
case "JPG":
bmp.Save(filePath, ImageFormat.Jpeg);
break;
case "PNG":
bmp.Save(filePath, ImageFormat.Png);
break;
case "GIF":
bmp.Save(filePath, ImageFormat.Gif);
break;
case "BMP":
bmp.Save(filePath, ImageFormat.Bmp);
break;
case "ICO":
Stream stream = File.Create(filePath);
Icon icon = Icon.FromHandle(bmp.GetHicon());
icon.Save(stream); // save the icon
stream.Close();
break;
}
}
如果需要示例的源码,可以点击链接进行下载
源码链接
来源:https://www.cnblogs.com/hsiang/archive/2020/08/01/13416132.html
标签:c#,图片,格式,转换
0
投稿
猜你喜欢
Android TV 3D卡片无限循环效果
2022-03-26 04:06:48
Java 异步线程监听与结果回调及异常捕获总结分析
2021-10-14 01:23:40
详解springmvc控制登录用户session失效后跳转登录页面
2021-12-08 19:36:40
Android的OkHttp包中的HTTP拦截器Interceptor用法示例
2022-01-31 06:31:25
关于Java8新特性Optional类的详细解读
2023-12-06 00:38:53
SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理
2021-10-11 22:36:07
C# NullReferenceException解决案例讲解
2023-01-24 07:38:10
Java CharacterEncodingFilter案例详解
2022-03-21 18:22:32
最最常用的 100 个 Java类分享
2023-08-21 08:45:05
C#实现根据字节数截取字符串并加上省略号的方法
2021-10-24 22:24:17
Android WebView 常见问题及处理方案
2023-04-13 04:11:57
实现Android studio设置自动导包及自动导包快捷键
2022-03-22 00:05:26
Java基于IO流读取文件的方法
2023-08-11 16:23:57
详解Android版本适配:9.0 Pie
2022-08-07 05:37:43
Centos6.5搭建java开发环境配置详解
2021-09-27 06:22:03
C#字体池技术实现代码详解
2022-12-30 06:18:02
Java毕业设计实战之教室预订管理系统的实现
2023-03-03 20:38:11
Java精品项目瑞吉外卖之员工信息管理篇
2023-07-29 07:43:36
Mybatis 开发注解快速入门
2021-12-01 16:03:36
Java对世界不同时区timezone之间时间转换的处理方法
2023-11-08 13:19:30