c# Base64編碼和圖片的互相轉(zhuǎn)換代碼
事出有因
我們已經(jīng)做了一個編輯器,這個編輯器可以以xml格式存儲一些信息。在存儲圖片信息時我們碰到了一些問題。我們本來在xml信息中存儲的是圖片的路徑,然而一旦客戶把這個信息copy到其他電腦上而沒有同時copy相關(guān)的圖片時,就會出現(xiàn)一些問題。
后來,我們把圖片數(shù)據(jù)轉(zhuǎn)換為Base64編碼,替代了原先存儲圖片路徑的方式。
轉(zhuǎn)換流程
將圖片轉(zhuǎn)化為Base64字符串的流程是:首先使用BinaryFormatter將圖片文件序列化為二進(jìn)制數(shù)據(jù),然后使用Convert類的ToBase64String方法。將Base64字符串轉(zhuǎn)換為圖片的流程正好相反:使用Convert類的FromBase64String得到圖片文件的二進(jìn)制數(shù)據(jù),然后使用BinaryFormatter反序列化方法。
/// <summary>
/// 將圖片數(shù)據(jù)轉(zhuǎn)換為Base64字符串
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ToBase64(object sender, EventArgs e)
{
Image img = this.pictureBox.Image;
BinaryFormatter binFormatter = new BinaryFormatter();
MemoryStream memStream = new MemoryStream();
binFormatter.Serialize(memStream, img);
byte[] bytes = memStream.GetBuffer();
string base64 = Convert.ToBase64String(bytes);
this.richTextBox.Text = base64;
}
/// <summary>
/// 將Base64字符串轉(zhuǎn)換為圖片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ToImage(object sender, EventArgs e)
{
string base64 = this.richTextBox.Text;
byte[] bytes = Convert.FromBase64String(base64);
MemoryStream memStream = new MemoryStream(bytes);
BinaryFormatter binFormatter = new BinaryFormatter();
Image img = (Image)binFormatter.Deserialize(memStream);
this.pictureBox.Image = img;
}
運行結(jié)果


- C# 圖片與Base64碼的相互轉(zhuǎn)化問題(代碼詳解)
- c#和java base64不一致的解決方法
- C#實現(xiàn)字符串與圖片的Base64編碼轉(zhuǎn)換操作示例
- C#實現(xiàn)Base64處理的加密解密,編碼解碼示例
- C#編寫的Base64加密和解密類
- C#解碼base64編碼二進(jìn)制數(shù)據(jù)的方法
- asp.C#實現(xiàn)圖片文件與base64string編碼解碼
- c# 實現(xiàn)文件上傳下載功能的實例代碼
- C#實現(xiàn)的文件上傳下載工具類完整實例【上傳文件自動命名】
- C# 文件上傳下載(Excel導(dǎo)入,多線程下載)功能的實現(xiàn)代碼
- C#實現(xiàn)Web文件上傳的兩種方法實例代碼
- c# 用Base64實現(xiàn)文件上傳
相關(guān)文章
C#高效比較兩個DataTable數(shù)據(jù)差異化的方法實現(xiàn)
本文主要介紹了C#高效比較兩個DataTable數(shù)據(jù)差異化的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
WinForm使用DecExpress控件中的ChartControl插件繪制圖表
這篇文章介紹了WinForm使用DecExpress控件中的ChartControl插件繪制圖表的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05

