图像标头无法识别。 (WindowsES 8应用程序中的HRESULT异常:0x88982F61)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像标头无法识别。 (WindowsES 8应用程序中的HRESULT异常:0x88982F61)相关的知识,希望对你有一定的参考价值。

这是我的代码......

    public async Task SetLargeImageAsync(byte[] imageBytes,
        bool storeBytesInObject = false)
    {

        var tcs = new TaskCompletionSource<string>();

        SmartDispatcher.BeginInvoke(() =>
        {
            using (MemoryStream ms = new MemoryStream(imageBytes))
            {

                if (storeBytesInObject)
                    this.LargeImageBytes = imageBytes;

                BitmapImage image = new BitmapImage();

                image.SetSource(ms);

                this.LargeImage = image;

                tcs.SetResult(string.Empty);
            }
        });

        await tcs.Task;
    }

我正在将字节发送到流中。这很好用;它正在显示一个图像。

但有时我会得到以下异常:

图像标头无法识别。 (来自HRESULT的异常:0x88982F61)MS.Internal.XcpImports.CheckHResult(UInt32 hr)位于System.Windows.Media.Imaging.BitmapSource.SetSourceInternal(Stream streamSource)的MS.Internal.XcpImports.BitmapSource_SetSource(BitmapSource bitmapSource,CValue&byteStream) System.Windows.Media.Imaging.BitmapSource.SetSource(Stream streamSource)中的System.Windows.Media.Imaging.BitmapImage.SetSourceInternal(Stream streamSource)

问题是什么?不同类型的图像有什么问题吗?

我找到了一个地方,我们应该使用以下代码来寻找起始位置:

ms.Seek(0, SeekOrigin.Begin)

这是真的吗?解决方案是什么?

答案

您传入的图像无效 - 要么已损坏,要么以WP无法解码的格式存储。有关支持格式的完整列表,请访问:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff462087(v=vs.105).aspx#BKMK_ImageSupport

另一答案

在开始操作之前,请确保imageBytes.Position = 0。

另一答案

正如MarcosVasconcelos的评论中所提到的,我的解决方案是在写入流之前和设置BitmapImage Stream源之前将MemoryStream中的位置设置为开头。

例:

public static BitmapImage CreateImage(byte[] src)
        {
            var img = new BitmapImage();
            var strm = new System.IO.MemoryStream();           

            strm.Write(src, 0, src.Length);

            // set the position of stream to 0 after writing to it
            strm.Seek(0, System.IO.SeekOrigin.Begin);

            img.BeginInit();
            img.StreamSource = strm;
            img.EndInit();
            return img;
        }

以上是关于图像标头无法识别。 (WindowsES 8应用程序中的HRESULT异常:0x88982F61)的主要内容,如果未能解决你的问题,请参考以下文章

如何解决错误? “服务器无法识别 HTTP 标头 SOAPAction 的值”

无法使用 Apache 在图像上设置过期标头

无法识别客户端 http 标头何时完成

为啥 Rails 无法识别请求标头中的 `Accept: application/json`?

Tesseract OCR 无法识别除法符号“÷”

人工智能热门技术是图像识别,5大应用场景无法反驳