Win32 API 日本語リファレンス
ホームGraphics.Imaging › IWICBitmapDecoder

IWICBitmapDecoder

COM
IID9edde9e7-8dee-47ea-99df-e6faf2ed44bf継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

デコーダーを表すメソッドを公開します。

解説(Remarks)

このインターフェイスには、プラットフォームが提供する各標準デコーダーを表す具体的な実装が多数あります。対象には、ビットマップ (BMP)、Portable Network Graphics (PNG)、アイコン (ICO)、Joint Photographic Experts Group (JPEG)、Graphics Interchange Format (GIF)、Tagged Image File Format (TIFF)、Microsoft Windows Digital Photo (WDP) が含まれます。次の表に、各ネイティブデコーダーのクラス識別子 (CLSID) を示します。

CLSID Name CLSID
CLSID_WICBmpDecoder 0x6b462062, 0x7cbf, 0x400d, 0x9f, 0xdb, 0x81, 0x3d, 0xd1, 0xf, 0x27, 0x78
CLSID_WICGifDecoder 0x381dda3c, 0x9ce9, 0x4834, 0xa2, 0x3e, 0x1f, 0x98, 0xf8, 0xfc, 0x52, 0xbe
CLSID_WICHeifDecoder 0xe9a4a80a, 0x44fe, 0x4de4, 0x89, 0x71, 0x71, 0x50, 0xb1, 0x0a, 0x51, 0x99
CLSID_WICIcoDecoder 0xc61bfcdf, 0x2e0f, 0x4aad, 0xa8, 0xd7, 0xe0, 0x6b, 0xaf, 0xeb, 0xcd, 0xfe
CLSID_WICJpegDecoder 0x9456a480, 0xe88b, 0x43ea, 0x9e, 0x73, 0xb, 0x2d, 0x9b, 0x71, 0xb1, 0xca
CLSID_WICPngDecoder 0x389ea17b, 0x5078, 0x4cde, 0xb6, 0xef, 0x25, 0xc1, 0x51, 0x75, 0xc7, 0x51
CLSID_WICTiffDecoder 0xb54e85d9, 0xfe23, 0x499f, 0x8b, 0x88, 0x6a, 0xce, 0xa7, 0x13, 0x75, 0x2b
CLSID_WICWebpDecoder 0x7693e886, 0x51c9, 0x4070, 0x84, 0x19, 0x9f, 0x70, 0X73, 0X8e, 0Xc8, 0Xfa
CLSID_WICWmpDecoder 0xa26cec36, 0x234c, 0x4950, 0xae, 0x16, 0xe3, 0x4a, 0xac, 0xe7, 0x1d, 0x0d

このインターフェイスは、拡張性モデルの一部として、サードパーティ製コーデックのサポートを提供するためにサブクラス化できます。AITCodec Sample CODEC を参照してください。

登録されていない TIFF コンテナー形式として記述されたコーデックは、TIFF イメージとしてデコードされます。クライアントアプリケーションは、フレーム数がゼロかどうかを確認して、コーデックが有効かどうかを判断する必要があります。

CLSID_WICHeifDecoder は、HEIF (High Efficiency Image Format) イメージを処理します。

メソッド 11

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT QueryCapability(IStream* pIStream, DWORD* pdwCapability)

指定したストリームに基づいて、デコーダーの機能を取得します。

pIStreamIStream*inデコーダーの機能を取得する対象のストリーム。
pdwCapabilityDWORD*outデコーダーの WICBitmapDecoderCapabilities

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

カスタムデコーダーの実装では、指定した IStream の現在位置を保存し、指定されたストリームに対して提供できる機能を判断するために必要な情報を読み取ってから、ストリームの位置を元に戻す必要があります。

vtbl 4 HRESULT Initialize(IStream* pIStream, WICDecodeOptions cacheOptions)

指定したストリームでデコーダーを初期化します。

pIStreamIStream*in

初期化に使用するストリーム。

このストリームにはエンコードされたピクセルが含まれており、IWICBitmapFrameDecode インターフェイスの CopyPixels メソッド (GetFrame を参照) が呼び出されるたびにデコードされます。

cacheOptionsWICDecodeOptionsin初期化に使用する WICDecodeOptions

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

vtbl 5 HRESULT GetContainerFormat(GUID* pguidContainerFormat)

イメージのコンテナー形式を取得します。

pguidContainerFormatGUID*outイメージのコンテナー形式 GUID を受け取るポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

vtbl 6 HRESULT GetDecoderInfo(IWICBitmapDecoderInfo** ppIDecoderInfo)

イメージの IWICBitmapDecoderInfo を取得します。

ppIDecoderInfoIWICBitmapDecoderInfo**outIWICBitmapDecoderInfo へのポインターを受け取るポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

