wiasDownSampleBuffer 関数 (wiamdef.h)
wiasDownSampleBuffer 関数は、DWORD に配置されたピクセル データのバッファーを取り込み、指定したサイズと解像度にダウンサンプリング (低解像度の画像データを生成) します。
構文
HRESULT wiasDownSampleBuffer(
LONG lFlags,
[in, out] WIAS_DOWN_SAMPLE_INFO *pInfo
);
パラメーター
lFlags
この関数の動作を決定するフラグのセットを指定します。 現時点では、次のフラグのみが定義されています。
フラグ | 説明 |
---|---|
WIAS_GET_DOWNSAMPLED_SIZE_ONLY | ダウンサンプリングされたデータをコピー先バッファーにコピーしないでください。 代わりに、 WIAS_DOWN_SAMPLE_INFO 構造体の次のメンバーを設定します: ulDownSampledHeight、 ulDownSampleWidth、 ulAlignedHeight、 ulAlignedWidth。 |
[in, out] pInfo
ダウンサンプリング操作に必要なすべての情報を含む WIAS_DOWN_SAMPLE_INFO 構造体へのポインター。
戻り値
成功すると、関数はS_OKを返します。
関数が失敗した場合は、標準の COM エラーまたは WIA エラー コードのいずれかを返します。
注釈
wiasDownSampleBuffer 関数は、次の 2 つの方法のいずれかで使用できます。
呼び出し元は、WIA_DOWN_SAMPLE_INFO構造体の ulDownSampledWidth メンバーと ulDownSampledHeight メンバーを設定することで、ダウンサンプリング (つまり出力) の幅と高さを指定します。
呼び出し元は、WIA_DOWN_SAMPLE_INFO構造体の ulDownSampledWidth メンバーと ulDownSampledHeight メンバーを 0 に設定し、関数が出力の幅と高さを選択する必要があることを示します。
関数が選択する出力の幅と高さの値を確認するには、 lFlags パラメーターを WIAS_GET_DOWNSAMPLED_SIZE_ONLY に設定してこの関数を呼び出します。 返されると、 ulDownSampledWidth メンバーと ulDownSampledHeight メンバーが新しい値に設定されます。 この場合、ダウンサンプリングは実行されません。
この関数の呼び出し元は、 WIA_DOWN_SAMPLE_INFO 構造体の次のメンバーを入力する必要があります。
ulOriginalWidth
ulOriginal Height
ulBitsPerPixel
ulXRes
ulYRes
pSrcBuffer
wiasDownSampleBuffer 関数では、ulBitsPerPixel は 1、8、または 24 であり、ピクセル単位の 1、8 ビット、24 ビットのデータに対応します。 呼び出し元は、 - ulDownSampledWidthulDownSampledHeight というWIA_DOWN_SAMPLE_INFO構造体メンバーを入力することで、ダウンサンプリングされたデータのサイズを指定することもできます。
ダウンサンプリングされたデータを受け取るバッファーが既に割り当てられている場合、呼び出し元は次のWIA_DOWN_SAMPLE_INFO構造体メンバー を 入力する必要があります。
ulDestBufSize
ulSrcBufSize
pDestBuffer
呼び出し元が pDestBuffer を NULL に設定した場合、宛先バッファーは WIA サービスによって割り当てられます。 この関数から返されると、 pDestBuffer は 宛先バッファーを指します。 呼び出し元は、操作が完了したときにこのメモリを解放し、バッファーで CoTaskMemFree を呼び出すことによってこれを行います。
この関数は部分的な出力行を生成できないため、入力バッファー内のスキャン行の数は、スケーリング係数の整数倍数である必要があります。 たとえば、入力バッファーに 600 dpi でサンプリングされたイメージが含まれているとします。これは、同等の 50 dpi イメージにダウンサンプリングする予定です。 この場合、元のイメージを 12 倍にスケールダウンします (600 / 50 = 12 のため)。 これは、関数が生成する出力行ごとに 12 行の入力行を受け取る必要があることを意味します。
元のイメージの解像度が DPI の Rで、解像度が Rout dpi のイメージにスケール ダウンされる場合、スケールダウン係数は Rin/Rout で、入力バッファー内の行数は、/Routの R の倍数である必要があります。 スキャン ヘッドが元のイメージの最後のバンドに達し、入力バッファーにスキャン行が少なすぎて出力行が生成されていない場合は、入力バッファーに必要なデータ行数が含まれるように入力バッファーを埋め込みます。 これを行わないと、予期しない結果が発生し、ドライバーがクラッシュする可能性があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | wiamdef.h (Wiamdef.h を含む) |
Library | Wiaservc.lib |
[DLL] | Wiaservc.dll |