.NET Winform中图像与Base64格式互转

2023-04-14 09:05:10 浏览数 (1)

我们可以创建一个新的Windows窗体应用程序项目来演示,然后从Visual Studio工具箱中将图片框,标签和按钮拖到Winform中,然后设计一个简单的UI,该UI允许您从硬盘中选择图像,然后进行转换如下图所示,将图像转换为base64字符串或将编码后的base64字符串转换为c#中的image。

图像与Base64互转效果图图像与Base64互转效果图

贴上项目代码,需要的朋友可以参考一下:

代码语言: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字符串作为参数传入,如此操作可以显著降低操作系统资源消耗。

最后用一句话勉励我们自己:天才在于学习,知识在于积累~

0 人点赞