vtbl 7 HRESULT CopyPalette(IWICPalette* pIPalette)

デコーダーの IWICPalette をコピーします。

pIPaletteIWICPalette*inデコーダーのグローバルパレットのコピー先となる IWICPaletteCopyPalette を呼び出す前に、CreatePalette を使用してコピー先パレットを作成してください。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

CopyPalette は、グローバルパレット (イメージ内のすべてのフレームに適用されるパレット) が存在する場合はそれを返します。存在しない場合は WINCODEC_ERR_PALETTEUNAVAILABLE を返します。イメージにグローバルパレットがない場合でも、フレームレベルのパレットが存在することがあり、それは IWICBitmapFrameDecode::CopyPalette を使用して取得できます。

vtbl 8 HRESULT GetMetadataQueryReader(IWICMetadataQueryReader** ppIMetadataQueryReader)

デコーダーからメタデータクエリリーダーを取得します。

ppIMetadataQueryReaderIWICMetadataQueryReader**outデコーダーの IWICMetadataQueryReader へのポインターを受け取ります。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

イメージ形式がコンテナーレベルのメタデータをサポートしていない場合、このメソッドは WINCODEC_ERR_UNSUPPORTEDOPERATION を返します。Windows が提供するイメージ形式のうち、コンテナーレベルのメタデータをサポートするのは GIF のみです。代わりに IWICBitmapFrameDecode::GetMetadataQueryReader を使用してください。

vtbl 9 HRESULT GetPreview(IWICBitmapSource** ppIBitmapSource)

サポートされている場合、プレビューイメージを取得します。

ppIBitmapSourceIWICBitmapSource**outサポートされている場合、プレビュービットマップへのポインターを受け取ります。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

すべての形式がプレビューをサポートしているわけではありません。プレビューをサポートするのは、ネイティブの Microsoft Windows Digital Photo (WDP) コーデックのみです。

vtbl 10 HRESULT GetColorContexts(DWORD cCount, IWICColorContext** ppIColorContexts, DWORD* pcActualCount)

イメージの IWICColorContext オブジェクトを取得します。

cCountDWORDin

取得するカラーコンテキストの数。

この値は、ppIColorContexts に使用可能なサイズと等しいか、それより小さくする必要があります。

ppIColorContextsIWICColorContext**inoutIWICColorContext へのポインターを受け取るポインター。
pcActualCountDWORD*outイメージに含まれるカラーコンテキストの数を受け取るポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

vtbl 11 HRESULT GetThumbnail(IWICBitmapSource** ppIThumbnail)

イメージのビットマップサムネイルが存在する場合、それを取得します。

ppIThumbnailIWICBitmapSource**outサムネイルの IWICBitmapSource へのポインターを受け取ります。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

返されるサムネイルは任意のサイズになり得るため、呼び出し元はサムネイルを目的のサイズに拡大縮小する必要があります。Windows が提供するイメージ形式のうち、サムネイルをサポートするのは JPEG、TIFF、JPEG-XR のみです。サムネイルが使用できない場合、このメソッドは WINCODEC_ERR_CODECNOTHUMBNAIL を返します。

vtbl 12 HRESULT GetFrameCount(DWORD* pCount)

イメージ内のフレームの総数を取得します。

pCountDWORD*outイメージ内のフレームの総数を受け取るポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

vtbl 13 HRESULT GetFrame(DWORD index, IWICBitmapFrameDecode** ppIBitmapFrame)

イメージの指定したフレームを取得します。

indexDWORDin取得する対象の特定のフレーム。
ppIBitmapFrameIWICBitmapFrameDecode**outIWICBitmapFrameDecode へのポインターを受け取るポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IWICBitmapDecoder "{9EDDE9E7-8DEE-47EA-99DF-E6FAF2ED44BF}"
#usecom global IWICBitmapDecoder IID_IWICBitmapDecoder "{}"
#comfunc global IWICBitmapDecoder_QueryCapability         3 sptr,var
#comfunc global IWICBitmapDecoder_Initialize              4 sptr,int
#comfunc global IWICBitmapDecoder_GetContainerFormat      5 var
#comfunc global IWICBitmapDecoder_GetDecoderInfo          6 sptr
#comfunc global IWICBitmapDecoder_CopyPalette             7 sptr
#comfunc global IWICBitmapDecoder_GetMetadataQueryReader  8 sptr
#comfunc global IWICBitmapDecoder_GetPreview              9 sptr
#comfunc global IWICBitmapDecoder_GetColorContexts        10 int,sptr,var
#comfunc global IWICBitmapDecoder_GetThumbnail            11 sptr
#comfunc global IWICBitmapDecoder_GetFrameCount           12 var
#comfunc global IWICBitmapDecoder_GetFrame                13 int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。