在基于MFC的应用程序中逐步渲染图像

时间:2015-03-23 02:10:23

标签: image mfc wic progressive

浏览器可以逐步渲染渐进式图像。 如果逐步编码,图像只能逐步解码。

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

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

Windows Imaging Component提供IWICProgressiveLevelControl接口以逐步解码图像。

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

任何建议都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

这里有一个很好的样本:

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

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

如示例所示,诀窍在于,如果您不知道完整文件可用,则无法使用IWICProgressiveLevelControl::GetLevelCount并立即选择最高级别。作为样本的文档说明,

  

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