次の方法で共有


IWICBitmapFrameDecode の実装

IWICBitmapFrameDecode

IWICBitmapFrameDecode は、実際のイメージ ビットへのアクセスを提供するフレーム レベルのインターフェイスです。 このインターフェイスは、フレーム レベルのデコード クラスに実装します。 IWICBitmapSource から派生しているため、IWICBitmapFrameDecode の実装には IWICBitmapSource メソッドの実装が含まれます。 IWICBitmapFrameDecode の追加メソッドは、フレーム レベルのサムネイル、イメージの任意の色コンテキスト、およびフレームのメタデータ クエリ リーダーへのアクセスを提供します。

interface IWICBitmapFrameDecode : IWICBitmapSource
{
// Required methods
HRESULT GetThumbnail ( IWICBitmapSource **ppIThumbnail );
HRESULT GetColorContexts ( UINT cCount, 
IWICColorContext **ppIColorContexts, UINT *pcActualCount );
HRESULT GetMetadataQueryReader ( IWICMetadataQueryReader **ppIMetadataQueryReader );

// Methods inherited from IWICBitmapSource
HRESULT GetSize ( UINT *puiWidth, UINT *puiHeight );
HRESULT GetPixelFormat ( WICPixelFormatGUID *pPixelFormat );
HRESULT GetResolution ( double *pDpiX, double *pDpiY );
HRESULT CopyPixels ( const WICRect *prc, 
   UINT cbStride,
   UINT cbBufferSize, 
   BYTE *pbBuffer );
// Optional method
HRESULT CopyPalette ( IWICPalette *pIPalette );
}

GetThumbnail

GetThumbnail は、現在のフレームのサムネイルを返します。 パフォーマンス上の理由から、サムネイルは JPEG 形式でエンコードされるのが最も一般的です。 デコーダーのプレビューと同様に、サムネイル用に独自の JPEG デコーダーを提供する必要も推奨もされません。 代わりに、Windows イメージング コンポーネント (WIC) によって提供される JPEG デコーダーに委任する必要があります。

サムネイルの詳細については、「IWICBitmapFrameEncode の実装の SetThumbnail メソッドを参照してください。

GetColorContexts

GetColorContexts は、 このフレーム内のイメージに関連付けられている有効なカラー コンテキスト (カラー プロファイルとも呼ばれます) を返します。 ほとんどの場合、これは 1 つだけですが、2 つ、またはまれに、より多くのケースが存在する可能性があります。 呼び出し元は 1 つ以上の IWICColorContext オブジェクトを渡し、渡す数を示す cCount パラメーターを設定します。 このメソッドは、イメージに関連付けられているカラー プロファイルの実際のカラー コンテキスト データを IWICColorContext オブジェクトに設定します。 pcActualCount パラメーターを、イメージに関連付けられている実際の色コンテキストの数に設定します。これは、返すことができる数より大きい場合でも可能です。 (呼び出し元によって渡された IWICColorContext オブジェクトの数よりも多くの色コンテキストが使用可能な場合、これは呼び出し元に使用可能な他の 1 つ以上があることを呼び出し元に通知します)。

GetMetadataQueryReader

GetMetadataQueryReader は 、アプリケーションがイメージ フレームからメタデータを取得するために使用できる IWICMetadataQueryReader を返します。 このインターフェイスはメタデータ ハンドラーによって実装され、アプリケーションは特定のメタデータ形式に属する特定のメタデータ プロパティに対してクエリを実行できます。 詳細については、「 IWICMetadataBlockReader の実装」を参照してください。

IWICMetadataQueryReader をインスタンス化するには、IWICComponentFactoryCreateQueryReaderFromBlockReader を呼び出します。

IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;

hr = m_pComponentFactory->CreateQueryReaderFromBlockReader( 
  static_cast<IWICMetadataBlockWriter*>(this),
  &pQueryReader);

GetSize、GetPixelFormat、および GetResolution

GetSizeGetPixelFormatおよび GetResolution は自己説明であり、イメージの要求されたプロパティを返します。

CopyPixels

CopyPixels は、ディスプレイまたはプリンターにレンダリングできるビットマップをメモリに作成するときにアプリケーションが呼び出すメソッドです。 これは、イメージ ビットの実際のデコードを行うメソッドです。 パラメーターは四角形であり、メモリにコピーするソース イメージの対象領域を表します。ストライド。1 つのスキャン行のバイト数を指定します。アプリケーションによって割り当てられたメモリ内のバッファーのサイズ。と、要求されたイメージ ビットをコピーするバッファーへのポインター。 (潜在的なバッファー オーバーランによってセキュリティの脆弱性が発生しないようにするには、 cbBufferSize パラメーターで指定されているのと同じ量のイメージ データのみをバッファーにコピーしてください)。

CopyPalette

CopyPalette メソッドを実装する必要があるのは、インデックス付きピクセル形式のコーデックのみです。 イメージでインデックス付き形式を使用する場合は、このメソッドを使用して、イメージで使用される色のパレットを取得します。 コーデックにインデックス付き形式がない場合は、WINCODEC_ERR_PALETTEUNAVAILABLEを返します。

リファレンス

IWICBitmapSource

IWICBitmapDecoder

IWICBitmapFrameDecode

概念

IWICBitmapSource の実装

IWICMetadataBlockReader の実装

WIC-Enabled コーデックを記述する方法

Windows イメージング コンポーネントの概要