C# 中图片与 Base64 字符串的互转技巧

AitTech 2024-12-09 11:37:20编程技术
894

在现代Web开发中,图片的传输和存储是一个常见的需求。为了在网络上传输图片,通常需要将图片转换为文本形式,Base64编码是一种常用的方法。本文将详细介绍如何在C#中将图片转换为Base64字符串,以及如何将Base64字符串转换回图片。我们将探讨两种方法:一种依赖于System.Drawing命名空间,另一种则不依赖于该命名空间,使用System.IO和Convert类来处理字节数组。通过这些技术,开发者可以更灵活地处理图片数据,提高应用的性能和用户体验。

BASE64编码解码.webp

将图片转换为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字符串以及将Base64字符串转换回图片的方法。我们首先探讨了依赖于System.Drawing命名空间的方法,这种方法简单直观,但可能在某些环境中不可用。接着,我们介绍了不依赖于System.Drawing的方法,使用System.IO和Convert类来处理字节数组,这种方法更加通用,适用于更多的开发场景。通过提供的示例代码,读者可以轻松地将这些技术应用于实际项目中,实现图片数据的高效传输和存储。无论是Web开发还是其他应用场景,这些技巧都能帮助开发者更好地处理图片数据,提升应用的功能性和可靠性。

c# 图片转base64 base64转图片
THE END
蜜芽
故事不长,也不难讲,四字概括,毫无意义。

相关推荐

C# List遍历方式全面对比:for、foreach、LINQ的性能与场景分析
在C#程序设计中,List作为最常用的集合类型,其遍历方式的选择直接影响代码的效率、可读性和维护性。本文ZHANID工具网通过对比for循环、foreach循环、LINQ查询三种主流遍历方...
2025-09-12 编程技术
805

基于Python开发一个base64转图片小工具实例代码详解
在日常开发中,我们经常需要处理Base64编码的图片数据(如API返回的图片流、数据库存储的二进制数据等)。本文ZHANID工具网将手把手教你用Python实现一个轻量级Base64转图片工...
2025-06-09 编程技术
566

C#随机数(Random)生成全攻略:从基础到高级应用实战
本文将带领读者从C#随机数的基础知识出发,逐步深入到高级应用实战。我们将探讨如何使用System.Random类生成随机数,如何在控制台程序、GUI程序和游戏开发中应用随机数,以及...
2025-04-17 编程技术
806

C#实现美国东部时间与北京时间相互转换的示例代码详解
在C#编程中,处理日期和时间是一项常见的任务。特别是在涉及跨时区的情况下,如将美国东部时间(ET)转换为北京时间(BJT),或者相反,需要对时区偏移量、夏令时等因素进行准确的...
2024-12-20 编程技术
609

C#编程中的命名空间(Namespace)使用方法详解
在C#编程中,命名空间(Namespace)是一个重要的概念,它用于组织代码,避免命名冲突,并提高代码的可读性和可维护性。通过合理使用命名空间,开发者可以更好地组织和管理大型项...
2024-12-18 编程技术
725

C#使用iTextSharp库将图片转换为PDF的步骤及实例代码解析
在现代软件开发中,将图片转换为PDF文档是一种常见需求,特别是在处理电子文档、报告生成和数据存储等场景中。iTextSharp是一个功能强大的开源库,专门用于在.NET环境中创建和...
2024-12-14 编程技术
732