C#中图片的Base64编码与解码转换详解

 更新时间:2024年12月06日 11:47:16   作者:AitTech  
在C#中,我们可以使用Base64编码将图片转换为字符串,也可以将Base64编码的字符串转换回图片,这通常用于在需要文本表示图像数据的场合(例如在Web开发中传输图像数据),本文介绍了C#中图片的Base64编码与解码转换,需要的朋友可以参考下

将图片转换为Base64字符串

要将图片文件转换为Base64字符串,可以使用System.Drawing命名空间中的Image类(注意:在.NET Core和.NET 5+中,可能需要使用System.Drawing.Common包,并且它可能在某些平台上不可用,比如Linux,除非安装了相应的依赖项)。然而,更常见和推荐的方法是使用System.IO和Convert类来处理字节数组。

以下是一个示例代码,展示了如何将图片文件转换为Base64字符串:

using System;
using System.IO;
using System.Drawing; // 注意:在.NET Core和.NET 5+中可能需要额外的包
// 或者使用 System.Text.Encoding 和 File.ReadAllBytes 而不是 Image 类

class Program
{
    static void Main()
    {
        string imagePath = "图片.jpg";
        string base64String = ImageToBase64(imagePath, ImageFormat.Jpeg);
        Console.WriteLine(base64String);
    }

    static string ImageToBase64(string imagePath, ImageFormat format)
    {
        using (Image image = Image.FromFile(imagePath))
        {
            using (MemoryStream ms = new MemoryStream())
            {
                // 将图片保存到内存流中
                image.Save(ms, format);
                // 将内存流转换为字节数组
                byte[] imageBytes = ms.ToArray();
                // 将字节数组转换为Base64字符串
                string base64String = Convert.ToBase64String(imageBytes);
                return base64String;
            }
        }
    }
}

注意:上面的代码使用了ImageFormat枚举来指定图片格式。但是,如果不想依赖System.Drawing,可以直接使用File.ReadAllBytes方法来读取图片文件的字节数组,然后转换为Base64字符串。

一个不依赖System.Drawing的示例:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string imagePath = "图片.jpg";
        string base64String = ConvertImageToBase64(imagePath);
        Console.WriteLine(base64String);
    }

    static string ConvertImageToBase64(string imagePath)
    {
        byte[] imageBytes = File.ReadAllBytes(imagePath);
        string base64String = Convert.ToBase64String(imageBytes);
        return base64String;
    }
}

将Base64字符串转换为图片

要将Base64字符串转换回图片,可以使用Convert.FromBase64String方法将Base64字符串转换为字节数组,然后使用MemoryStream和Image类(或Bitmap类)来创建图片对象。

以下是一个示例代码,展示了如何将Base64字符串转换为图片并保存到文件中:

using System;
using System.Drawing; // 注意:在.NET Core和.NET 5+中可能需要额外的包
using System.IO;

class Program
{
    static void Main()
    {
        string base64String = "Base64字符串";
        string outputPath = "输出图片.jpg";
        Base64ToImage(base64String, outputPath);
    }

    static void Base64ToImage(string base64String, string outputPath)
    {
        byte[] imageBytes = Convert.FromBase64String(base64String);
        using (MemoryStream ms = new MemoryStream(imageBytes))
        {
            Image image = Image.FromStream(ms);
            image.Save(outputPath, ImageFormat.Jpeg); // 可以根据需要更改格式
        }
    }
}

同样地,如果不想依赖System.Drawing,可以将字节数组写入文件,并使用适当的文件扩展名和关联的程序来打开它(例如,使用.jpg扩展名并用图片查看器打开)。但是,请注意,这种方法不会直接创建一个Image对象,只是将字节数据保存为文件。

一个不依赖System.Drawing的保存Base64字符串为图片文件的示例:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string base64String = "Base64字符串";
        string outputPath = "输出图片.jpg";
        SaveBase64AsImage(base64String, outputPath);
    }

    static void SaveBase64AsImage(string base64String, string outputPath)
    {
        byte[] imageBytes = Convert.FromBase64String(base64String);
        File.WriteAllBytes(outputPath, imageBytes);
    }
}

到此这篇关于C#中图片的Base64编码与解码转换详解的文章就介绍到这了,更多相关C#图片Base64编码与解码转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于C#对用户密码使用MD5加密与解密

    基于C#对用户密码使用MD5加密与解密

    C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式。本文总结了通用的算法并结合了自己的一点小经验,分享给大家
    2015-12-12
  • 采用C#实现软件自动更新的方法

    采用C#实现软件自动更新的方法

    这篇文章主要介绍了采用C#实现软件自动更新的方法,非常实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#获取属性的displayName的3种方式

    C#获取属性的displayName的3种方式

    在C#中,获取属性的displayName可以通过多种方式实现,包括使用特性、反射和LINQ,下面我将分别展示每种方法,并提供具体的示例代码,感兴趣的朋友可以参考下
    2024-07-07
  • C#实现Excel数据导入到SQL server数据库

    C#实现Excel数据导入到SQL server数据库

    这篇文章主要为大家详细介绍了在C#中如何实现Excel数据导入到SQL server数据库中,文中的示例代码简洁易懂,希望对大家有一定的帮助
    2024-03-03
  • C#判断一个类是否实现了某个接口3种实现方法

    C#判断一个类是否实现了某个接口3种实现方法

    这篇文章主要介绍了C#判断一个类是否实现了某个接口3种实现方法,本文直接给出实现代码,需要的朋友可以参考下
    2015-06-06
  • C#实现嵌套循环的示例代码

    C#实现嵌套循环的示例代码

    这篇文章主要为大家详细介绍了C#实现嵌套循环的相关知识,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-09-09
  • C# Winform实现进度条显示

    C# Winform实现进度条显示

    这篇文章主要为大家详细介绍了C# Winform实现进度条显示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • C#实现简单点餐系统

    C#实现简单点餐系统

    这篇文章主要为大家详细介绍了C#实现简单点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Unity 如何获取鼠标停留位置下的物体

    Unity 如何获取鼠标停留位置下的物体

    这篇文章主要介绍了Unity 如何获取鼠标停留位置下的物体,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#判断三角形的类型

    C#判断三角形的类型

    这篇文章主要介绍了C#判断三角形的类型的方法,通过输入三角形的三条边长,判断是否能构成一个三角形,感兴趣的小伙伴们可以参考一下
    2015-11-11

最新评论