.NET Winform中图像与Base64格式互转
2023-06-13 09:18:31 时间
我们可以创建一个新的Windows窗体应用程序项目来演示,然后从Visual Studio工具箱中将图片框,标签和按钮拖到Winform中,然后设计一个简单的UI,该UI允许您从硬盘中选择图像,然后进行转换如下图所示,将图像转换为base64字符串或将编码后的base64字符串转换为c#中的image。
贴上项目代码,需要的朋友可以参考一下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PicturesToBase64
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
//要将图像转换为base64字符串,可以创建一个ConvertImageToBase64方法,如下所示。
public string ConvertImageToBase64(Image file)
{
using (MemoryStream memoryStream = new MemoryStream())
{
file.Save(memoryStream, file.RawFormat);
byte[] imageBytes = memoryStream.ToArray();
return Convert.ToBase64String(imageBytes);
}
}
//将base64字符串转换为字节数组,然后写入内存流,最后从该流返回图像。
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);
}
}
private void btnImageToBase64_Click(object sender, EventArgs e)
{
using (Image image = picOriginal.Image.Clone() as Image)
{
txtBase64.Text = ConvertImageToBase64(image);
}
}
// 将Base64转为图像
private void btnBase64_to_Image_Click(object sender, EventArgs e)
{
picBase64ToImage.Image = ConvertBase64ToImage(txtBase64.Text);
}
private void btnBrowse_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
DialogResult dialogResult = fileDialog.ShowDialog();
if(dialogResult == DialogResult.OK)
{
this.picOriginal.Image = Image.FromFile(fileDialog.FileName);
}
}
}
}
【小结】
以上用.NET Winform框架实现了一个图像和Base64互转的小工具,它的意义在于进行图像相关数据传输时,可以不再需要直接把图像地址作为参数传输,取而代之的是用Base64字符串作为参数传入,如此操作可以显著降低操作系统资源消耗。
最后用一句话勉励我们自己:天才在于学习,知识在于积累~
相关文章
- 用.NET开发的磁力搜索引擎——btbook.net「建议收藏」
- .NET Core应用如何通过SSL访问MongoDB?
- 一个小型、快速、轻量级的 .NET NoSQL 嵌入式数据库
- Linux.Net:开启新技术之旅(linux.net)
- net掌握Linux环境下的.NET开发(linuxdot)
- .net让Oracle与ASP.NET实现无缝连接(oracleasp)
- .net搭建ASP.NET应用程序在Linux系统上(linux搭建asp)
- 跨平台利器:.NET在Linux上的运行(.net运行在linux)
- Net缓存技术Redis:管理数据量大的梦想(net缓存技术redis)
- VB.NET构建多层数据库应用:使用MSSQL(vb.net mssql)
- NET与Oracle携手走向未来(.net 对oracle)
- NET环境下 MySQL数据库应用实践(.net配合 mysql)
- NET环境下MySQL数据库的使用实践(.net支持mysql吗)
- asp.net下判断用户什么时候离开,以什么方式离开
- asp.net下Request.QueryString取不到值的解决方法
- asp.net存储过程调用
- asp.net的web页面(aspx)数据量过多时提交失败对策
- ASP.NET中水晶报表的使用方法详解
- 记录asp.net网站是什么原因导致停止运行的代码
- .net平台推送ios消息的实现方法
- Asp.net中Response.Charset与Response.ContentEncoding区别示例分析