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 函式可用於下列兩種方式之一:
呼叫端藉由設定 ulDownSampledWidth 和 ulDownSampledHeightWIA_DOWN_SAMPLE_INFO 成員,來指定向下取樣的寬度和高度。
呼叫端會將 ulDownSampledWidth 和 ulDownSampledHeightWIA_DOWN_SAMPLE_INFO 結構的成員設為零,表示函式應該選擇輸出寬度和高度。
若要查看函式選擇的輸出寬度和高度值,請使用 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 個輸入行。
如果原始影像的解析度為dpi 中的 R,而且會縮小為解析度為解析度為 Rout dpi 的影像,則縮小比例為/ R中的 R,而輸入緩衝區中的行數應該是/ R中的倍數 R。 如果掃描前端到達原始影像的最後一個波段,而且輸入緩衝區中掃描行太少,無法產生輸出行,請填補輸入緩衝區,使其包含所需的數據行數目。 無法這樣做會導致無法預期的結果,甚至可能會導致驅動程序當機。
要求
| 要求 | 價值 |
|---|---|
| 目標平臺 | 桌面 |
| 標題 | wiamdef.h (包括 Wiamdef.h) |
| 程式庫 | Wiaservc.lib |
| DLL | Wiaservc.dll |