Compartir a través de


función wiasDownSampleBuffer (wiamdef.h)

La función wiasDownSampleBuffer toma un búfer de datos de píxeles alineados con DWORD y lo reduce (genera datos de imagen de resolución inferior) al tamaño y la resolución especificados.

Sintaxis

HRESULT wiasDownSampleBuffer(
            LONG                  lFlags,
  [in, out] WIAS_DOWN_SAMPLE_INFO *pInfo
);

Parámetros

lFlags

Especifica un conjunto de marcas que determinan el comportamiento de esta función. Actualmente, solo se define la marca siguiente.

Bandera Significado
WIAS_GET_DOWNSAMPLED_SIZE_ONLY No copie los datos de muestreo inactivos en el búfer de destino. En su lugar, establezca los siguientes miembros de la estructura WIAS_DOWN_SAMPLE_INFO: ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth.

[in, out] pInfo

Puntero a la estructura WIAS_DOWN_SAMPLE_INFO que contiene toda la información necesaria para la operación de muestreo descendente.

Valor devuelto

Si la función se ejecuta correctamente, devuelve S_OK.

Si se produce un error en la función, devuelve un error COM estándar o uno de los códigos de error WIA.

Observaciones

La función wiasDownSampleBuffer se puede usar de cualquiera de las dos maneras siguientes:

  • El autor de la llamada especifica el ancho y el alto de la ulDownSampledWid th y ulDownSampledHeight miembros de la estructura WIA_DOWN_SAMPLE_INFO.

  • El autor de la llamada establece el de ulDownSampledWidth y ulDownSampledHeight miembros de la estructura de WIA_DOWN_SAMPLE_INFO en cero, lo que indica que la función debe elegir el ancho y el alto de salida.

Para ver qué valores de ancho y alto de salida elige la función, llame a esta función con el parámetro lFlags establecido en WIAS_GET_DOWNSAMPLED_SIZE_ONLY. A cambio, el ulDownSampledWidth y miembros ulDownSampledHeight se establecen en sus nuevos valores. En este caso, no se realiza ningún muestreo descendente.

El autor de la llamada de esta función es necesario para rellenar los siguientes miembros de la estructura WIA_DOWN_SAMPLE_INFO:

  • ulOriginalWidth

  • ulOriginal Height

  • ulBitsPerPixel

  • ulXRes

  • ulYRes

  • pSrcBuffer

La función wiasDownSampleBuffer espera ulBitsPerPixel ser 1, 8 o 24, correspondientes a datos de 1, 8 y 24 bits por píxel. El autor de la llamada también puede especificar el tamaño de los datos de muestreo descendente rellenando los siguientes miembros de estructura WIA_DOWN_SAMPLE_INFO: - ulDownSampledWidthulDownSampledHeight

Si ya se ha asignado el búfer que recibe los datos de muestreo inactivos, el autor de la llamada debe rellenar estos miembros de estructura WIA_DOWN_SAMPLE_INFO:

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer

Si el autor de la llamada establece pDestBuffer en NULL, el servicio WIA asigna el búfer de destino. A partir de esta función, pDestBuffer apunta al búfer de destino. El autor de la llamada es responsable de liberar esta memoria cuando finaliza la operación y lo hace llamando a CoTaskMemFree en el búfer.

Dado que esta función no puede generar líneas de salida parciales, el número de líneas de examen en el búfer de entrada debe ser un entero múltiplo del factor de escalado. Por ejemplo, supongamos que el búfer de entrada contiene una imagen muestreada a 600 ppp, que pretende reducir a una imagen equivalente de 50 ppp. En este caso, se reduce verticalmente la imagen original por un factor de 12 (porque 600 / 50 = 12). Esto significa que la función debe recibir 12 líneas de entrada para cada línea de salida que genera.

Si la imagen original tiene una resolución de Ren ppp, y se va a reducir verticalmente a una imagen con una resolución de R ppp, el factor de reducción vertical es Ren / Rfuera, y el número de líneas del búfer de entrada debe ser un múltiplo de Ren / Rfuera. Si el encabezado del examen alcanza la última banda de la imagen original y hay demasiadas líneas de examen en el búfer de entrada para generar una línea de salida, rellene el búfer de entrada para que contenga el número necesario de líneas de datos. Si no lo hace, se producen resultados imprevisibles e incluso se puede producir un bloqueo del controlador.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de wiamdef.h (incluya Wiamdef.h)
biblioteca de Wiaservc.lib
DLL de Wiaservc.dll

Consulte también

WIAS_DOWN_SAMPLE_INFO