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#中如何使用 XmlReader 读取XML文件

    C#中如何使用 XmlReader 读取XML文件

    本文介绍了C#中使用XmlReader,只读、向前、循环读取XML节点的方法,并为我们列出、XmlReader类的方法、属性、枚举等成员,希望对大家学习有所帮助。
    2016-05-05
  • C#反射调用拓展类方法实例代码

    C#反射调用拓展类方法实例代码

    这篇文章主要给大家介绍了关于C#反射调用拓展类方法的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • WPF仿LiveCharts实现饼图的绘制

    WPF仿LiveCharts实现饼图的绘制

    这篇文章主要介绍了如何利用WPF仿LiveCharts实现饼图的绘制,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-07-07
  • 非常实用的C#字符串操作处理类StringHelper.cs

    非常实用的C#字符串操作处理类StringHelper.cs

    这篇文章主要为大家详细介绍了非常实用的C#字符串操作处理类StringHelper.cs,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C#将国产Linux视频录制生成mp4的具体实现

    C#将国产Linux视频录制生成mp4的具体实现

    这篇文章主要介绍了C#将国产Linux视频录制生成mp4的具体实现,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • 使用C#在Word文档中添加文本和图片超链接的实现方式

    使用C#在Word文档中添加文本和图片超链接的实现方式

    在开发办公自动化(OA)系统、报表生成工具或文档处理脚本时,我们经常需要操作 Word 文档,其中,插入超链接是一个高频需求,本文将介绍如何使用 C# 在 Word 文档中添加文本和图片超链接的具体实现方式,需要的朋友可以参考下
    2026-03-03
  • C#使用NPOI实现Excel和DataTable的互转

    C#使用NPOI实现Excel和DataTable的互转

    这篇文章主要为大家详细介绍了C#使用NPOI实现Excel和DataTable的互转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • LINQ(语言集成查询)使用案例

    LINQ(语言集成查询)使用案例

    这篇文章介绍了LINQ(语言集成查询)的使用案例,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#类的多态性详解

    C#类的多态性详解

    这篇文章主要为大家详细介绍了C#类的多态性,主要有两种:一是编译时的多态性,二是运行时的多态性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-10-10
  • c#一个定时重启的小程序实现代码

    c#一个定时重启的小程序实现代码

    今天有个朋友找我问有没有一些能像Windows一样计划任务重启的软件,我也不清楚。他它说能让我做一个给他它么?我考虑了一下,他的服务器都是有安装.NET框架的,那可以用.NET来使下~~!
    2008-09-09

最新评论