Compartilhar via


Função wiasDownSampleBuffer (wiamdef.h)

A função wiasDownSampleBuffer usa um buffer de dados de pixel alinhados ao DWORD e os reduz (produz dados de imagem de resolução inferior) para o tamanho e a resolução especificados.

Sintaxe

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

Parâmetros

lFlags

Especifica um conjunto de sinalizadores que determinam o comportamento dessa função. Atualmente, somente o sinalizador a seguir é definido.

Bandeira Significado
WIAS_GET_DOWNSAMPLED_SIZE_ONLY Não copie os dados de downsampled para o buffer de destino. Em vez disso, defina os seguintes membros da estrutura WIAS_DOWN_SAMPLE_INFO: ulDownSampledHeight, ulDownSampleWidth, ulAlignedHeight, ulAlignedWidth.

[in, out] pInfo

Ponteiro para a estrutura WIAS_DOWN_SAMPLE_INFO que contém todas as informações necessárias para a operação de downsampling.

Valor de retorno

Com êxito, a função retorna S_OK.

Se a função falhar, ela retornará um erro COM padrão ou um dos códigos de erro wia .

Observações

A função wiasDownSampleBuffer pode ser usada de duas maneiras a seguir:

  • O chamador especifica a largura e a altura de downsampled (ou seja, saída) definindo os membros ulDownSampledWidth e ulDownSampledHeight membros da estrutura WIA_DOWN_SAMPLE_INFO.

  • O chamador define os ulDownSampledWidth e ulDownSampledHeight membros da estrutura WIA_DOWN_SAMPLE_INFO como zero, indicando que a função deve escolher a largura e a altura da saída.

Para ver quais valores de largura e altura de saída a função escolhe, chame essa função com o parâmetro lFlags definido como WIAS_GET_DOWNSAMPLED_SIZE_ONLY. No retorno, os membros ulDownSampledWidth e ulDownSampledHeight são definidos como seus novos valores. Nenhum downsampling é executado nesse caso.

O chamador dessa função é necessário para preencher os seguintes membros da estrutura de WIA_DOWN_SAMPLE_INFO:

  • ulOriginalWidth

  • ulOriginal Height

  • ulBitsPerPixel

  • ulXRes

  • ulYRes

  • pSrcBuffer

A função wiasDownSampleBuffer espera que ulBitsPerPixel seja 1, 8 ou 24, correspondente a dados de 1, 8 e 24 bits por pixel. O chamador também pode especificar o tamanho dos dados reduzidos preenchendo os seguintes membros da estrutura WIA_DOWN_SAMPLE_INFO: - ulDownSampledWidthulDownSampledHeight

Se o buffer que recebe os dados de downsampled já tiver sido alocado, o chamador deverá preencher estes membros da estrutura WIA_DOWN_SAMPLE_INFO:

  • ulDestBufSize

  • ulSrcBufSize

  • pDestBuffer

Se o chamador definir pDestBuffer para NULL, o buffer de destino será alocado pelo serviço WIA. Ao retornar dessa função, pDestBuffer aponta para o buffer de destino. O chamador é responsável por liberar essa memória quando a operação é concluída e faz isso chamando CoTaskMemFree no buffer.

Como essa função não é capaz de produzir linhas de saída parciais, o número de linhas de verificação no buffer de entrada deve ser um múltiplo inteiro do fator de dimensionamento. Por exemplo, suponha que o buffer de entrada contenha uma imagem amostrada em 600 dpi, que você pretende reduzir para uma imagem de 50 dpi equivalente. Nesse caso, você está reduzindo verticalmente a imagem original por um fator de 12 (porque 600 / 50 = 12). Isso significa que a função deve receber 12 linhas de entrada para cada linha de saída que produz.

Se a imagem original tiver uma resolução de Rem dpi, e deve ser reduzido para uma imagem com uma resolução de R dpi, o fator de redução é Rem/Re o número de linhas no buffer de entrada deve ser um múltiplo de Rem/R. Se a cabeça de verificação atingir a última faixa da imagem original e houver poucas linhas de verificação no buffer de entrada para produzir uma linha de saída, coloque o buffer de entrada para que ele contenha o número necessário de linhas de dados. A falha ao fazer isso causa resultados imprevisíveis e pode até resultar em um acidente de motorista.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho wiamdef.h (inclua Wiamdef.h)
biblioteca Wiaservc.lib
de DLL Wiaservc.dll

Consulte também

WIAS_DOWN_SAMPLE_INFO