组件无法找到。(HRESULT: 0x88982F50的异常)

12

每当我尝试从本地文件检索图像时,以上异常会在await bitmapImage.SetSourceAsync(fileStream);行发生。

这是我用于存储和检索图像文件的方法。

    public async Task<BitmapImage> RetrieveImageFromFile(String fileName)
    {
        try
        {
            StorageFile localFile = await _storageFolder.GetFileAsync(fileName + "Img");
            BitmapImage bitmapImage = new BitmapImage();
            using (IRandomAccessStream fileStream = await localFile.OpenAsync(FileAccessMode.Read))
            {
                await bitmapImage.SetSourceAsync(fileStream);
            }
            return bitmapImage;
        }
        catch(Exception e)
        {
            return null;
        }
    }

    public async void WriteImageToFile(string fileName, IRandomAccessStreamWithContentType stream )
    {
        StorageFile file = await _storageFolder.CreateFileAsync(fileName + "Img", CreationCollisionOption.ReplaceExisting);
        Stream streamToSave = stream.AsStreamForWrite();
        using (Stream fileStram = await file.OpenStreamForWriteAsync())
        {
            streamToSave.CopyTo(fileStram);
        }
    }

WriteImageToFile方法的输入流从contact.Thumbnail.OpenReadAsync()方法中检索

需要帮忙吗?


我也遇到了同样的问题... 你找到解决方案了吗? - Pedrom
2
希望你现在已经解决了这个问题,但是0x88982f50错误通常与无法正确读取/解码图像文件有关。请验证您的文件格式是否正确。(谷歌搜索88982f50可以看到数十个潜在相关修复程序,都涉及图像文件I/O。)结果证明这也是我的问题...文件损坏了。 - sraboy
@sraboy 谢谢,你救了我的一天 :) 坏文件大小为0字节或格式错误。我们应该始终检查流是否成功创建。 - user3290180
@Hong,感谢您指出这一点。我已经回答了这个问题。 - sraboy
1
@sraboy 很高兴成为第一个为你的回答点赞的人。 - Hong
显示剩余2条评论
2个回答

6

我将我的评论转化为答案,因为它一直在帮助人们:

0x88982f50错误通常与无法正确读取/解码图像文件有关。请验证您的文件是否格式正确。谷歌搜索88982f50可以看到数十个潜在相关修复程序,都涉及图像文件I/O。我从未找到这个错误的明确来源,但这也是我的问题... 文件损坏。


4

虽然回答晚了,但可以帮助其他人不再花费时间去寻找...

错误代码0x88982f50是WINCODEC_ERR_COMPONENTNOTFOUND,这是Windows图像组件无法解码图像文件的方式。

最有可能的情况是文件已损坏,或者Windows安装的WIC版本中没有解码所需的编解码器。

Microsoft没有提供任何相关信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接