前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET Winform中图像与Base64格式互转

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

原创
作者头像
软件架构师Michael
发布2023-04-14 09:05:10
1.8K0
发布2023-04-14 09:05:10
举报

我们可以创建一个新的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字符串作为参数传入,如此操作可以显著降低操作系统资源消耗。

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档