StorageFile.GetScaledImageAsThumbnailAsync 不支持元数据旋转图像

Posted

技术标签:

【中文标题】StorageFile.GetScaledImageAsThumbnailAsync 不支持元数据旋转图像【英文标题】:StorageFile.GetScaledImageAsThumbnailAsync does not support metadata rotated image 【发布时间】:2019-11-25 15:57:43 【问题描述】:

    通过 Windows 10 编辑器编辑图像。例如。旋转图像:

    尝试打开此图片:IRandomAccessStream thumb = await file.GetScaledImageAsThumbnailAsync(ThumbnailMode.SingleItem, 4096);

    GetScaledImageAsThumbnailAsync 方法永远不会返回,不会出现错误或异常。


我需要这个IRandomAccessStream 来填充BitmapDecoder 的内部映射:

_bitmapDict[index] = await BitmapDecoder.CreateAsync(thumb);

任何想法如何解决GetScaledImageAsThumbnailAsync

【问题讨论】:

可能是图片没有与之关联的缩略图,而您却得到了null 回复? @JSteward 不幸的是没有,缩略图正常加载...加载缩略图我正在使用file.GetScaledImageAsThumbnailAsync(ThumbnailMode.ListView, Convert.ToUInt32(textureWidth), ThumbnailOptions.ResizeThumbnail); 并且没有null,因为我提到了它的异步调用(await)而且它永远不会回来,即使在 5 分钟后也不... 【参考方案1】:

我可以重现您的问题,如果您使用图像编辑器编辑图像,然后使用GetScaledImageAsThumbnailAsync 方法打开它,它可能会得到StorageItemThumbnail,但这需要很长时间。图片越大,使用时间越长。目前有一种使用 Paint 编辑图片的解决方法。

【讨论】:

一旦我在开发一个应用程序,我就不能要求用户打开画图并正确旋转你不觉得吗?! 是的,我知道了,我会向相关团队报告这个问题。 @nico-zhu-msft 谢谢!如果您对他们有任何反馈,请告诉我! :D 嗨,Marcelo,感谢您报告此事。我们一直在研究它,它似乎是开发人员的一个已知问题,它导致 RuntimeBroker 在执行此任务时对具有此类旋转元数据的图像执行此任务时 CPU 内核峰值。我们仍在进一步调查。 我要求对此进行修复。我不能保证它何时或是否会发布,但请继续关注发布说明以获取任何更新。 docs.microsoft.com/en-us/windows/whats-new

以上是关于StorageFile.GetScaledImageAsThumbnailAsync 不支持元数据旋转图像的主要内容,如果未能解决你的问题,请参考以下文章