C#中圖片的Base64編碼與解碼轉(zhuǎn)換詳解
將圖片轉(zhuǎn)換為Base64字符串
要將圖片文件轉(zhuǎn)換為Base64字符串,可以使用System.Drawing命名空間中的Image類(注意:在.NET Core和.NET 5+中,可能需要使用System.Drawing.Common包,并且它可能在某些平臺(tái)上不可用,比如Linux,除非安裝了相應(yīng)的依賴項(xiàng))。然而,更常見(jiàn)和推薦的方法是使用System.IO和Convert類來(lái)處理字節(jié)數(shù)組。
以下是一個(gè)示例代碼,展示了如何將圖片文件轉(zhuǎn)換為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())
{
// 將圖片保存到內(nèi)存流中
image.Save(ms, format);
// 將內(nèi)存流轉(zhuǎn)換為字節(jié)數(shù)組
byte[] imageBytes = ms.ToArray();
// 將字節(jié)數(shù)組轉(zhuǎn)換為Base64字符串
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
}
}
注意:上面的代碼使用了ImageFormat枚舉來(lái)指定圖片格式。但是,如果不想依賴System.Drawing,可以直接使用File.ReadAllBytes方法來(lái)讀取圖片文件的字節(jié)數(shù)組,然后轉(zhuǎn)換為Base64字符串。
一個(gè)不依賴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字符串轉(zhuǎn)換為圖片
要將Base64字符串轉(zhuǎn)換回圖片,可以使用Convert.FromBase64String方法將Base64字符串轉(zhuǎn)換為字節(jié)數(shù)組,然后使用MemoryStream和Image類(或Bitmap類)來(lái)創(chuàng)建圖片對(duì)象。
以下是一個(gè)示例代碼,展示了如何將Base64字符串轉(zhuǎn)換為圖片并保存到文件中:
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); // 可以根據(jù)需要更改格式
}
}
}
同樣地,如果不想依賴System.Drawing,可以將字節(jié)數(shù)組寫(xiě)入文件,并使用適當(dāng)?shù)奈募U(kuò)展名和關(guān)聯(lián)的程序來(lái)打開(kāi)它(例如,使用.jpg擴(kuò)展名并用圖片查看器打開(kāi))。但是,請(qǐng)注意,這種方法不會(huì)直接創(chuàng)建一個(gè)Image對(duì)象,只是將字節(jié)數(shù)據(jù)保存為文件。
一個(gè)不依賴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);
}
}
到此這篇關(guān)于C#中圖片的Base64編碼與解碼轉(zhuǎn)換詳解的文章就介紹到這了,更多相關(guān)C#圖片Base64編碼與解碼轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WPF仿LiveCharts實(shí)現(xiàn)餅圖的繪制
這篇文章主要介紹了如何利用WPF仿LiveCharts實(shí)現(xiàn)餅圖的繪制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下2022-07-07
非常實(shí)用的C#字符串操作處理類StringHelper.cs
這篇文章主要為大家詳細(xì)介紹了非常實(shí)用的C#字符串操作處理類StringHelper.cs,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
C#將國(guó)產(chǎn)Linux視頻錄制生成mp4的具體實(shí)現(xiàn)
這篇文章主要介紹了C#將國(guó)產(chǎn)Linux視頻錄制生成mp4的具體實(shí)現(xiàn),文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08
使用C#在Word文檔中添加文本和圖片超鏈接的實(shí)現(xiàn)方式
在開(kāi)發(fā)辦公自動(dòng)化(OA)系統(tǒng)、報(bào)表生成工具或文檔處理腳本時(shí),我們經(jīng)常需要操作 Word 文檔,其中,插入超鏈接是一個(gè)高頻需求,本文將介紹如何使用 C# 在 Word 文檔中添加文本和圖片超鏈接的具體實(shí)現(xiàn)方式,需要的朋友可以參考下2026-03-03
C#使用NPOI實(shí)現(xiàn)Excel和DataTable的互轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了C#使用NPOI實(shí)現(xiàn)Excel和DataTable的互轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
c#一個(gè)定時(shí)重啟的小程序?qū)崿F(xiàn)代碼
今天有個(gè)朋友找我問(wèn)有沒(méi)有一些能像Windows一樣計(jì)劃任務(wù)重啟的軟件,我也不清楚。他它說(shuō)能讓我做一個(gè)給他它么?我考慮了一下,他的服務(wù)器都是有安裝.NET框架的,那可以用.NET來(lái)使下~~!2008-09-09

