問題:C#將base64轉換成二進制圖片;結果:c# Base64編碼和圖片的互相轉換代碼


c# Base64編碼和圖片的互相轉換代碼

Base64編碼在Web方面有很多應用,譬如在URL、電子郵件方面。網上有很多相關的資源用於提供Base64編碼和其他編碼的轉換,.Net Framework也提供了現成的功能類(System.Convert)用於將二進制數據轉換為Base64字符串

事出有因

         我們已經做了一個編輯器,這個編輯器可以以xml格式存儲一些信息。在存儲圖片信息時我們碰到了一些問題。我們本來在xml信息中存儲的是圖片的路徑,然而一旦客戶把這個信息copy到其他電腦上而沒有同時copy相關的圖片時,就會出現一些問題。
         后來,我們把圖片數據轉換為Base64編碼,替代了原先存儲圖片路徑的方式。

轉換流程

將圖片轉化為Base64字符串的流程是:首先使用BinaryFormatter將圖片文件序列化為二進制數據,然后使用Convert類的 ToBase64String方法。將Base64字符串轉換為圖片的流程正好相反:使用Convert類的FromBase64String得到圖片文 件的二進制數據,然后使用BinaryFormatter反序列化方法。

/// <summary>
     /// 將圖片數據轉換為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字符串轉換為圖片
     /// </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;
     }
   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM