IWICImagingFactory
COM公式ドキュメント
デコーダー、エンコーダー、ピクセルフォーマットコンバーターなど、Windows Imaging Component (WIC) のコンポーネントを作成するためのメソッドを公開します。
メソッド 25
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定されたファイルに基づいて、IWICBitmapDecoder クラスの新しいインスタンスを作成します。
| wzFilename | LPWSTR | in | 作成または開くオブジェクトの名前を指定する、null で終わる文字列へのポインター。 | ||||||
| pguidVendor | GUID* | inoptional | 優先するデコーダーベンダーの GUID。優先するベンダーがない場合は NULL を使用します。 | ||||||
| dwDesiredAccess | GENERIC_ACCESS_RIGHTS | in | オブジェクトへのアクセス。読み取り、書き込み、またはその両方を指定できます。
詳細については、Generic Access Rights を参照してください。 | ||||||
| metadataOptions | WICDecodeOptions | in | デコーダーを作成するときに使用する WICDecodeOptions。 | ||||||
| ppIDecoder | IWICBitmapDecoder** | out | 新しい IWICBitmapDecoder へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定された IStream に基づいて、IWICBitmapDecoder クラスの新しいインスタンスを作成します。
| pIStream | IStream* | in | デコーダーの作成元となるストリーム。 |
| pguidVendor | GUID* | in | 優先するデコーダーベンダーの GUID。優先するベンダーがない場合は NULL を使用します。 |
| metadataOptions | WICDecodeOptions | in | デコーダーを作成するときに使用する WICDecodeOptions。 |
| ppIDecoder | IWICBitmapDecoder** | out | 新しい IWICBitmapDecoder へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたファイルハンドルに基づいて、IWICBitmapDecoder の新しいインスタンスを作成します。
| hFile | UINT_PTR | in | デコーダーの作成元となるファイルハンドル。 |
| pguidVendor | GUID* | in | 優先するデコーダーベンダーの GUID。優先するベンダーがない場合は NULL を使用します。 |
| metadataOptions | WICDecodeOptions | in | デコーダーを作成するときに使用する WICDecodeOptions。 |
| ppIDecoder | IWICBitmapDecoder** | out | 新しい IWICBitmapDecoder へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドを使用してデコーダーを作成した場合、ファイルハンドルはデコーダーの有効期間中、有効なまま維持する必要があります。
指定されたコンポーネントクラス識別子 (CLSID) に対応する IWICComponentInfo クラスの新しいインスタンスを作成します。
| clsidComponent | GUID* | in | 対象のコンポーネントの CLSID。 |
| ppIInfo | IWICComponentInfo** | out | 新しい IWICComponentInfo へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICBitmapDecoder の新しいインスタンスを作成します。
| guidContainerFormat | GUID* | in | 対象のコンテナーフォーマットの GUID。 | ||||||||
| pguidVendor | GUID* | in | 優先するエンコーダーベンダーの GUID。
| ||||||||
| ppIDecoder | IWICBitmapDecoder** | out | 新しい IWICBitmapDecoder へのポインターを受け取るポインター。この IWICBitmapDecoder は、後で Initialize メソッドを使用してストリーム上で初期化する必要があります。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
インストールされている WIC 対応エンコーダーによっては、guidContainerFormat と pguidVendor の両方で他の値も利用できる場合があります。 ここに記載されている値は、オペレーティングシステムがネイティブにサポートするものです。
IWICBitmapEncoder クラスの新しいインスタンスを作成します。
| guidContainerFormat | GUID* | in | 対象のコンテナーフォーマットの GUID。 | ||||||||
| pguidVendor | GUID* | in | 優先するエンコーダーベンダーの GUID。
| ||||||||
| ppIEncoder | IWICBitmapEncoder** | out | 新しい IWICBitmapEncoder へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
インストールされている WIC 対応エンコーダーによっては、guidContainerFormat と pguidVendor の両方で他の値も利用できる場合があります。 ここに記載されている値は、オペレーティングシステムがネイティブにサポートするものです。
IWICPalette クラスの新しいインスタンスを作成します。
| ppIPalette | IWICPalette** | out | 新しい IWICPalette へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICFormatConverter クラスの新しいインスタンスを作成します。
| ppIFormatConverter | IWICFormatConverter** | out | 新しい IWICFormatConverter へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICBitmapScaler の新しいインスタンスを作成します。
| ppIBitmapScaler | IWICBitmapScaler** | out | 新しい IWICBitmapScaler へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICBitmapClipper オブジェクトの新しいインスタンスを作成します。
| ppIBitmapClipper | IWICBitmapClipper** | out | 新しい IWICBitmapClipper へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICBitmapFlipRotator オブジェクトの新しいインスタンスを作成します。
| ppIBitmapFlipRotator | IWICBitmapFlipRotator** | out | 新しい IWICBitmapFlipRotator へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICStream クラスの新しいインスタンスを作成します。
| ppIWICStream | IWICStream** | out | 新しい IWICStream へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICColorContext クラスの新しいインスタンスを作成します。
| ppIWICColorContext | IWICColorContext** | out | 新しい IWICColorContext へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICColorTransform クラスの新しいインスタンスを作成します。
| ppIWICColorTransform | IWICColorTransform** | out | 新しい IWICColorTransform へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICBitmap オブジェクトを作成します。
| uiWidth | DWORD | in | 新しいビットマップの幅。 | ||||||||
| uiHeight | DWORD | in | 新しいビットマップの高さ。 | ||||||||
| pixelFormat | GUID* | in | 新しいビットマップのピクセルフォーマット。 | ||||||||
| option | WICBitmapCreateCacheOption | in | 新しいビットマップのキャッシュ作成オプション。WICBitmapCreateCacheOption 列挙体の値のいずれかを指定できます。
| ||||||||
| ppIBitmap | IWICBitmap** | out | 新しいビットマップへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICBitmapSource から IWICBitmap を作成します。
| pIBitmapSource | IWICBitmapSource* | in | ビットマップの作成元となる IWICBitmapSource。 | ||||||||
| option | WICBitmapCreateCacheOption | in | 新しいビットマップのキャッシュオプション。WICBitmapCreateCacheOption 列挙体の値のいずれかを指定できます。
| ||||||||
| ppIBitmap | IWICBitmap** | out | 新しいビットマップへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IWICBitmapSource の指定した矩形から IWICBitmap を作成します。
| pIBitmapSource | IWICBitmapSource* | in | ビットマップの作成元となる IWICBitmapSource。 |
| x | DWORD | in | 矩形の左上隅の水平座標。 |
| y | DWORD | in | 矩形の左上隅の垂直座標。 |
| width | DWORD | in | 矩形および新しいビットマップの幅。 |
| height | DWORD | in | 矩形および新しいビットマップの高さ。 |
| ppIBitmap | IWICBitmap** | out | 新しいビットマップへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ソースより大きい矩形を指定すると、結果は未定義となります。
このメソッドは、キャッシュオプション WICBitmapCacheOnLoad と同様に、常にソース画像の独立したコピーを作成します。
メモリブロックから IWICBitmap を作成します。
| uiWidth | DWORD | in | 新しいビットマップの幅。 |
| uiHeight | DWORD | in | 新しいビットマップの高さ。 |
| pixelFormat | GUID* | in | 新しいビットマップのピクセルフォーマット。有効なピクセルフォーマットについては、Native Pixel Formats を参照してください。 |
| cbStride | DWORD | in | pbBuffer 内の連続するスキャンライン間のバイト数。 |
| cbBufferSize | DWORD | in | pbBuffer のサイズ。 |
| pbBuffer | BYTE* | in | ビットマップの作成に使用するバッファー。 |
| ppIBitmap | IWICBitmap** | out | 新しいビットマップへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
作成する IWICBitmap のサイズは、pbBuffer 内の画像のサイズ以下である必要があります。
作成先ビットマップのストライドは、指定した幅と高さに関係なく、ソースデータの stride と等しくなります。
pixelFormat パラメーターは、入力データと出力ビットマップの両方のピクセルフォーマットを定義します。
ビットマップハンドルから IWICBitmap を作成します。
| hBitmap | HBITMAP | in | ビットマップの作成元となるビットマップハンドル。 |
| hPalette | HPALETTE | in | ビットマップの作成に使用するパレットハンドル。 |
| options | WICBitmapAlphaChannelOption | in | ビットマップを作成する際のアルファチャンネルオプション。 |
| ppIBitmap | IWICBitmap** | out | 新しいビットマップへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
パレット化されていないビットマップの場合は、hPalette パラメーターに NULL を設定します。
アイコンハンドルから IWICBitmap を作成します。
| hIcon | HICON | in | 新しいビットマップの作成元となるアイコンハンドル。 |
| ppIBitmap | IWICBitmap** | out | 新しいビットマップへのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したコンポーネントタイプの IEnumUnknown オブジェクトを作成します。
| componentTypes | DWORD | in | 列挙する WICComponentType のタイプ。 |
| options | DWORD | in | 指定したコンポーネントタイプの列挙に使用する WICComponentEnumerateOptions。 |
| ppIEnumUnknown | IEnumUnknown** | out | 新しいコンポーネント列挙子へのポインターを受け取るポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
コンポーネントタイプは個別に列挙する必要があります。コンポーネントタイプと WICAllComponents の組み合わせはサポートされていません。
指定された IWICBitmapDecoder に基づいて、高速メタデータエンコーダーの新しいインスタンスを作成します。
| pIDecoder | IWICBitmapDecoder* | in | 高速メタデータエンコーダーの作成元となるデコーダー。 |
| ppIFastEncoder | IWICFastMetadataEncoder** | out | このメソッドが返るとき、新しい IWICFastMetadataEncoder へのポインターが格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows が提供するコーデックは、デコーダーレベルでの高速メタデータエンコードをサポートしておらず、フレームレベルでの高速メタデータエンコードのみをサポートします。フレームから高速メタデータエンコーダーを作成するには、CreateFastMetadataEncoderFromFrameDecode を参照してください。
指定された画像フレームに基づいて、高速メタデータエンコーダーの新しいインスタンスを作成します。
| pIFrameDecoder | IWICBitmapFrameDecode* | in | IWICFastMetadataEncoder の作成元となる IWICBitmapFrameDecode。 |
| ppIFastEncoder | IWICFastMetadataEncoder** | out | このメソッドが返るとき、新しい高速メタデータエンコーダーへのポインターが格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
高速メタデータエンコードでサポートされるメタデータフォーマットの一覧については、WIC Metadata Overview を参照してください。
Examples
次のコードは、高速メタデータエンコードのために CreateFastMetadataEncoderFromFrameDecode メソッドを使用する方法を示しています。
IWICFastMetadataEncoder *pFME = NULL;
IWICMetadataQueryWriter *pFMEQW = NULL;
hr = pFactory->CreateFastMetadataEncoderFromFrameDecode(pFrameDecode, &pFME);
if (SUCCEEDED(hr))
{
hr = pFME->GetMetadataQueryWriter(&pFMEQW);
}
if (SUCCEEDED(hr))
{
// Add additional metadata
PROPVARIANT value;
PropVariantInit(&value);
value.vt = VT_UI2;
value.uiVal = 99;
hr = pFMEQW->SetMetadataByName(L"/app1/ifd/{ushort=18249}", &value);
PropVariantClear(&value);
}
if (SUCCEEDED(hr))
{
hr = pFME->Commit();
}
クエリライターの新しいインスタンスを作成します。
| guidMetadataFormat | GUID* | in | 対象のメタデータフォーマットの GUID。 |
| pguidVendor | GUID* | in | 優先するメタデータライターベンダーの GUID。優先するベンダーがない場合は NULL を使用します。 |
| ppIQueryWriter | IWICMetadataQueryWriter** | out | このメソッドが返るとき、新しい IWICMetadataQueryWriter へのポインターが格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたクエリリーダーに基づいて、クエリライターの新しいインスタンスを作成します。クエリライターには、クエリリーダーのメタデータがあらかじめ設定されます。
| pIQueryReader | IWICMetadataQueryReader* | in | IWICMetadataQueryWriter の作成元となる IWICMetadataQueryReader。 |
| pguidVendor | GUID* | in | 優先するメタデータライターベンダーの GUID。優先するベンダーがない場合は NULL を使用します。 |
| ppIQueryWriter | IWICMetadataQueryWriter** | out | このメソッドが返るとき、新しいメタデータライターへのポインターが格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWICImagingFactory "{EC5EC8A9-C395-4314-9C77-54D7A935FF70}" #usecom global IWICImagingFactory IID_IWICImagingFactory "{CACAF262-9370-4615-A13B-9F5539DA4C0A}" #comfunc global IWICImagingFactory_CreateDecoderFromFilename 3 wstr,var,int,int,sptr #comfunc global IWICImagingFactory_CreateDecoderFromStream 4 sptr,var,int,sptr #comfunc global IWICImagingFactory_CreateDecoderFromFileHandle 5 sptr,var,int,sptr #comfunc global IWICImagingFactory_CreateComponentInfo 6 var,sptr #comfunc global IWICImagingFactory_CreateDecoder 7 var,var,sptr #comfunc global IWICImagingFactory_CreateEncoder 8 var,var,sptr #comfunc global IWICImagingFactory_CreatePalette 9 sptr #comfunc global IWICImagingFactory_CreateFormatConverter 10 sptr #comfunc global IWICImagingFactory_CreateBitmapScaler 11 sptr #comfunc global IWICImagingFactory_CreateBitmapClipper 12 sptr #comfunc global IWICImagingFactory_CreateBitmapFlipRotator 13 sptr #comfunc global IWICImagingFactory_CreateStream 14 sptr #comfunc global IWICImagingFactory_CreateColorContext 15 sptr #comfunc global IWICImagingFactory_CreateColorTransformer 16 sptr #comfunc global IWICImagingFactory_CreateBitmap 17 int,int,var,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromSource 18 sptr,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromSourceRect 19 sptr,int,int,int,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromMemory 20 int,int,var,int,int,var,sptr #comfunc global IWICImagingFactory_CreateBitmapFromHBITMAP 21 sptr,sptr,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromHICON 22 sptr,sptr #comfunc global IWICImagingFactory_CreateComponentEnumerator 23 int,int,sptr #comfunc global IWICImagingFactory_CreateFastMetadataEncoderFromDecoder 24 sptr,sptr #comfunc global IWICImagingFactory_CreateFastMetadataEncoderFromFrameDecode 25 sptr,sptr #comfunc global IWICImagingFactory_CreateQueryWriter 26 var,var,sptr #comfunc global IWICImagingFactory_CreateQueryWriterFromReader 27 sptr,var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWICImagingFactory "{EC5EC8A9-C395-4314-9C77-54D7A935FF70}" #usecom global IWICImagingFactory IID_IWICImagingFactory "{CACAF262-9370-4615-A13B-9F5539DA4C0A}" #comfunc global IWICImagingFactory_CreateDecoderFromFilename 3 wstr,sptr,int,int,sptr #comfunc global IWICImagingFactory_CreateDecoderFromStream 4 sptr,sptr,int,sptr #comfunc global IWICImagingFactory_CreateDecoderFromFileHandle 5 sptr,sptr,int,sptr #comfunc global IWICImagingFactory_CreateComponentInfo 6 sptr,sptr #comfunc global IWICImagingFactory_CreateDecoder 7 sptr,sptr,sptr #comfunc global IWICImagingFactory_CreateEncoder 8 sptr,sptr,sptr #comfunc global IWICImagingFactory_CreatePalette 9 sptr #comfunc global IWICImagingFactory_CreateFormatConverter 10 sptr #comfunc global IWICImagingFactory_CreateBitmapScaler 11 sptr #comfunc global IWICImagingFactory_CreateBitmapClipper 12 sptr #comfunc global IWICImagingFactory_CreateBitmapFlipRotator 13 sptr #comfunc global IWICImagingFactory_CreateStream 14 sptr #comfunc global IWICImagingFactory_CreateColorContext 15 sptr #comfunc global IWICImagingFactory_CreateColorTransformer 16 sptr #comfunc global IWICImagingFactory_CreateBitmap 17 int,int,sptr,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromSource 18 sptr,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromSourceRect 19 sptr,int,int,int,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromMemory 20 int,int,sptr,int,int,sptr,sptr #comfunc global IWICImagingFactory_CreateBitmapFromHBITMAP 21 sptr,sptr,int,sptr #comfunc global IWICImagingFactory_CreateBitmapFromHICON 22 sptr,sptr #comfunc global IWICImagingFactory_CreateComponentEnumerator 23 int,int,sptr #comfunc global IWICImagingFactory_CreateFastMetadataEncoderFromDecoder 24 sptr,sptr #comfunc global IWICImagingFactory_CreateFastMetadataEncoderFromFrameDecode 25 sptr,sptr #comfunc global IWICImagingFactory_CreateQueryWriter 26 sptr,sptr,sptr #comfunc global IWICImagingFactory_CreateQueryWriterFromReader 27 sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。