首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >byte[]到ImageSource流

byte[]到ImageSource流
EN

Stack Overflow用户
提问于 2012-08-16 08:26:54
回答 2查看 647关注 0票数 1

我需要将byte[]转换为BitmapImage,并在WPF图像控件中显示它。(img.Source = ...)。

如果我像这样转换它:

代码语言:javascript
复制
m_photo = new BitmapImage();

using (MemoryStream stream = new MemoryStream(photo.ToArray()))
{
    m_photo.BeginInit();
    m_photo.StreamSource = stream;
    m_photo.EndInit();
}

无法将XAML绑定到源属性,因为"m_photo拥有另一个流“...我能做什么?

EN

回答 2

Stack Overflow用户

发布于 2012-08-16 09:48:39

在begininit之后将缓存选项设置为OnLoad

代码语言:javascript
复制
m_photo.CacheOption = BitmapCacheOption.OnLoad;

编辑:完成bmp数组到图像源的代码

代码语言:javascript
复制
                DrawingGroup dGroup = new DrawingGroup();
                using (DrawingContext drawingContext = dGroup.Open())
                {
                    var bmpImage = new BitmapImage();
                    bmpImage.BeginInit();
                    bmpImage.CacheOption = BitmapCacheOption.OnLoad;

                    bmpImage.StreamSource = new MemoryStream(photoArray);
                    bmpImage.EndInit();
                    drawingContext.DrawImage(bmpImage, new Rect(0, 0, bmpImage.PixelWidth, bmpImage.PixelHeight));
                    drawingContext.Close();
                }
                DrawingImage dImage = new DrawingImage(dGroup);
                if (dImage.CanFreeze)
                    dImage.Freeze();
                imageControl.Source = dImage;
票数 1
EN

Stack Overflow用户

发布于 2012-08-16 14:41:16

好了,我找到解决方案了。如果在类的代码中使用此代码(将byte[]转换为bitmapSource),则会出现此错误,即对象在另一个流中。但是如果创建一个转换器(IValueConverter)并将其与XAML binding中相同的转换代码一起使用-一切都可以!

谢谢大家!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11979120

复制
相关文章

相似问题

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