算作前言
本文對圖片如何轉化成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;
沒啥太花里胡哨的東西。