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)文章
C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解
這篇文章主要介紹了C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09C# async/await任務(wù)超時(shí)處理的實(shí)現(xiàn)
本文主要介紹了C# async/await任務(wù)超時(shí)處理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02IIS下調(diào)用證書(shū)出現(xiàn)異常的解決方法 (C#)
這篇文章主要為大家詳細(xì)介紹了IIS下調(diào)用證書(shū)出現(xiàn)異常的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05在c#中把字符串轉(zhuǎn)為變量名并獲取變量值的小例子
這篇文章介紹了在c#中把字符串轉(zhuǎn)為變量名并獲取變量值的小例子,有需要的朋友可以參考一下2013-09-09Unity編輯器預(yù)制體工具類PrefabUtility常用函數(shù)和用法
這篇文章主要為大家介紹了Unity編輯器預(yù)制體工具類PrefabUtility常用函數(shù)及用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08基于AForge實(shí)現(xiàn)C#攝像頭視頻錄制功能
這篇文章主要為大家詳細(xì)介紹了基于AForge實(shí)現(xiàn)C#攝像頭視頻錄制功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10