次の方法で共有


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 構造体の次のメンバーを設定します: ulDownSampledHeightulDownSampleWidthulAlignedHeightulAlignedWidth

[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

呼び出し元が pDestBufferNULL に設定した場合、宛先バッファーは 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

こちらもご覧ください

WIAS_DOWN_SAMPLE_INFO