我正在使用以下代码来解码Jpge图像
UnmanagedMemoryStream^ mStream = gcnew UnmanagedMemoryStream(_jpegDataBuff, _buffLength);
JpegBitmapDecoder^ decoder = gcnew JpegBitmapDecoder(mStream, BitmapCreateOptions::PreservePixelFormat, BitmapCacheOption::OnLoad);
BitmapSource^ bitmapSource = decoder->Frames[0];
我使用bitmapSource
来显示对WPF的控制,但有时结果如下
我在互联网上搜索过很多,但我还没有解决它!
有人可以帮助我吗?
非常感谢,
T& T公司
答案 0 :(得分:1)
从它的外观来看,我会说JPEG源不完整或无效。唯一例外JpegBitmapDecoder引发的是ArgumentNullException
(流为null
)和FileFormatException
。最可能通过分析文件头来检测文件格式。 JIF / JFIF file structure将图像描述信息保存在相对较小的标题中,后跟“原始”数据。
我猜这个解码器是有弹性的,可以忽略无效(灰色前最后渲染)和/或丢失(渲染灰色)块。我认为检测的唯一方法是分析最终图像(可能检查最后8x8px块没有相同颜色?)或源(可能是计数数据块?)。