【发布时间】:2013-06-06 17:11:30
【问题描述】:
我正在使用以下内容将来自网络流的传入字节数组数据转换为要在屏幕上显示的图像,但在运行正常一段时间后,我不断收到异常“找不到适合完成此操作的成像组件”。内部异常为“找不到组件。(来自 HRESULT 的异常:0x88982F50)”。我已经研究过缓冲区大小问题,但我认为不是这样。有什么想法吗?
public static ImageSource ByteToImage(byte[] imageData)
{
BitmapImage biImg = new BitmapImage();
MemoryStream ms = new MemoryStream(imageData);
try
{
biImg.BeginInit();
biImg.StreamSource = ms;
biImg.EndInit();
}
catch ( Exception e)
{
MessageBox.Show("1"+ e.InnerException);
}
ImageSource imgSrc = biImg as ImageSource;
return imgSrc;
}
其他信息
这是我在接收网络流的 HandlerThread 中使用的;
NetworkStream networkStream = new NetworkStream(handlerSocket);
int thisRead = 0;
int blockSize = 256000;
Byte[] dataByte = new Byte[blockSize];
lock (this)
{
while (running)
{
thisRead = networkStream.Read(dataByte, 0, blockSize);
Dispatcher.BeginInvoke(new ThreadStart(delegate
{ pictureBox1.Source = ByteToImage(dataByte); }));
if (thisRead == 0) break;
}
}
【问题讨论】:
-
你确定字节是正确的吗?尝试将它们写入磁盘并检查是否可以使用图像编辑器打开文件。
-
您的字节数组包含标题? (.bmp、.jpg 等)还是原始数据?
-
你在调试这个以确定异常发生在哪一行?
-
@DonBoitnott 和严重这很难,因为它可以工作一段时间,所以我无法确定我想在没有 F5 的情况下在该方法中调试的时间,并且真的不想打开保存到磁盘的每个图像。 Nic007 原始字节[] 我很确定。
-
@killianmcc 这可能已经解决了:stackoverflow.com/questions/9724876/…