我想將一個圖像的字節數組轉換爲BitmapImage綁定到一個按鈕。WPF BitmapImage內存使用
public static BitmapImage GetBitmapImageFromByteArray(byte[] p_Image)
{
try
{
BitmapImage bmpImage;
if (p_Image != null)
{
using (MemoryStream msStream = new MemoryStream(p_Image))
{
msStream.Position = 0;
bmpImage = GetBitmapImageFromStream(msStream);
//msStream.Close();
return bmpImage;
}
}
}
catch
{
}
return null;
}
凡GetBitmapImageFromStream看起來是這樣的:
public static BitmapImage GetBitmapImageFromStream(MemoryStream msImage)
{
try
{
if (msImage == null) return null;
BitmapImage bmpImg = new BitmapImage();
msImage.Position = 0;
bmpImg.BeginInit();
bmpImg.CacheOption = BitmapCacheOption.OnLoad;
bmpImg.StreamSource = msImage;
bmpImg.EndInit();
return bmpImg;
}
catch
{
return null;
}
}
在bmpImg.EndInit(),還有在內存中這個巨大漲幅。我的界面上有很多按鈕,這是造成問題的原因。爲什麼會發生這種情況,我該如何修復它或如何恢復內存?
謝謝。
雖然它不能解決你的問題,但在'GetBitmapImageFromStream'函數中,你創建了一個未在using語句中引用的'wrapper'流。 – Ben 2011-05-26 19:17:53
對不起,這..取消它 – user296623 2011-05-26 19:49:53