0

我已经尝试过了,但有异常 - 由于对象的当前状态,操作无效

private BitmapFrame backconvertor(byte[] incomingBuffer)
    {
        BitmapImage bmpImage = new BitmapImage();
        MemoryStream mystream = new MemoryStream(incomingBuffer);
        bmpImage.StreamSource = mystream;
        BitmapFrame bf = BitmapFrame.Create(bmpImage);
        return bf;
    }

当我尝试时错误上升

return backconvertor(buff); 

在其他功能中(buff - 准备好了!)

4

2 回答 2

2

文档表明,为了初始化图像,您需要在 和 之间BeginInit进行EndInit。那是:

bmpImage.BeginInit();
bmpImage.StreamSource = mystream;
bmpImage.EndInit();

或者,您可以将流传递给构造函数:

bmpImage = new BitmapImage(mystream);

有关. _ _BeginInit

于 2011-11-28T15:52:39.433 回答
1

这就是我在 WPF 转换器中处理字节到 BitmapFrame 的内容,它工作得很好:

            var imgBytes = value as byte[];
            if (imgBytes == null)
                return null;
            using (var stream = new MemoryStream(imgBytes))
            {
                return BitmapFrame.Create(stream,
                    BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
            }

它也是线程安全的,因为我之前也在 Task.Run 中使用过它。

于 2016-03-21T16:40:47.617 回答