在基于 MFC 的应用程序中逐步渲染图像
Posted
技术标签:
【中文标题】在基于 MFC 的应用程序中逐步渲染图像【英文标题】:Render images progressively in a MFC based application 【发布时间】:2015-03-23 02:10:23 【问题描述】:浏览器可以逐步呈现渐进式图像。 并且图像只有在渐进式编码的情况下才能被渐进式解码。
例如,使用“隔行扫描”选项保存的 GIF 或 PNG 图像,或使用“逐行扫描”选项保存的 JPEG 图像。
我想像浏览器一样在基于 MFC 的应用程序中呈现渐进式图像。
Windows Imaging Component 提供 IWICProgressiveLevelControl 接口来逐步解码图像。
但我找不到任何示例来展示如何使用 IWICProgressiveLevelControl 同时逐步流式传输和显示图像。
任何建议将不胜感激。谢谢。
【问题讨论】:
【参考方案1】:这里有一个很好的示例:
https://code.msdn.microsoft.com/Windows-Imaging-Component-3af3cd49
一旦您使用IWICProgressiveLevelControl::SetCurrentLevel
选择扫描,解码器将正常运行,但仅使用直到并包括您选择的扫描。因此,任何对CopyPixels
或链中任何IWICBitmapSource
组件的调用都将在选定的扫描级别接收完全解码的图像。
如示例所示,诀窍在于,如果您不知道完整文件可用,则不能使用IWICProgressiveLevelControl::GetLevelCount
并立即选择最大级别。作为示例状态的文档,
IWICProgressiveLevelControl 允许您控制在帧解码中使用的渐进细节级别。它还允许您查询文件中渐进级别的总数;但是,不建议在 JPEG 图像上使用此方法,因为在下载整个图像之前不知道总数,这违背了渐进式解码的目的。相反,此示例演示了在 WIC 返回 WINCODEC_ERR_INVALIDPROGRESSIVELEVEL 之前迭代地请求增加详细级别的推荐做法。
【讨论】:
以上是关于在基于 MFC 的应用程序中逐步渲染图像的主要内容,如果未能解决你的问题,请参考以下文章