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

在C#中,我们可以使用Base64编码将图片转换为字符串,也可以将Base64编码的字符串转换回图片。这通常用于在需要文本表示图像数据的场合(例如在Web开发中传输图像数据)。
在这里插入图片描述

将图片转换为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);    
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门德仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值