亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c# Base64編碼和圖片的互相轉(zhuǎn)換代碼

 更新時(shí)間:2014年08月07日 22:16:41   作者:sjdev  
Base64編碼在Web方面有很多應(yīng)用,譬如在URL、電子郵件方面。網(wǎng)上有很多相關(guān)的資源用于提供Base64編碼和其他編碼的轉(zhuǎn)換,.Net Framework也提供了現(xiàn)成的功能類(lèi)(System.Convert)用于將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為Base64字符串

事出有因

         我們已經(jīng)做了一個(gè)編輯器,這個(gè)編輯器可以以xml格式存儲(chǔ)一些信息。在存儲(chǔ)圖片信息時(shí)我們碰到了一些問(wèn)題。我們本來(lái)在xml信息中存儲(chǔ)的是圖片的路徑,然而一旦客戶(hù)把這個(gè)信息copy到其他電腦上而沒(méi)有同時(shí)copy相關(guān)的圖片時(shí),就會(huì)出現(xiàn)一些問(wèn)題。
         后來(lái),我們把圖片數(shù)據(jù)轉(zhuǎn)換為Base64編碼,替代了原先存儲(chǔ)圖片路徑的方式。

轉(zhuǎn)換流程

將圖片轉(zhuǎn)化為Base64字符串的流程是:首先使用BinaryFormatter將圖片文件序列化為二進(jìn)制數(shù)據(jù),然后使用Convert類(lèi)的ToBase64String方法。將Base64字符串轉(zhuǎn)換為圖片的流程正好相反:使用Convert類(lèi)的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;
    }

運(yùn)行結(jié)果

相關(guān)文章

  • WPF中ImageBrush常用方式介紹

    WPF中ImageBrush常用方式介紹

    這篇文章介紹了WPF中ImageBrush的常用方式,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C#生成Word文檔代碼示例

    C#生成Word文檔代碼示例

    這篇文章主要介紹了C#生成Word文檔代碼示例,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • C#靜態(tài)方法的使用

    C#靜態(tài)方法的使用

    這篇文章介紹了C#靜態(tài)方法的使用,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#實(shí)現(xiàn)聊天消息渲染與圖文混排詳解

    C#實(shí)現(xiàn)聊天消息渲染與圖文混排詳解

    在實(shí)現(xiàn)聊天軟件時(shí),渲染文字表情圖文混排是一項(xiàng)非常繁瑣的工作,再加上還要支持GIF動(dòng)圖、引用消息、撤回消息、名片等不同樣式的消息渲染時(shí),就更加麻煩了。本文就來(lái)和大家分享一下具體實(shí)現(xiàn)方法,希望對(duì)大家有所幫助
    2023-02-02
  • WPF制作帶小箭頭的按鈕完整代碼

    WPF制作帶小箭頭的按鈕完整代碼

    WPF(Windows Presentation Foundation)是微軟推出的基于Windows 的用戶(hù)界面框架。下面通過(guò)本文給大家介紹WPF制作帶小箭頭的按鈕完整代碼,需要的朋友參考下吧
    2017-12-12
  • 簡(jiǎn)單實(shí)現(xiàn)C#異步操作

    簡(jiǎn)單實(shí)現(xiàn)C#異步操作

    這篇文章主要為大家詳細(xì)介紹了C#簡(jiǎn)單實(shí)現(xiàn)異步操作的方法,通過(guò)BeginInvoke、EndInvoke的方式實(shí)現(xiàn)異步編程,感興趣的小伙伴們可以參考一下
    2016-02-02
  • C# winForm實(shí)現(xiàn)的氣泡提示窗口功能示例

    C# winForm實(shí)現(xiàn)的氣泡提示窗口功能示例

    這篇文章主要介紹了C# winForm實(shí)現(xiàn)的氣泡提示窗口功能,涉及C# winForm窗口屬性與設(shè)置相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • C#中的Timer和DispatcherTimer使用實(shí)例

    C#中的Timer和DispatcherTimer使用實(shí)例

    這篇文章主要介紹了C#中的Timer和DispatcherTimer使用實(shí)例,本文分別給出它們的使用代碼實(shí)例,需要的朋友可以參考下
    2015-01-01
  • C#特性(Attribute)

    C#特性(Attribute)

    這篇文章介紹了C#的特性(Attribute),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 使用XmlSerializer序列化List對(duì)象成XML格式(list對(duì)象序列化)

    使用XmlSerializer序列化List對(duì)象成XML格式(list對(duì)象序列化)

    這篇文章主要介紹了使用XmlSerializer序列化List對(duì)象成XML格式(list對(duì)象序列化),需要的朋友可以參考下
    2014-03-03

最新評(píng)論