在基于 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 的应用程序中逐步渲染图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mfc 中更改 CImage 对象的背景颜色?

基于MFC和OpenCV的图像处理小软件

基于SocketOpenCV和MFC实现的网络实时视频监控

VC/MFC如何添加启动界面

ContainerContentChanging事件和数据模型更改

基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)