C# WPF Image控件下對於Base64的轉化顯示


算作前言

本文對圖片如何轉化成base64不做描述,我們可以從很多途徑了解到轉化辦法。卻很少有博客提到怎么在WPF的Image控件中顯示圖片。

對於base64的合法性

隨便拿一張圖片轉一下試一試:

額。好長....取前面一部分吧

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAA9CAMAAADlJaswAAAAe1BMVE.....

C#對於這段數據,通常的做法是:

try
{
    byte[] streamBase = Convert.FromBase64String(base64);
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message);
}

拋出了異常:

輸入的不是有效的 Base-64 字符串,因為它包含非 Base-64 字符、兩個以上的填充字符,或者填充字符間包含非法字符。

明明是正常轉化得來的,為什么卻是不合法的字符串?其實這里還需要一點處理,就算把頭部信息去掉!

//base64 = base64.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//將base64頭部信息替換
string imagebase64 = base64.Substring(base64.IndexOf(",") + 1);

這樣就可以成功轉化了。現在來看怎么顯示在Image里面。

WPF中Image顯示

 答案:https://stackoverflow.com/questions/593388/how-do-i-read-a-base64-image-in-wpf

string imagebase64 = base64.Substring(base64.IndexOf(",") + 1);
byte[] streamBase = Convert.FromBase64String(imagebase64);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = new MemoryStream(streamBase);
bi.EndInit();
Image.Source = bi;

沒啥太花里胡哨的東西。


免責聲明!

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



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