1

浏览器可以逐步渲染渐进式图像。并且图像只有在被渐进编码的情况下才能被渐进解码。

例如,使用“隔行扫描”选项保存的 GIF 或 PNG 图像,或使用“逐行扫描”选项保存的 JPEG 图像。

我想像浏览器一样在基于 MFC 的应用程序中呈现渐进式图像。

Windows 图像处理组件提供 IWICProgressiveLevelControl 接口来逐步解码图像。

但我找不到任何示例来展示如何使用 IWICProgressiveLevelControl 同时逐步流式传输和显示图像。

任何意见,将不胜感激。谢谢。

4

1 回答 1

0

这里有一个很好的示例:

https://code.msdn.microsoft.com/Windows-Imaging-Component-3af3cd49

一旦您习惯IWICProgressiveLevelControl::SetCurrentLevel选择扫描,解码器将正常运行,但仅使用扫描直到并包括您选择的扫描。因此,对链中的任何调用CopyPixels或任何IWICBitmapSource组件都将在选定的扫描级别接收完全解码的图像。

如示例中所示,诀窍是IWICProgressiveLevelControl::GetLevelCount如果您不知道完整文件可用,则不能立即使用并选择最大级别。作为示例状态的文档,

IWICProgressiveLevelControl 允许您控制在帧解码中使用的渐进细节级别。它还允许您查询文件中渐进级别的总数;但是,不建议在 JPEG 图像上使用此方法,因为直到下载整个图像后才知道总数,这违背了渐进式解码的目的。相反,此示例演示了在 WIC 返回 WINCODEC_ERR_INVALIDPROGRESSIVELEVEL 之前迭代地请求增加详细级别的推荐做法。

于 2015-06-24T09:48:09.630 回答