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 函数可通过以下两种方式之一使用:

  • 调用方通过设置 ulDownSampledWidthulDownSampledHeight 结构 WIA_DOWN_SAMPLE_INFO 的成员来指定向下采样(即输出)宽度和高度。

  • 调用方将 ulDownSampledWidthulDownSampledHeightWIA_DOWN_SAMPLE_INFO 结构的成员设置为零,指示函数应选择输出宽度和高度。

若要查看函数选择的输出宽度和高度值,请使用设置为 WIAS_GET_DOWNSAMPLED_SIZE_ONLYlFlags 参数调用此函数。 返回时,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 个输入行。

如果原始图像的 R分辨率为 dpi,并且要缩小到分辨率为 Rout dpi 的图像,则缩小因子为/R中的 R,输入缓冲区中的行数应为/R中的 R倍数。 如果扫描头到达原始图像的最后一个带段,并且输入缓冲区中扫描行太少,无法生成输出行,请填充输入缓冲区,使其包含所需的数据行数。 未能这样做会导致不可预知的结果,甚至可能导致驱动程序崩溃。

要求

要求 价值
目标平台 桌面
标头 wiamdef.h (包括 Wiamdef.h)
Wiaservc.lib
DLL Wiaservc.dll

另请参阅

WIAS_DOWN_SAMPLE_INFO