首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否将内存流转换为BitmapImage?

是否将内存流转换为BitmapImage?
EN

Stack Overflow用户
提问于 2011-03-18 08:03:00
回答 2查看 47K关注 0票数 36

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

我在网上看到了许多矛盾和混乱的代码来完成将byte[]转换为BitmapImage的任务。我不确定是否需要添加任何代码,因为该图像最初是一个PNG。

如何将流转换为BitmapImage?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-18 08:08:01

这应该可以做到:

代码语言:javascript
运行
复制
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将处理它。

票数 88
EN

Stack Overflow用户

发布于 2014-11-19 21:34:34

代码语言:javascript
运行
复制
 using (var stream = new MemoryStream(data))
        {
          var bi = BitmapFrame.Create(stream , BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.OnLoad);
        }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5346727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档