gpt4 book ai didi

wpf - 将内存流转换为 BitmapImage?

转载 作者:行者123 更新时间:2023-12-03 08:51:54 27 4
gpt4 key购买 nike

我有一个最初是 PNG 的图像,我已将其转换为 byte[] 并保存在数据库中。最初,我只是简单地将 PNG 读入内存流,然后将流转换为 byte[]。现在我想读回 byte[] 并将其转换为 BitmapImage,以便我可以将 WPF Image 控件绑定(bind)到它。

我在网上看到很多相互矛盾和令人困惑的代码来完成将 byte[] 转换为 BitmapImage 的任务。由于图像最初是 PNG,我不确定是否需要添加任何代码。

如何将流转换为 BitmapImage?

最佳答案

这应该这样做:

using (var stream = new MemoryStream(data))
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = stream;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
bitmap.Freeze();
}
BitmapCacheOption.OnLoad 很重要在这种情况下,因为否则 BitmapImage 可能会在按需加载时尝试访问流,并且流可能已经关闭。

卡住位图是可选的,但如果您确实卡住它,您可以跨线程共享位图,否则这是不可能的。

您不必对图像格式做任何特别的事情 - BitmapImage 会处理它。

关于wpf - 将内存流转换为 BitmapImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346727/

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