1

ブラウザーはプログレッシブ イメージをプログレッシブにレンダリングできます。また、画像がプログレッシブ エンコードされている場合にのみ、画像をプログレッシブ デコードできます。

たとえば、「インターレース」オプションで保存された GIF または PNG 画像、または「プログレッシブ」オプションで保存された JPEG 画像。

ブラウザーと同じように、MFC ベースのアプリケーションでプログレッシブ イメージをレンダリングしたいと考えています。

Windows Imaging Component は、イメージをプログレッシブにデコードするための 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 に答える