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 構造体の次のメンバーを設定します。ulDownSampledHeightulDownSampleWidthulAlignedHeight、ulAlignedWidthを します。

[in, out] pInfo

ダウンサンプリング操作に必要なすべての情報を含む WIAS_DOWN_SAMPLE_INFO 構造体へのポインター。

戻り値

成功すると、関数はS_OKを返します。

関数が失敗した場合は、標準の COM エラーまたは WIA エラー コードのいずれかが返されます。

備考

wiasDownSampleBuffer 関数は、次の 2 つの方法のいずれかで使用できます。

  • 呼び出し元は、ulDownSampledWidth を設定し、WIA_DOWN_SAMPLE_INFO 構造体の ulDownSampledHeight メンバー して、ダウンサンプリング (つまり出力) の幅と高さを指定します。

  • 呼び出し元は、ulDownSampledWidthulDownSampledHeightWIA_DOWN_SAMPLE_INFO 構造体のメンバーを 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 ビットのデータに対応します。 呼び出し元は、次の WIA_DOWN_SAMPLE_INFO 構造体メンバーを入力してダウンサンプリングされたデータのサイズを指定することもできます。 - ulDownSampledWidthulDownSampledHeight

ダウンサンプリングされたデータを受け取るバッファーが既に割り当てられている場合、呼び出し元は次の WIA_DOWN_SAMPLE_INFO 構造体メンバーを入力する必要があります。

  • ulDestBufSize を する

  • ulSrcBufSize を する

  • pDestBuffer を する

呼び出し元が pDestBuffer NULL設定した場合、宛先バッファーは WIA サービスによって割り当てられます。 この関数から戻った時点で、pDestBuffer は宛先バッファーを指します。 呼び出し元は、操作が完了したときにこのメモリを解放し、バッファーで CoTaskMemFree 呼び出すことによってこれを行います。

この関数は部分的な出力行を生成できないため、入力バッファー内のスキャン行の数は、スケーリング 係数の整数倍数である必要があります。 たとえば、入力バッファーに 600 dpi でサンプリングされたイメージが含まれているとします。これは、同等の 50 dpi の画像にダウンサンプリングする予定です。 この場合は、元のイメージを 12 の係数でスケールダウンします (600 / 50 = 12 であるため)。 これは、関数が生成する出力行ごとに 12 行の入力行を受け取る必要があることを意味します。

元のイメージの解像度が R dpi で、解像度が R dpi のイメージにスケール ダウンされる場合、スケールダウン係数は/Rで Rになり、入力バッファー内の行数は、/Rで Rの倍数である必要があります。 スキャン ヘッドが元のイメージの最後のバンドに達し、入力バッファーにスキャン行が少なすぎて出力行が生成されていない場合は、必要なデータ行数が含まれるように入力バッファーを埋め込みます。 これを行わないと、予期しない結果が発生し、ドライバーがクラッシュする可能性もあります。

必要条件

要件 価値
ターゲット プラットフォーム の デスクトップ
ヘッダー wiamdef.h (Wiamdef.h を含む)
ライブラリ Wiaservc.lib
DLL Wiaservc.dll

関連項目

WIAS_DOWN_SAMPLE_INFO