如何将字节[]转换为位图帧c#
我尝试过这个,但有异常-由于对象的当前状态,操作无效如何将字节[]转换为位图帧c#,c#,wpf,bitmapframe,C#,Wpf,Bitmapframe,我尝试过这个,但有异常-由于对象的当前状态,操作无效 private BitmapFrame backconvertor(byte[] incomingBuffer) { BitmapImage bmpImage = new BitmapImage(); MemoryStream mystream = new MemoryStream(incomingBuffer); bmpImage.StreamSource = mystream;
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-准备就绪!)文档表明,要初始化映像,需要在
BeginInit
和EndInit
之间执行。即:
bmpImage.BeginInit();
bmpImage.StreamSource = mystream;
bmpImage.EndInit();
或者,您可以将流传递给构造函数:
bmpImage = new BitmapImage(mystream);
有关
BeginInit
文档的示例和更多讨论,请参见。文档表明,要初始化映像,需要在BeginInit
和EndInit
之间执行。即:
bmpImage.BeginInit();
bmpImage.StreamSource = mystream;
bmpImage.EndInit();
或者,您可以将流传递给构造函数:
bmpImage = new BitmapImage(mystream);
有关
BeginInit
的示例和更多讨论,请参见。这是我在WPF转换器中拥有的用于处理字节到位图帧的功能,它可以完美地工作:
var imgBytes = value as byte[];
if (imgBytes == null)
return null;
using (var stream = new MemoryStream(imgBytes))
{
return BitmapFrame.Create(stream,
BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
}
它也是线程安全的,就像我在任务中使用它一样。也可以在之前运行。这是我在WPF转换器中处理字节到位图帧的功能,它工作得非常好:
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之前使用的一样。哪一行引发异常?BitmapFrame bf=BitmapFrame.Create(bmpImage);看看这里没有。有一个库,我只需要一个函数字节[]->BitmapFrame哪一行引发异常?BitmapFrame bf=BitmapFrame.Create(bmpImage);请看这里否。有一个库,我只需要一个函数字节[]->BitmapFramestill错误((“在bmpImage.EndInit()中未找到此操作的成像组件”); line@curiousity:当然,如果使用
CopyPixels
,该方法不会复制BitmapImage
所需的任何元信息BitmapImage
所需的是一个完全编码的流,文件格式为header.still错误((“在bmpImage.EndInit()中未找到此操作的成像组件”); line@curiousity:当然,如果使用CopyPixels
,则该方法不会复制BitmapImage
所需的任何元信息BitmapImage
所需的是具有文件格式标头的完全编码流。