gpt4 book ai didi

WPF BitmapImage 内存使用情况

转载 作者:行者123 更新时间:2023-12-04 21:27:44 26 4
gpt4 key购买 nike

我正在尝试将图像的字节数组转换为 BitmapImage 以绑定(bind)到按钮。

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() 上,内存中有一个巨大的峰值。而且我的界面上有很多按钮,这导致了问题。为什么会发生这种情况,我该如何修复它或如何恢复内存?

谢谢。

最佳答案

来自 help我的猜测是它会创建一个副本来缓存它,也许一个副本会缩小以在按钮上使用它。而GC不会收集复制到流中的所有数据,内存中会有多个副本。

关于WPF BitmapImage 内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6143214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com