gpt4 book ai didi

WPF 最有效的图片加载方式

转载 作者:行者123 更新时间:2023-12-04 22:31:39 36 4
gpt4 key购买 nike

可能这听起来很愚蠢,但是,哪一种是加载图像的最有效方法?

一个

BitmapImage bmp = new BitmapImage();
using(FileStream fileStream = new FileStream(source_path, FileMode.Open))
{
bmp.BeginInit();
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.StreamSource = fileStream;
bmp.EndInit();
if (bmp.CanFreeze)
bmp.Freeze();

images.source = bmp;
}


BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bmp.UriSource = new Uri(source_path);
bmp.EndInit();
if (bmp.CanFreeze)
bmp.Freeze();

images.Source = bmp;

我记得我在某处读到从流加载完全禁用缓存。如果这是真的,这是否意味着从流加载在内存管理方面更好?

最佳答案

据我所知,当您通过设置 UriSource 加载 BitmapImage 时属性,图像总是被缓存。我不知道有什么办法可以避免这种情况。至少设置BitmapCreateOptions.IgnoreImageCache仅确保不会从缓存中检索图像,但不会阻止图像存储在缓存中。

BitmapCreateOptions中的“备注”说

When IgnoreImageCache is selected, any existing entries in the image cache are replaced even if they share the same Uri



我由此得出的结论是,只有在 Uri 加载图像时才会执行缓存。换句话说,如果您确实需要禁止图像缓存,则必须通过其 StreamSource 加载图像。属性(property)。

但是,如果这真的“在内存管理方面更好”,也许值得一试。您可以尝试两种替代方案,看看是否观察到内存消耗有任何显着差异。

关于WPF 最有效的图片加载方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818233/

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