共用方式為


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 函式可用於下列兩種方式之一:

  • 呼叫端藉由設定 ulDownSampledWidthulDownSampledHeightWIA_DOWN_SAMPLE_INFO 成員,來指定向下取樣的寬度和高度。

  • 呼叫端會將 ulDownSampledWidthulDownSampledHeightWIA_DOWN_SAMPLE_INFO 結構的成員設為零,表示函式應該選擇輸出寬度和高度。

若要查看函式選擇的輸出寬度和高度值,請使用 lFlags 參數設定為 WIAS_GET_DOWNSAMPLED_SIZE_ONLY來呼叫此函式。 傳回時,ulDownSampledWidthulDownSampledHeight 成員會設定為其新值。 在此情況下,不會執行降級取樣。

此函式的呼叫端必須填入下列 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 個輸入行。

如果原始影像的解析度為 dpi 中的 R,而且會縮小為解析度為解析度為 Rout dpi 的影像,則縮小比例為 / R中的 R,而輸入緩衝區中的行數應該是 / R中的倍數 R。 如果掃描前端到達原始影像的最後一個波段,而且輸入緩衝區中掃描行太少,無法產生輸出行,請填補輸入緩衝區,使其包含所需的數據行數目。 無法這樣做會導致無法預期的結果,甚至可能會導致驅動程序當機。

要求

要求 價值
目標平臺 桌面
標頭 wiamdef.h (包括 Wiamdef.h)
連結庫 Wiaservc.lib
DLL Wiaservc.dll

另請參閱

WIAS_DOWN_SAMPLE_INFO