浏览器可以渐进式渲染渐进式图像。并且图像只有在被逐步编码的情况下才能被逐步解码。
例如,用“交错”选项保存的GIF或PNG图像,或用“渐进式”选项保存的JPEG图像。
我想在基于MFC的应用程序中渲染渐进式图像,就像浏览器一样。
Windows图像组件提供了IWICProgressiveLevelControl接口对图像进行渐进式解码。
但我找不到任何例子来展示如何使用IWICProgressiveLevelControl同时渐进地流式传输和显示图像。
任何建议都将不胜感激。谢谢。
发布于 2015-06-24 17:48:10
这里有一个很好的示例:
https://code.msdn.microsoft.com/Windows-Imaging-Component-3af3cd49
一旦您使用IWICProgressiveLevelControl::SetCurrentLevel选择了扫描,解码器将正常工作,但只使用您选择的扫描之前的扫描。因此,对CopyPixels或链中的任何IWICBitmapSource组件的任何调用都将在选定的扫描级别接收完全解码的图像。
正如示例中所演示的,诀窍在于,如果您不知道完整文件是否可用,则不能使用IWICProgressiveLevelControl::GetLevelCount并立即选择最大级别。正如示例的文档所述,
IWICProgressiveLevelControl允许您控制要在帧解码上使用的渐进式细节级别。它还允许您查询文件中渐进式级别的总数;但是,不建议对JPEG图像使用此方法,因为在下载整个图像之前,无法知道总计数,这与渐进式解码的目的不符。相反,此示例演示了建议的做法,即迭代地请求递增的详细信息级别,直到WIC返回WINCODEC_ERR_INVALIDPROGRESSIVELEVEL.
https://stackoverflow.com/questions/29202294
复制相似问题