イメージのバイト配列をBitmapImageに変換してボタンにバインドしようとしています。 GetBitmapImageFromStreamはこのようなものになります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;
}
:
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
それについて残念です。それを取り除いた – user296623