次の方法で共有


IWICProgressiveLevelControl::SetCurrentLevel メソッド (wincodec.h)

CopyPixels の次の呼び出しで取得するレベルを指定します。

構文

HRESULT SetCurrentLevel(
  [in] UINT nLevel
);

パラメーター

[in] nLevel

型: UINT

次に返すレベルを指定します。 サポートされているレベルの合計数より大きい場合は、エラーが返されます。

戻り値

種類: HRESULT

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

注釈

呼び出しでは、サポートされているすべてのレベルを要求する必要はありません。 呼び出し元が、以前にレベル 0 を要求せずにレベル 1 を要求した場合、 CopyPixels の次の呼び出しによって返されるビットには、両方のレベルが含まれます。

要求されたレベルが無効な場合、返されるエラーは WINCODEC_ERR_INVALIDPROGRESSIVELEVEL

GetCurrentLevel メソッドではなく、プログレッシブ JPEG イメージのプログレッシブ レベルを反復処理するには、このメソッドを使用する必要があります。 JPEG プログレッシブ レベルはイメージによって決定され、固定レベル数はありません。 GetCurrentLevel メソッドを使用すると、アプリケーションは、すべてのプログレッシブ レベルがダウンロードされるまで強制的に待機し、そのレベルを返すことができます。 代わりに、アプリケーションは次のコードを使用して、プログレッシブ JPEG イメージのプログレッシブ レベルを反復処理する必要があります。

IWICProgressiveLevelControl *pProgressive = NULL;

HRESULT hr = (pBitmapFrame->QueryInterface(
   IID_IWICProgressiveLevelControl, 
   (void**) &pProgressive));
                
if (SUCCEEDED(hr))
{
   for (UINT uCurrentLevel = 0; SUCCEEDED(hr); uCurrentLevel++)
   {
      hr = pProgressive->SetCurrentLevel(uCurrentLevel);
      if (WINCODEC_ERR_INVALIDPROGRESSIVELEVEL == hr)
      {
         // No more levels
         break;
      }

      if (SUCCEEDED(hr))
      {
         // Output the current level
         hr = pBitmapFrame->CopyPixels(...);
      }                      
   }
}

if (pProgressive)
{
   pProgressive->Release();
}	

要件

要件
サポートされている最小のクライアント Windows 7、Windows Vista SP2 および Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー wincodec.h
[DLL] Windowscodecs.dll

こちらもご覧ください

IWICProgressiveLevelControl

プログレッシブ デコードの概要