这太奇怪了。
我正在尝试使用以下代码在 UWP 中使用 StorageFile
加载图像:
using (var stream = await storageFile.OpenStreamForReadAsync())
{
SKBitmap bitmap = SKBitmap.Decode(stream);
// the rest
}
然而,一些图片在调用
SKBitmap.Decode
的时候失败,并出现以下错误信息:Value cannot be null.
Parameter name: buffer
我在调试器中检查流,它不是空的,并且有值。 我甚至将它写在后面:
if (stream.CanRead && stream.CanSeek)
{
stream.Seek(0, SeekOrigin.Begin);
}
这些文件总是失败。例如,其中一个是这个:
我不确定其他人是否能够通过我上传到SO的这张图片来重现它。
此外,我已经打开了所有限制,因此不是关于权限的问题。这张照片可以通过调用GetThumbnailAsync
来显示,所以应用程序设置是正确的。
现在是最奇怪的事情。如果我这样做:
SKImage img = SKImage.FromEncodedData(stream);
SKBitmap bitmap = SKBitmap.FromImage(img);
它适用于那些照片!
这让我疯狂!
我的意思是,我找到了一种使它工作的方法,但为什么呢?