浏览器可以逐步渲染渐进式图像。 如果逐步编码,图像只能逐步解码。
例如,使用"隔行扫描"保存的GIF或PNG图像。使用" progressive"保存的选项或JPEG图像选项。我想像浏览器一样在基于MFC的应用程序中渲染渐进式图像。
Windows Imaging Component提供IWICProgressiveLevelControl接口以逐步解码图像。
但我无法找到任何示例来展示如何使用IWICProgressiveLevelControl同时逐步流式传输和显示图像。
任何建议都将不胜感激。感谢。
答案 0 :(得分:0)
这里有一个很好的样本:
https://code.msdn.microsoft.com/Windows-Imaging-Component-3af3cd49
使用IWICProgressiveLevelControl::SetCurrentLevel
选择扫描后,解码器将正常运行,但仅使用扫描结果,包括您选择的扫描结果。因此,对链中CopyPixels
或任何IWICBitmapSource
组件的任何调用都将在选定的扫描级别接收完全解码的图像。
如示例所示,诀窍在于,如果您不知道完整文件可用,则无法使用IWICProgressiveLevelControl::GetLevelCount
并立即选择最高级别。作为样本的文档说明,
IWICProgressiveLevelControl允许您控制在帧解码中使用哪个渐进级别的细节。它还允许您查询文件中的累进级别总数;但是不建议在JPEG图像上使用此方法,因为在下载整个图像之前不知道总计数,从而无法实现渐进式解码的目的。相反,此示例演示了在WIC返回WINCODEC_ERR_INVALIDPROGRESSIVELEVEL之前迭代请求增加详细级别的建议做法。