我们可以创建一个新的Windows窗体应用程序项目来演示,然后从Visual Studio工具箱中将图片框,标签和按钮拖到Winform中,然后设计一个简单的UI,该UI允许您从硬盘中选择图像,然后进行转换如下图所示,将图像转换为base64字符串或将编码后的base64字符串转换为c#中的image。
贴上项目代码,需要的朋友可以参考一下:
代码语言:javascript复制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字符串作为参数传入,如此操作可以显著降低操作系统资源消耗。
最后用一句话勉励我们自己:天才在于学习,知识在于积累~